Сейчас на форуме: (+6 невидимых) |
eXeL@B —› Протекторы —› Проблема при ручной распаковке "Visual Zip Password Recovery Processor" |
Посл.ответ | Сообщение |
|
Создано: 10 июля 2012 00:11 · Личное сообщение · #1 Доброго всем времени суток Возникла проблема при ручной распаковке "Visual Zip Password Recovery Processor". Исследуемый файл "vzr4fin.exe" PEID с плугином Ver15A выдал мне: "Version: ASProtect 1.35 build 04.25 or 06.26 Release [Extract]" ASPrINF вообще "[Visual Zip Password Recovery Processor], [6.2], [1.35 build$ве'"яsv440vшҐе4уx9эјЁ1<јюы№юР " При отсутствии др. анализаторов решил использовать, как пособие тутор "Распаковка ASProtect 1.35 по vnekrilov" В принципе вначале всё шло по написанному, но при восстановлении таблицы INIT скрипт "Recovery_INIT_2_My" отработал только после закрытия программы, а при восстановлении IAT столкнулся с тем, что протектор сначала вычисляет адрес нужной API, копирует команды до ближайшей инструкции JNZ или CALL в другую секцию, выполняет начальные инструкции и потом прыгает на адрес инструкции JNZ или CALL данной API. Из-за этого ставить BP на API бесполезно. Я доработал скрипт "Recovery_CALL_as_JMP_or_CALL .osc" так, чтобы всавлять адрес API когда протектор его вычисляет. После работы скрипта пришлось вручную разделить нулями API внутри IAT и сделать переадрессацию в коде, чтобы ImpREC не ругался. ImpREC нормально восстановил IAT позже я проверял выборочно большое количество API с запакованной прогой, всё сходилось. Далее восстановил ресурсы, сделал перенаправления в VM, создал в файле Dumped_.exe секцию 178000 размером в 3000 байт, и перенёс туда код VM. Dumped_.exe нормально загрузился, встал на OEP, но при запуске несколько раз выдал сообщение, что не может прочитать память по адресам секций аспра. Кода там не много, я перенёс его в конец секции VM, сделал в VM перенаправление на эти куски кода. Выскочило исключение 0EEDFADE. То ли у меня Олька не так настроена, но в Log я не вижу после какого адреса происходит исключение. Пришлось помучиться довольно долго, трассировать оба EXE пока не нашёл. Скрипт "Recovery_PUSH_CALL_VOEP_My.osc" восстановил инстр. VM по адресу BA0566 (на моей машине) как прыжок на BA0ABF (578566 и 578ABF в Dumped_.exe), но выяснилось: если после выполнения 0057855F CMP DWORD PTR DS:[EBX+14C],0 флаг Z равен 1 прыжок происходит на BA0ABF, а при Z=0 на BA13F1. Я сделал перенаправление с адреса 578566 в конец секции VM , а там дописал: 0057AE60 CMP DWORD PTR DS:[EBX+14C],0 0057AE67 JNZ 005793F1 ; Dumped_.005793F1 0057AE6D JMP 00578ABF ; Dumped_.00578ABF То же самое и по адресу BA1638 (на моей машине), если после выполнения 00578ABF MOV EAX,DWORD PTR DS:[EBX+24] 00578AC2 TEST EAX,EAX флаг Z равен 0 прыжок происходит на BA14C9, а при Z=1 на BA1540. Я сделал перенаправление с адреса 579638 в конец секции VM на 57AE74, а там примочку: 0057AE74 85C0 TEST EAX,EAX 0057AE76 ^0F85 4DE6FFFF JNZ 005794C9 ; Dumped_.005794C9 0057AE7C ^E9 BFE6FFFF JMP 00579540 ; Dumped_.00579540 Но исключение 0EEDFADE продолжает выскакивать после одного из вызывов Call 00E20000 по адресу BA0566 в упакованной проге (578566 в Dumped_.exe). Протрассировав обе проги дошёл до места: 77D3D2EC E8 D8C1FFFF CALL 77D394C9 ; user32.77D394C9 а там следующее: 77D394C9 8B4424 04 MOV EAX,DWORD PTR SS:[ESP+4] 77D394CD CD 2B INT 2B 77D394CF C2 0400 RETN 4 На этот момент данные в обоих программах одинаковые, в окне Windows OllyDbg строки тоже одинаковые, но после выполнения инструкции INT 2B упакованная прога тормозится на Bp BA0566, при этом в окне Windows OllyDbg добавляются ещё 5 строк, а Dumped_.exe выкидывает сюда: 00360048 C2 0400 RETN 4 а далее на 7C90EBAC ntdll.RtlRaiseException Я не помню, где скачал прогу Visual Zip Password Recovery Processor, на всякий случай я приложил установочный файл vzr.exe, сделанный дамп Dumped_.exe, скрипты которые я использовал в архив Problema.zip. Ссылка на архив: http://files.mail.ru/WDUCCE Архив весит 1,7 М. Если у кого-то найдётся время просмотреть, что у меня получилось, то я бы хотел услышать совет, я что я сделал неправильно, и как довести Dumped_.exe до работоспособности. |
|
Создано: 10 июля 2012 00:51 · Поправил: schokk_m4ks1k · Личное сообщение · #2 |
|
Создано: 10 июля 2012 01:28 · Личное сообщение · #3 |
|
Создано: 10 июля 2012 14:20 · Личное сообщение · #4 |
|
Создано: 11 июля 2012 08:54 · Личное сообщение · #5 |
|
Создано: 11 июля 2012 20:01 · Личное сообщение · #6 |
|
Создано: 11 июля 2012 20:22 · Поправил: inffo · Личное сообщение · #7 NikolayD он же написал где дамп: >> Я не помню, где скачал прогу Visual Zip Password Recovery Processor, на всякий случай я приложил установочный файл >>vzr.exe, сделанный дамп Dumped_.exe, скрипты которые я использовал в архив Problema.zip. Ссылка на архив: >>http://files.mail.ru/WDUCCE add: если надоест распаковывать вот |
|
Создано: 13 июля 2012 13:43 · Личное сообщение · #8 |
|
Создано: 15 июля 2012 12:00 · Личное сообщение · #9 inffo, спасибо, вообще круто - код VM без мусора. И секции все наместе. Это сделано распаковщиком? NikolayD пишет: вообще Камаз распаковывает нормально этот файл. А у тебя импорт неправильно восстановлен + ещё памяти придётся лепить. По сравнению с дампом от inffo точно есть разница в некоторых API. Вероятно ImpRec ntdll воспринял неверно. Может в этом у меня и кроется проблема. И я в импорте когда делал вручную указал адрес RaiseException вместо 49EFAC Не знаю почему на другой машине при запуске дампа вылетает "не возможно прочитать память по адресу BA11AD", я проверил в дампе нет такой константы. Поищу ошибки. А что такое Камаз? |
|
Создано: 16 июля 2012 07:15 · Личное сообщение · #10 |
|
Создано: 16 июля 2012 20:10 · Личное сообщение · #11 |
|
Создано: 16 июля 2012 23:56 · Личное сообщение · #12 |
eXeL@B —› Протекторы —› Проблема при ручной распаковке "Visual Zip Password Recovery Processor" |