![]() |
eXeL@B —› Вопросы новичков —› Решил осилить сам. Помогите плз. |
. 1 . 2 . >> |
Посл.ответ | Сообщение |
|
Создано: 21 апреля 2012 22:28 · Личное сообщение · #1 Оставил запрос на взлом, в соответствующей ветке: http://exelab.ru/f/action=vthread&forum=2&topic=19272&page=28#23 Ну а потому как в прошлом сисадмин, в настоящем .net девелопер, решил осилить. К тому же водится что "бывших" не бывает ![]() Итак защита зашита в компилятор. Активация происходит путем запуска компилятора с ключами: mandroid.exe --activate --name "username" --phone "" --email "useremail" --company "" --code "1234-12345" после чего происходит обмен данными с сервером активации. в результате которого, похоже, должен скачать файл лицензии: WSOCS32: TransmitFile. Но вот куда копать дальше...? Обмен данными с сервером активации: http://pastebin.com/Y9Z4mUZE Сам компилятор (10Мб): (Pass: cracklab): http://files.mail.ru/FWS7U3 Если у кого то появится спортивный интерес, с удовольствием разделю дискуссию спасибо ![]() |
|
Создано: 22 апреля 2012 00:17 · Личное сообщение · #2 Пример файла лицензии есть? Если есть - берешь отладчик и смотришь что оно оттуда читает и как интерпретирует. Если нет - дизасм + отладчик и опять же смотришь можно ли пропатчить проверку / создать свой файл лицензии. Возможно, что компилер урезанный и нужный функционал просто не присутсвует в пакете. ----- старый пень ![]() |
|
Создано: 22 апреля 2012 10:03 · Личное сообщение · #3 Пример файла лицензии был. Но так сложилось, что канул с переустановкой винды. Опять же наличие файла лицензии - лишь предположение. Но смысл понял. Проверка активации компилятора проверяется путем запуска его с параметром "-activated", и ожиданием кода завершения процесса. Если 0, то активирован. Пойду ковырять. ЗЫ. Да и сам компилятор полностью полноценен. Весь функционал в нем. В этом сомнений нет. ![]() |
|
Создано: 22 апреля 2012 19:06 · Личное сообщение · #4 тупо ковыряться в десяти мегабайтном exe'шнике, для новичка абсолютно бесполезно.. Так можно пару недель провести )) Определился с входными данными. При запуске компилятора с ключем -activated , тот возвращает код завершения 98 при отсутствии активации и 0 если уже активировано. Прогнал этот процесс через sysinternal procmon.exe. В списке событий фигурирует файл monoandroid.licx. Так же очень интересен стектрейс при обращении к этому (отсутствующему само собой) файлу: http://pastebin.com/ZscqJB4f А именно этот момент: Code:
Как понимать модуль <unknown> ? ![]() |
|
Создано: 22 апреля 2012 21:17 · Личное сообщение · #5 strelok_aka_vc С некоторыми програмами можно возиться месяцами. То что возвращает компилятор дает только минимум информации. Можно попробовать брякнуться на ExitProcess в отладчике и двигаться по стектрейсу вверх, пока не найдешь где формируется нужный код ошибки. Возможно, рядом идет проверка. Скорей всего, увидишь что-то такое if (!IsFileExists("monoandroid.licx")) return 98; // STATUS_ERROR_NOLICFILE; Приведенный стектрейс - видимо проверка на существование файла с заданным именем. Модуль unknown, возможно, динамический код (декриптованный, распакованный и т.д.) ----- старый пень ![]() |
|
Создано: 22 апреля 2012 23:20 · Личное сообщение · #6 |
|
Создано: 23 апреля 2012 10:53 · Личное сообщение · #7 Archer пишет: Тем более, что на этой строчке листинг и остановился. Но позвольте, на этом листинг не закончился! Я давал ссылку на пастебин, там полный стектрейс процесса. Если лениво заглядывать туда, вот он: Code:
Кстати в тему как правильно читать в стеке адреса? К примеру: > mandroid.exe + 0x1a6ec5, 0x5a6ec5 По сути видно что смещение mandroid.exe = 400000. И адрес 0x5a6ec5 это точка возврата из функции. Я правильно рассуждаю? Так же вопрос про модуль unknown. Если брякнуть на "39","kernel32.dll","BaseThreadInitThunk, и заглянуть в дамп по адресу: "31","<unknown>","0x46610fc","0x46610fc","" то реально увидеть код модуля unkbown ? ЗЫ. Спасибо большое за комменты. Стимулируют! ) ![]() |
|
Создано: 23 апреля 2012 11:18 · Личное сообщение · #8 |
|
Создано: 23 апреля 2012 20:37 · Поправил: strelok_aka_vc · Личное сообщение · #9 охохо.. достал licx файл. теперь, похоже проверка на активацию выполняется успешно. но вот компилится далеко не как надо. при запуске приложения на девайсе вылетают заветные буковки: Code:
![]() |
|
Создано: 23 апреля 2012 21:17 · Личное сообщение · #10 |
|
Создано: 23 апреля 2012 22:30 · Личное сообщение · #11 |
|
Создано: 23 апреля 2012 22:48 · Личное сообщение · #12 |
|
Создано: 24 апреля 2012 11:56 · Личное сообщение · #13 r_e Конечно не исключено, но маловероятно. Активация проходит онлайн и без закачки другого ПО. Ну в смысле я видел как проходит активация. Это секундное дело. К тому же проверка защиты зашивается в .so бинарник и проверяет производится запуск под эмулятором или нет. Кстати о птичках. Чем можно дизасемблировать бинарник под linux? В частности под процессор armeabi (ARM) ? Гугл рулит, но может у кого есть конкретное направление куда маршировать ? ![]() |
|
Создано: 24 апреля 2012 12:06 · Личное сообщение · #14 |
|
Создано: 24 апреля 2012 12:20 · Поправил: strelok_aka_vc · Личное сообщение · #15 Dart Sergius пишет: IDA Уже два дня думаю об этом )) Но с учетом того что в крекинг я с головой посвящен только лишь неделю, пока стараюсь выжать максимум из олли. Да, кстати, вести с полей. Наткнулся на защиту от дебаггинга. Сама проверка активации через запуск процесса (без дебага): "mandroid -activated" возвращает код 0, но при запуске того же самого в олли, без бряков и с разными плагинами - дебаг хайдерами, выдает код 99... Все возможные плагины по хайду дебага еще не перебрал, посему прошу посоветовать конуретные варианты.. Потому как подобных плагинов тьма. Спасибо! ![]() |
|
Создано: 24 апреля 2012 14:40 · Личное сообщение · #16 |
|
Создано: 25 апреля 2012 23:01 · Поправил: strelok_aka_vc · Личное сообщение · #17 Вести с полей. Прошелся дебагом на предмет модуля "unknown", фигурирующим в стек трейсе procmon. В процессе работы создается поток, который именуется как main с адресным пространством дампа 04240000:04340FFE (mandroid.exe адресуется как 00401000:005C4FFC) в котором постоянно генерируется код. И откуда в последствии вызываются функции чтения критических данных (файла лицензий к примеру). Я так понимаю это runtime упаковщик.. Как работать с такого рода защитой? ![]() |
|
Создано: 26 апреля 2012 00:35 · Личное сообщение · #18 |
|
Создано: 17 июня 2012 16:26 · Поправил: Estx · Личное сообщение · #19 I have had a little experience here with MonoDroid. Here are the steps I've taken to crack mandroid.exe (with IDA): 1. Start mandroid.exe process and suspend the process after sub_4013F7 is called. (I labelled this sub: decompress_allocate_res). 2. Dumped mandroid-win.exe to disk. 0x005c5000 has the pointer. Size is 0x93AC00 (version 4.2.2 monodroid). 3. Patched Mandroid-win.exe > - > Activation > Check(bool) to return false (the return from this determines "args.EvaluationVersion) using .NET Reflector and Reflixil. 4. Compressed mandroid-win.exe using ZLib (Ionic.Zlib) with compression level as default. 5. Injected patched and compressed mandroid-win into mandroid.exe (offset: 0x268320, padded to length: 0x3DAA9F). 6. Patched mandroid.exe at offset 8A8 from 74 to 7D (7D 36 = jge, jump if not less than). This works - see next post. I've also tried generating licx files by reversing the decryption algo they use in their mandroid-win executable to near success, how-ever private rsa encryption using their certificate provided still needs a password, so cracking mandroid.exe will be faster than writing an application to brute-force passwords until the certificate provides the verification on data needed. Anyone else got any thoughts? ![]() C# method for CreateApkFile from mandroid-win.exe: Code:
PS Sorry for english, I don't know russian. ![]() |
|
Создано: 17 июня 2012 16:59 · Личное сообщение · #20 |
|
Создано: 17 июня 2012 21:52 · Личное сообщение · #21 |
|
Создано: 17 июня 2012 22:52 · Личное сообщение · #22 minDark It's already explained: Estx пишет: 1. Start mandroid.exe process and suspend the process after sub_4013F7 is called. (I labelled this sub: decompress_allocate_res). 2. Dumped mandroid-win.exe to disk. 0x005c5000 has the pointer. Size is 0x93AC00 (version 4.2.2 monodroid). 3. Patched Mandroid-win.exe > - > Activation > Check(bool) to return false (the return from this determines "args.EvaluationVersion) using .NET Reflector and Reflixil. 4. Compressed mandroid-win.exe using ZLib (Ionic.Zlib) with compression level as default. 5. Injected patched and compressed mandroid-win into mandroid.exe (offset: 0x268320, padded to length: 0x3DAA9F). 6. Patched mandroid.exe at offset 8A8 from 74 to 7D (7D 36 = jge, jump if not less than). What do you need else? ----- SaNX ![]() |
|
Создано: 17 июня 2012 23:59 · Личное сообщение · #23 |
|
Создано: 18 июня 2012 03:07 · Личное сообщение · #24 Here you go: http://multi-up.com/720358. Readme included. Enjoy~! ![]() ![]() |
|
Создано: 18 июня 2012 08:28 · Поправил: SaNX · Личное сообщение · #25 Estx Tryed to crack it with your 6 steps. It's was easy and taked 15 minutes ![]() ![]() ----- SaNX ![]() |
|
Создано: 18 июня 2012 10:10 · Личное сообщение · #26 |
|
Создано: 18 июня 2012 11:33 · Личное сообщение · #27 You're welcome. I took a lot of time reverse engineering it (around 8 hours) so I figured I would share my work. ![]() As for the ZLib packer, SaNX, I didn't search around at all! Referenced: C:\Program Files (x86)\MSBuild\Novell\Ionic.Zip.dll in a C# application and wrote a small application to compress the mandroid-win.exe. So it was an all in-house crack. ;) Anyway, enjoy. ![]() ![]() |
|
Создано: 22 июня 2012 08:56 · Личное сообщение · #28 |
|
Создано: 22 июня 2012 14:00 · Личное сообщение · #29 Hi zaaz112az, A tutorial is a bit out of my league. I'd only be showing you what I did, not how to get there (which is what a tutorial is). My advice: If you want to crack .NET software, learn C# and get Reflector and Reflexil. If you want to crack native (asm/delphi/c/c++) software, learn ASM and get IDA. A LOT of the skills I've picked up are from programming in C/C++ (ASM)/C#. Understanding how software works is the best way to understand how to reverse that software. Good luck. ![]() |
|
Создано: 06 марта 2013 16:01 · Личное сообщение · #30 |
. 1 . 2 . >> |
![]() |
eXeL@B —› Вопросы новичков —› Решил осилить сам. Помогите плз. |