hoster Опубликовано 22 мая, 2020 Поделиться Опубликовано 22 мая, 2020 Привет, не знал куда написать топик в браузерные игры или в ММО, потому что она работает как с браузера так и клиент есть у нее. Игра назвается Фрагория Flash MMORPG, есть swf файл. я его разобрал и изучал, но названия файлов и методов зашифрованыhttps://prnt.sc/sliz7e Еще и в ActionScript 3 нужно было разбираться. Изучал передачу пакетов https://prnt.sc/slizrs и насколько понял вот пример: "FRTP. - заголовок 18.0 - 18 длина команды IGCP - системный код команды а именно IG - скажем так системный код по лутам (то что выпало из животного), а CP - забрать лут. 1188 - 3734488" Далее не знаю что и как. Пробовал CE использовать чтоб понять что и как у них там изменяется, но понял что у них всё динамически работает, если я отслеживаю деньги, они исчезают потом, всё исчезает. Я изучал пакеты, шарился в коде, но не знаю каким образом мне дойти до того чего я хочу. А я хочу если это возможно: попробовать изменить значения параметров (деньги, сила, количество вещей), написать ботов или внедрить длл-ку, или что там еще можно) Знаю джаву, асм - PIC контроллры программировал. Попрошу не стебатся, а направить в правильною русло для изучения, а то много времени трачу, на то что может оказаться под ногами с вашей помощью. Спасибо Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 22 мая, 2020 Поделиться Опубликовано 22 мая, 2020 Я думаю, значения параметров вряд ли получится изменить, так как игра, скорее всего, эти данные хранит на серваке, а вот написать бота, который будет что-то делать - вполне возможно. Можно посмотреть по поводу анализа пакетов во время события. Но ты, похоже, это и так уже делал, раз у тебя есть информация по коду команды. Можешь попробовать сам сделать отправку такого пакета, но для этого тебе нужно будет внедриться в пространство игры. Один из наших участников для флеш игр написал инструмент, который позволяет находить сущности и все такое. Поищи по форуму тему FlashPlayerHack. Ссылка на комментарий Поделиться на другие сайты Поделиться
hoster Опубликовано 22 мая, 2020 Автор Поделиться Опубликовано 22 мая, 2020 Только что, Xipho сказал: Я думаю, значения параметров вряд ли получится изменить, так как игра, скорее всего, эти данные хранит на серваке, а вот написать бота, который будет что-то делать - вполне возможно. Можно посмотреть по поводу анализа пакетов во время события. Но ты, похоже, это и так уже делал, раз у тебя есть информация по коду команды. Можешь попробовать сам сделать отправку такого пакета, но для этого тебе нужно будет внедриться в пространство игры. Один из наших участников для флеш игр написал инструмент, который позволяет находить сущности и все такое. Поищи по форуму тему FlashPlayerHack. Спасибо за наводку, нашел, кстати в воскресенье залили, а я не увидел), отпишу если нужна будет помощь Ссылка на комментарий Поделиться на другие сайты Поделиться
hoster Опубликовано 22 мая, 2020 Автор Поделиться Опубликовано 22 мая, 2020 Всё что выдала там программа: Спойлер 1754 {Font} - {flash.text:Font} {FontAsset} - {mx.core:FontAsset} {CodecsEmbeder_FONT_CINZEL_BOLD} - {Embedings:CodecsEmbeder_FONT_CINZEL_BOLD} {CodecsEmbeder_FONT_TINOS_REGULAR} - {Embedings:CodecsEmbeder_FONT_TINOS_REGULAR} {CodecsEmbeder_FONT_TINOS_BOLD_ITALIC} - {Embedings:CodecsEmbeder_FONT_TINOS_BOLD_ITALIC} {CodecsEmbeder_FONT_TINOS_BOLD} - {Embedings:CodecsEmbeder_FONT_TINOS_BOLD} {CodecsEmbeder_FONT_CINZEL_REGULAR} - {Embedings:CodecsEmbeder_FONT_CINZEL_REGULAR} {CodecsEmbeder_FONT_TINOS_ITALIC} - {Embedings:CodecsEmbeder_FONT_TINOS_ITALIC} {Vector.<Number>$} - {__AS3__.vec:Vector$double} {Vector.<uint>$} - {__AS3__.vec:Vector$uint} {Vector.<int>$} - {__AS3__.vec:Vector$int} {Vector.<*>$} - {__AS3__.vec:Vector$object} {String$} - {String} {Number} - {Number} {int} - {int} {uint} - {uint} {Array$} - {Array} {FragoriaClass} - {FragoriaClass} {String} - {String} {Function} - {Function} {MethodClosure} - {builtin.as$0:MethodClosure} {Namespace} - {Namespace} {QName} - {QName} {ApplicationDomain$} - {flash.system:ApplicationDomain} {x8S4g2g7} - {Fragoria.L6c2n8u4:x8S4g2g7} {Function$} - {Function} {Error} - {Error} {DefinitionError} - {DefinitionError} {EvalError} - {EvalError} {RangeError} - {RangeError} {ReferenceError} - {ReferenceError} {SecurityError} - {SecurityError} {SyntaxError} - {SyntaxError} {TypeError} - {TypeError} {URIError} - {URIError} {VerifyError} - {VerifyError} {UninitializedError} - {UninitializedError} {ArgumentError} - {ArgumentError} {IOError} - {flash.errors:IOError} {EOFError} - {flash.errors:EOFError} {MemoryError} - {flash.errors:MemoryError} {IllegalOperationError} - {flash.errors:IllegalOperationError} {EventDispatcher$} - {flash.events:EventDispatcher} {Loader$} - {flash.display:Loader} {Number$} - {Number} {Array} - {Array} {P0n6s8e4$} - {Fragoria.h4T5E8N5:P0n6s8e4} {Vector} - {__AS3__.vec:Vector} {Vector.<*>} - {__AS3__.vec:Vector$object} {Vector.<int>} - {__AS3__.vec:Vector$int} {Vector.<uint>} - {__AS3__.vec:Vector$uint} {Vector.<Number>} - {__AS3__.vec:Vector$double} {XML} - {XML} {XMLList} - {XMLList} {Error$} - {Error} {s8u4k5A0} - {[error]} {ByteArray$} - {flash.utils:ByteArray} {Font$} - {flash.text:Font} {UninitializedError$} - {UninitializedError} {ArgumentError$} - {ArgumentError} {IOError$} - {flash.errors:IOError} {EOFError$} - {flash.errors:EOFError} {MemoryError$} - {flash.errors:MemoryError} {IllegalOperationError$} - {flash.errors:IllegalOperationError} {CodecsEmbeder_FONT_TINOS_ITALIC$} - {Embedings:CodecsEmbeder_FONT_TINOS_ITALIC} {CodecsEmbeder_FONT_CINZEL_REGULAR$} - {Embedings:CodecsEmbeder_FONT_CINZEL_REGULAR} {CodecsEmbeder_FONT_TINOS_BOLD$} - {Embedings:CodecsEmbeder_FONT_TINOS_BOLD} {FocusDirection$} - {flash.display:FocusDirection} {DisplayObject$} - {flash.display:DisplayObject} {InteractiveObject$} - {flash.display:InteractiveObject} {DisplayObjectContainer$} - {flash.display:DisplayObjectContainer} {Stage$} - {flash.display:Stage} {Sprite$} - {flash.display:Sprite} {MovieClip$} - {flash.display:MovieClip} {Rectangle$} - {flash.geom:Rectangle} {FocusDirection} - {flash.display:FocusDirection} {V5d7e4P1$} - {V5d7e4P1} {DisplayObjectContainer} - {flash.display:DisplayObjectContainer} {Sprite} - {flash.display:Sprite} {EventDispatcher} - {flash.events:EventDispatcher} {ApplicationDomain} - {flash.system:ApplicationDomain} {DisplayObject} - {flash.display:DisplayObject} {InteractiveObject} - {flash.display:InteractiveObject} {Stage} - {flash.display:Stage} {MovieClip} - {flash.display:MovieClip} {Rectangle} - {flash.geom:Rectangle} {CodecsEmbeder_FONT_TINOS_BOLD_ITALIC$} - {Embedings:CodecsEmbeder_FONT_TINOS_BOLD_ITALIC} {CodecsEmbeder_FONT_TINOS_REGULAR$} - {Embedings:CodecsEmbeder_FONT_TINOS_REGULAR} {CodecsEmbeder_codecsAsset$} - {Embedings:CodecsEmbeder_codecsAsset} {ByteArrayAsset$} - {mx.core:ByteArrayAsset} {IDataOutput2$} - {[error]} {IDataInput2$} - {[error]} {CompressionAlgorithm$} - {flash.utils:CompressionAlgorithm} {CodecsEmbeder_FONT_CINZEL_BOLD$} - {Embedings:CodecsEmbeder_FONT_CINZEL_BOLD} {FontAsset$} - {mx.core:FontAsset} {ExternalInterface$} - {flash.external:ExternalInterface} {A5d8q1V1} - {Fragoria.h4T5E8N5:A5d8q1V1} {b1W6L7o6} - {Fragoria:b1W6L7o6} {R5y1P0U3} - {Fragoria.K7f1k1Q7:R5y1P0U3} {ExternalInterface} - {flash.external:ExternalInterface} {o6h7A0o6} - {Fragoria.h4T5E8N5:o6h7A0o6} {S7i6M3y3} - {Fragoria:S7i6M3y3} {v8w1l1F3} - {Fragoria.W1J7o2I3:v8w1l1F3} {v8w1l1F3$} - {Fragoria.W1J7o2I3:v8w1l1F3} {Security$} - {flash.system:Security} {P7i1y5y6$} - {V7U3f8X2.W3I5Q3F6:P7i1y5y6} {CompressionAlgorithm} - {flash.utils:CompressionAlgorithm} {Security} - {flash.system:Security} {Capabilities} - {flash.system:Capabilities} {P0n6s8e4} - {Fragoria.h4T5E8N5:P0n6s8e4} {FragoriaClass$} - {FragoriaClass} {a2L6r3A2} - {V7U3f8X2.W3I5Q3F6.g4w0h7u1:a2L6r3A2} {a2L6r3A2$} - {V7U3f8X2.W3I5Q3F6.g4w0h7u1:a2L6r3A2} {G3c2i5O8} - {V7U3f8X2.W3I5Q3F6.g4w0h7u1:G3c2i5O8} {G3c2i5O8$} - {V7U3f8X2.W3I5Q3F6.g4w0h7u1:G3c2i5O8} {b7J7r2M5} - {V7U3f8X2.W3I5Q3F6.g4w0h7u1:b7J7r2M5} {b7J7r2M5$} - {V7U3f8X2.W3I5Q3F6.g4w0h7u1:b7J7r2M5} {U2B4S1U6} - {V7U3f8X2.W3I5Q3F6.g4w0h7u1.v6W8G7g4:U2B4S1U6} {U2B4S1U6$} - {V7U3f8X2.W3I5Q3F6.g4w0h7u1.v6W8G7g4:U2B4S1U6} {ByteArray} - {flash.utils:ByteArray} {ByteArrayAsset} - {mx.core:ByteArrayAsset} {CodecsEmbeder_codecsAsset} - {Embedings:CodecsEmbeder_codecsAsset} {u1A5e1c2$} - {Fragoria.L6c2n8u4:u1A5e1c2} {x8S4g2g7$} - {Fragoria.L6c2n8u4:x8S4g2g7} {s8u4k5A0$} - {[error]} {LoaderInfo$} - {flash.display:LoaderInfo} {o3G0D7P4} - {V7U3f8X2.W3I5Q3F6.g4w0h7u1:o3G0D7P4} {A5d8q1V1$} - {Fragoria.h4T5E8N5:A5d8q1V1} {o3G0D7P4$} - {V7U3f8X2.W3I5Q3F6.g4w0h7u1:o3G0D7P4} {o6h7A0o6$} - {Fragoria.h4T5E8N5:o6h7A0o6} {b1W6L7o6$} - {Fragoria:b1W6L7o6} {u1A5e1c2} - {Fragoria.L6c2n8u4:u1A5e1c2} {LoaderInfo} - {flash.display:LoaderInfo} {V5d7e4P1} - {V5d7e4P1} {Loader} - {flash.display:Loader} {P7i1y5y6} - {V7U3f8X2.W3I5Q3F6:P7i1y5y6} {Capabilities$} - {flash.system:Capabilities} {XML$} - {XML} {Class} - {Class} {Class$} - {Class} {MethodClosure$} - {builtin.as$0:MethodClosure} {Namespace$} - {Namespace} {Boolean} - {Boolean} {Boolean$} - {Boolean} {int$} - {int} {uint$} - {uint} {Vector$} - {__AS3__.vec:Vector} {XMLList$} - {XMLList} {QName$} - {QName} {DefinitionError$} - {DefinitionError} {EvalError$} - {EvalError} {RangeError$} - {RangeError} {ReferenceError$} - {ReferenceError} {SecurityError$} - {SecurityError} {SyntaxError$} - {SyntaxError} {TypeError$} - {TypeError} {URIError$} - {URIError} {VerifyError$} - {VerifyError} {Object$} - {Object} {S7i6M3y3$} - {Fragoria:S7i6M3y3} {R5y1P0U3$} - {Fragoria.K7f1k1Q7:R5y1P0U3} Черный экран и только классы, ну классы я так понял и сам нашел и вместимое в них изучал, но ты писал что 41 минуту назад, Xipho сказал: Можешь попробовать сам сделать отправку такого пакета, но для этого тебе нужно будет внедриться в пространство игры. можешь направить? Куда идти? Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 22 мая, 2020 Поделиться Опубликовано 22 мая, 2020 27 минут назад, hoster сказал: можешь направить? Куда идти? Тебе нужно найти функцию отправки пакета, и попробовать самостоятельно ее вызвать. Разумеется, отреверсив ее параметры. С флеш игрой это может быть непросто, я ковырял флеш очень давно, и сейчас уже не вспомню, как конкретно выходить на байткод, который выполняется. Ссылка на комментарий Поделиться на другие сайты Поделиться
hoster Опубликовано 22 мая, 2020 Автор Поделиться Опубликовано 22 мая, 2020 8 минут назад, Xipho сказал: Тебе нужно найти функцию отправки пакета, и попробовать самостоятельно ее вызвать. Разумеется, отреверсив ее параметры. С флеш игрой это может быть непросто, я ковырял флеш очень давно, и сейчас уже не вспомню, как конкретно выходить на байткод, который выполняется. Насколько я понимаю, функцию отправки пакетов я нашел но только в исходнике, а когда она запущена я не знаю как это найти, CE показывает везде почти ?? в областях памяти, если что то пытаюсь изменить крашиттся. Может тут есть те кто не забыл как реверсить флеш? Ссылка на комментарий Поделиться на другие сайты Поделиться
hoster Опубликовано 22 мая, 2020 Автор Поделиться Опубликовано 22 мая, 2020 (изменено) Я так и не могу понять, как мне от имени моей игры отправить пакеты, облазил забугор форум топовый по взлому игр, ничего не нашел там только о том как взламывать single player игры где расковыривают .swf файл и изменяют значение, а это фигня и кому они нужны) а вот ММО на flash вот что интересно. Только где инфу найти не могу понять... Изменено 22 мая, 2020 пользователем hoster Ссылка на комментарий Поделиться на другие сайты Поделиться
hoster Опубликовано 23 мая, 2020 Автор Поделиться Опубликовано 23 мая, 2020 https://prnt.sc/sm6qh2 Походу здесь стоит, хорошая защита или мне кажется? Я не могу отследить память и понять что происходит там. Скажите это защита? WPE не видит этот процесс вообще, может вместе с .exe есть библиотеки которые защищают все? Ссылка на комментарий Поделиться на другие сайты Поделиться
Hack Опубликовано 23 мая, 2020 Поделиться Опубликовано 23 мая, 2020 WPE PRO не работает с 64bit процессами. Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 23 мая, 2020 Поделиться Опубликовано 23 мая, 2020 @hoster, ты говорил, что у этой игры есть обычный клиент. Он тоже использует Flash? Ссылка на комментарий Поделиться на другие сайты Поделиться
hoster Опубликовано 23 мая, 2020 Автор Поделиться Опубликовано 23 мая, 2020 13 минут назад, Hack сказал: WPE PRO не работает с 64bit процессами. Могу скачать х32 на х64 она заработает? 1 минуту назад, Xipho сказал: @hoster, ты говорил, что у этой игры есть обычный клиент. Он тоже использует Flash? https://prnt.sc/sm7amr Вот распакованная игра так выглядит Ссылка на комментарий Поделиться на другие сайты Поделиться
Hack Опубликовано 23 мая, 2020 Поделиться Опубликовано 23 мая, 2020 2 минуты назад, hoster сказал: Могу скачать х32 на х64 она заработает? Думаю нет, так как он потребует установленный в системе флэш 32bit. Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 23 мая, 2020 Поделиться Опубликовано 23 мая, 2020 чот какой-то коктейль невнятный. Все исследования из первого поста ты в браузерном клиенте проводил, или же в декстопном? Ссылка на комментарий Поделиться на другие сайты Поделиться
hoster Опубликовано 23 мая, 2020 Автор Поделиться Опубликовано 23 мая, 2020 1 минуту назад, Xipho сказал: чот какой-то коктейль невнятный. Все исследования из первого поста ты в браузерном клиенте проводил, или же в декстопном? Пакеты изучал через клиент. Ссылка на комментарий Поделиться на другие сайты Поделиться
hoster Опубликовано 23 мая, 2020 Автор Поделиться Опубликовано 23 мая, 2020 Ну вот насколько я понял. Мне нужно создать прокси сервер, через него будут идти на клиент пакеты, потом пакеты которые в ответку будут идти на сервер, идут через прокси, а я их там модифицирую или подсовываю свои покеты которые хочу, но теперь стоит задача как это сделать? Кто то может направить? А то уже не знаю, что делать Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 24 мая, 2020 Поделиться Опубликовано 24 мая, 2020 21 час назад, hoster сказал: Мне нужно создать прокси сервер Для начала, тебе нужно понять, как ходят запросы на сервер - по http(s) протоколу, или же используют какую-то свою систему обмена. И от этого уже отталкиваться. Если http(s), там более-менее несложно прокси реализовать (https://m.habr.com/ru/post/213397/ - ссылочка для размышлений). Если же обмен идет по TCP (то есть, гоняются бинарные данные или строки напрямую через сокет) - тут уже сложнее. Помимо сокет сервера тебе придется писать еще перехватчик пакетов. Ну или использовать какое-то дополнительное ПО, которое умеет такое делать. Ссылка на комментарий Поделиться на другие сайты Поделиться
hoster Опубликовано 24 мая, 2020 Автор Поделиться Опубликовано 24 мая, 2020 4 минуты назад, Xipho сказал: Для начала, тебе нужно понять, как ходят запросы на сервер - по http(s) протоколу, или же используют какую-то свою систему обмена. И от этого уже отталкиваться. Если http(s), там более-менее несложно прокси реализовать (https://m.habr.com/ru/post/213397/ - ссылочка для размышлений). Если же обмен идет по TCP (то есть, гоняются бинарные данные или строки напрямую через сокет) - тут уже сложнее. Помимо сокет сервера тебе придется писать еще перехватчик пакетов. Ну или использовать какое-то дополнительное ПО, которое умеет такое делать. с http(s) я и сам бы не парился) там общение через socket пакеты TCP Ссылка на комментарий Поделиться на другие сайты Поделиться
roma912 Опубликовано 24 мая, 2020 Поделиться Опубликовано 24 мая, 2020 Такое только перехватом можно отследить Хук Send и recv ф-ий в сокете Ну и конечно же нужно найти функции шифрования трафика Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 24 мая, 2020 Поделиться Опубликовано 24 мая, 2020 40 минут назад, roma912 сказал: Хук Send и recv ф-ий в сокете Это очень сурово, особенно, если пакет уходит за несколько фреймов. Но да, с этого надо начинать, и разматывать до функции, где пакет уже собран и расшифрован. Ссылка на комментарий Поделиться на другие сайты Поделиться
hoster Опубликовано 24 мая, 2020 Автор Поделиться Опубликовано 24 мая, 2020 (изменено) Пакет на сервер: 465254502e31382e300d0a0d0a494743500a313935320a3631373135323901 FRTP.18.0 IGCP 1952 6171529 Пакет на клиент : 465254502e31382e300d0a0d0a494743500a313935320a3631373135323901 FRTP.18.0 IGCP 1952 6171529 Такой же наверное отклик или проверка... На клиент: 465254502e31332e300d0a0d0a303243520a320a323631313801 FRTP.13.0 02CR 2 26118 На сервер тут уже написано tcp payload 46 52 54 50 2e 31 30 2e 30 0d 0040 0a 0d 0a 41 43 43 50 0a 31 39 38 32 01 FRTP.10.0 ACCP 1982https://prnt.sc/smxmo2 "FRTP." + Длинна битов (или команды) + ".0\r\n\r\n" первая часть след строки IG - открыть лут например CP забрать из лута и закрыть его а потом еще какие то данные. но с этим не разобрался, может идентификаторы вещей происходящих... _loc1_ инициализация и есть шифрование команды, потом идёт отправка через клас которые наследует Socket и EventDispatcher методом writeByte(param..) Изменено 24 мая, 2020 пользователем hoster Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 24 мая, 2020 Поделиться Опубликовано 24 мая, 2020 3 минуты назад, hoster сказал: потом идёт отправка через клас которые наследует Socket и EventDispatcher методом writeByte(param..) Ну так вот тебе надо подготовить свой пакет, положить его туда, где лежит param, и вызвать этот самый writeByte. Ссылка на комментарий Поделиться на другие сайты Поделиться
hoster Опубликовано 24 мая, 2020 Автор Поделиться Опубликовано 24 мая, 2020 (изменено) 13 минут назад, Xipho сказал: Ну так вот тебе надо подготовить свой пакет, положить его туда, где лежит param, и вызвать этот самый writeByte. ? это классно, только как? CE не берёт, x64dbg то же не берёт ее Изменено 24 мая, 2020 пользователем hoster Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 24 мая, 2020 Поделиться Опубликовано 24 мая, 2020 11 минут назад, hoster сказал: это классно, только как? CE не берёт, x64dbg то же не берёт ее Ну, как вариант, отреверсить с помощью ida, выяснить, куда класть адрес параметра, и найти адрес начала функции отправки байтов. Потом из внешнего приложения сформировать буфер через WriteProcessMemory с нужными данными, а затем сделать CreateRemoteThread, или же сделать то же самое, но с помощью инжекта длл-ки. Ссылка на комментарий Поделиться на другие сайты Поделиться
hoster Опубликовано 24 мая, 2020 Автор Поделиться Опубликовано 24 мая, 2020 19 минут назад, Xipho сказал: Ну, как вариант, отреверсить с помощью ida, выяснить, куда класть адрес параметра, и найти адрес начала функции отправки байтов. Потом из внешнего приложения сформировать буфер через WriteProcessMemory с нужными данными, а затем сделать CreateRemoteThread, или же сделать то же самое, но с помощью инжекта длл-ки. Idу тоже пробовал, там всё ???? только в начале программы есть инфа какая то... Можешь глянуть? Ссылка на комментарий Поделиться на другие сайты Поделиться
roma912 Опубликовано 24 мая, 2020 Поделиться Опубликовано 24 мая, 2020 (изменено) Ну смотри. На скриншоте есть даже пост запрос Я бы начал с него. Посмотреть вообще насколько часто игра ими общается А посмотреть очень просто любым сниффером Изменено 24 мая, 2020 пользователем roma912 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения