Сейчас на форуме: igorcauret, Rio (+6 невидимых) |
![]() |
eXeL@B —› Вопросы новичков —› Не могу распаковать ASProtect |
Посл.ответ | Сообщение |
|
Создано: 02 мая 2015 12:53 · Личное сообщение · #1 Приветствую. Разбираю программу Govorilka_cp.exe (http://www.vector-ski.ru/vecs/govorilka/Govorilka_cp.zip). Судя по выводу DiE 0.94 и PEiD 0.95, приложение защищено ASPack 2.1. Поискав в интернете инструкции по распаковке, насткнулся вот на такую -- https://tuts4you.com/download.php?view.266. Проделал следующее: - Загрузил подопытного в OllyDbg и остановился перед выполнением инструкции PUSHAD - Нажал F7, нашёл в Memory Dump'е адрес, на который в текущий момент указывал регистр ESP, и поставил на первые два байта хардварный бряк на доступ - Нажал F9 и оказался после выполнения инструкции POPAD. Добежал до ближайшего return'а, выполнил его и оказался (по крайней мере, предположительно) на OEP (0x0045A210) - Выбрал пункт меню плагина OllyDump под назанием "Dump debugged process", снял галочку с check box'а "Rebuild Import" и нажал на кнопку "Dump". В поле "Entry Point" был указан адрес из регистра EIP -- 0x0045A210 - start address (0x400000) = 0x5A210 - Открыл Import REConstructor v1.7f, выбрал отлаживаемый в OllyDbg процесс, ввёл адрес 0x5A210 в поле "OEP", нажал "IAT AutoSearch" и увидел MessageBox, сообщающий о том, что был найден адрес, который может быть оригинальной IAT (если он неправильный, то предлагалось попробовать RVA == 0005C000 и size == 00002000) - Нажал на кнопку "Get Imports" и увидел вот такую картину: ![]() Current imports: 0 (decimal:0) valid module(s) 2 (decimal:2) imported function(s). (added: +2 (decimal:+2)) (2 (decimal:2) unresolved pointer(s)) (added: +2 (decimal:+2)) IAT read successfully. В указанной мной статье о подобной ситуации не говорилось ни слова (в случае автора статьи все импорты были валидны), так что я решил, что данная ситуация не является нормальной. В связи с этим я решил попробовать указать другой RVA и size, как мне и предлагал Import REConstructor. Однако с ними дела обстоят ещё хуже: Current imports: 0 (decimal:0) valid module(s) 3EF (decimal:1007) imported function(s). (added: +3ED (decimal:+1005)) (3EF (decimal:1007) unresolved pointer(s)) (added: +3ED (decimal:+1005)) Скажите, пожалуйста, что я делаю не так? Может, неправильно найден OEP? Или всё нормально, и мне надо восстанавливать IAT вручную? Если так, то не могли бы вы, пожалуйста, скинуть ссылку на какой-нибудь туториал по данной теме? Заранее благодарю за возможные ответы. ![]() |
|
Создано: 02 мая 2015 13:07 · Личное сообщение · #2 |
|
Создано: 02 мая 2015 13:19 · Личное сообщение · #3 |
|
Создано: 02 мая 2015 13:25 · Личное сообщение · #4 vovanre пишет: Советую юзать --> Scylla<--. На виндах выше семёрки пашет лучше Спасибо, попробовал. Мой результат: ![]() OEP совпадает с вашей, VA и size нет. Более того, есть ошибки, как видно на скриншоте. Не подскажете, в чём может быть дело? Добавлено спустя 1 минуту tihiy_grom пишет: А насчёт импорта - надо самому глазами в окне дампа посмотреть границы IAT А как гаратированно с точностью до байта увидеть границы IAT по одному лишь окну Memory Dump'а, не поделитесь секретом (ни разу этим не занимался)? ![]() |
|
Создано: 02 мая 2015 13:27 · Поправил: vovanre · Личное сообщение · #5 |
|
Создано: 02 мая 2015 13:29 · Личное сообщение · #6 |
|
Создано: 02 мая 2015 13:31 · Личное сообщение · #7 |
|
Создано: 02 мая 2015 13:34 · Личное сообщение · #8 vovanre пишет: Ну тогда выставите все параметры как у меня на скрине (у вас размер и начало iat неверные) Попробовал -- результат тот же самый: ![]() Впрочем, в любом случае это было бы странно. Вы ведь тоже "IAT Autosearch" использовали, верно? Добавлено спустя 8 минут В общем, решил просто удалить невалидный импорт (Delete tree node) -- вроде работает. Это вообще нормально? ![]() |
|
Создано: 02 мая 2015 13:43 · Личное сообщение · #9 b0r3d0m ну так нажми на плюс где ошибка и посмотри что не так. походу косяк с какой-то апи, из-за 8-ой винды? неа, не нормально, если не знаешь что удалил. ----- [nice coder and reverser] ![]() |
|
Создано: 02 мая 2015 13:44 · Личное сообщение · #10 b0r3d0m пишет: А как гаратированно с точностью до байта увидеть границы IAT по одному лишь окну Memory Dump'а, не поделитесь секретом (ни разу этим не занимался)? как-то так 1 - http://gyazo.com/6f24c340a963db0e31b575c71051058c 2 - http://gyazo.com/1e7f091d70a10b4dc3a59354e2d7e0c1 соответственно в imprec вбиваем RVA == 5F168 и Size == 66C и получаем что-то типа такого 3 - http://gyazo.com/1edb47740621b8ed29c2a577a113126d (выделенные функции - те что у вас сцилла распознала с ошибками) ![]() |
|
Создано: 02 мая 2015 13:46 · Личное сообщение · #11 |
|
Создано: 02 мая 2015 13:54 · Личное сообщение · #12 b0r3d0m нет это mpr и version ----- [nice coder and reverser] ![]() |
|
Создано: 02 мая 2015 13:59 · Личное сообщение · #13 |
|
Создано: 10 мая 2015 19:11 · Личное сообщение · #14 |
|
Создано: 10 мая 2015 19:32 · Личное сообщение · #15 |
|
Создано: 10 мая 2015 20:48 · Поправил: dosprog · Личное сообщение · #16 vovanre пишет: http://m.habrahabr.ru/post/257591/ Молодец Нормальная статья. Только вот непонятно, зачем вычислять смещение от текущей позиции, когда можно сделать проще: Code:
Кстати, программа прекрасно автораспаковывается QU'npack'oм. Правда, под ХР ![]() |
|
Создано: 10 мая 2015 21:46 · Поправил: vovanre · Личное сообщение · #17 |
|
Создано: 10 мая 2015 21:51 · Поправил: dosprog · Личное сообщение · #18 vovanre пишет: Или руками в три действия на win7 x64 Ну, дамп в олли-дебаггере это тоже считай не руками. Руками это когда тупо снимался дамп со всего адресного пространства программы, а потом до очманения редактировался, пока не начнёт запускаться как положено.. vovanre пишет: И полстатьи объяснять, что это делает? )) Зато когда объяснил - понятно и ленивому ![]() |
|
Создано: 10 мая 2015 21:52 · Поправил: reversecode · Личное сообщение · #19 |
|
Создано: 10 мая 2015 21:59 · Поправил: vovanre · Личное сообщение · #20 dosprog пишет: Ну, дамп в олли-дебаггере это тоже считай не руками. Я ажно опечалился ![]() dosprog пишет: а потом до очманения редактировался, пока не начнёт запускаться как положено.. У меня такое было только с запакованным jarником , классы вытащить легко. А всякие картинки пришлось по всей памяти ловить. ![]() |
|
Создано: 10 мая 2015 22:01 · Поправил: dosprog · Личное сообщение · #21 |
|
Создано: 10 мая 2015 22:05 · Личное сообщение · #22 reversecode пишет: вот все бы так хоть по какой нибудь статье написали, глядишь интересные люди на форум придут Я на полном серьёзе думал написать маленькую серию о обфускации и деобфускации байт кода java , даже с примерами и со своим маленьким обфускатором, но блин, зачем?! Ради плюсиков? Ради всеобщего блага Да и в конце концов, дополнительных стабильных 200$ в месяц я лишаться не хочу, когда 'заказчик' сможет сам раз в месяц свой билд обфусцировать смысл ему мне платить? ![]() |
|
Создано: 10 мая 2015 22:07 · Личное сообщение · #23 напиши другую статью, не ради плюсиков а ради популяризации форума ![]() |
|
Создано: 10 мая 2015 22:26 · Личное сообщение · #24 vovanre пишет: Молодец Спасибо dosprog пишет: Только вот непонятно, зачем вычислять смещение от текущей позиции, когда можно сделать проще А как будет работать твой код, если база у программы изменится? Или если адрес функции поменяется? Хотелось же написать универсальный код, который будет работать на любой системе ![]() |
|
Создано: 10 мая 2015 22:28 · Поправил: dosprog · Личное сообщение · #25 b0r3d0m пишет: А как будет работать твой код, если база у программы изменится? Или если адрес функции поменяется? Хотелось же написать универсальный код, который будет работать на любой системе А так же и будет, как сейчас работает. Релокейшены всё равно аспаком были отрезаны при упаковке. Code:
b0r3d0m пишет: .. Или если адрес функции поменяется? -- Так импорт же настраивается при запуске, какие проблемы? - Ну настроится в соответствии Code:
На "трамплине", кстати, точно такая же конструкция была с <jmp>'ом. ![]() |
|
Создано: 10 мая 2015 23:00 · Личное сообщение · #26 |
|
Создано: 13 мая 2015 23:31 · Личное сообщение · #27 Govorilka_cp unpacked OEP RVA Code:
Import RVA Code:
![]() ----- EnJoy! ![]() |
|
Создано: 14 мая 2015 10:51 · Личное сообщение · #28 |
|
Создано: 14 мая 2015 11:01 · Поправил: dosprog · Личное сообщение · #29 |
|
Создано: 14 мая 2015 11:14 · Личное сообщение · #30 |
![]() |
eXeL@B —› Вопросы новичков —› Не могу распаковать ASProtect |
Эта тема закрыта. Ответы больше не принимаются. |