Сейчас на форуме: (+6 невидимых)

 eXeL@B —› Протекторы —› Проблема при ручной распаковке "Visual Zip Password Recovery Processor"
Посл.ответ Сообщение

Ранг: 3.7 (гость)
Активность: 0=0
Статус: Участник

Создано: 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 до работоспособности.



Ранг: 31.0 (посетитель), 70thx
Активность: 0.140
Статус: Участник

Создано: 10 июля 2012 00:51 · Поправил: schokk_m4ks1k
· Личное сообщение · #2

ссылку на исследуемый файл можно?
сори уже увидел
разжованых статей по распаковке ASProtect в нете пруд пруди) например статьи vnekrilov! пропиши в гугле unpacking ASProtect 2.xx тебе море вариантов найдет)
Кстати версия ASProtect 2.xx



Ранг: 189.9 (ветеран), 334thx
Активность: 0.30
Статус: Участник

Создано: 10 июля 2012 01:28
· Личное сообщение · #3

Много написано читать не стал ))) Ты забыл прикрутить к дампу:

Code:
  1. 00409FC8                 $- E9 33609D00    JMP 00DE0000




Ранг: 3.7 (гость)
Активность: 0=0
Статус: Участник

Создано: 10 июля 2012 14:20
· Личное сообщение · #4

Спасибо NikolayD, я уже уловил. Проверю вечерком, может есть и др. подобные вызовы в др. секции.



Ранг: 3.7 (гость)
Активность: 0=0
Статус: Участник

Создано: 11 июля 2012 08:54
· Личное сообщение · #5

Кроме указанного выше нашёл ещё только один:
409ED8 JMP 00DD0000
Прикрутил их в конец секции code.
Это позволило продвинуться ещё на 2 вызова по адресу 578566 и снова то же 0EEDFADE после
77D394CD CD 2B INT 2B



Ранг: 189.9 (ветеран), 334thx
Активность: 0.30
Статус: Участник

Создано: 11 июля 2012 20:01
· Личное сообщение · #6

Правленный дамп где? Судя по адресу ты где-то в системной библиотеке лазаешь.




Ранг: 57.7 (постоянный), 49thx
Активность: 0.070
Статус: Участник

Создано: 11 июля 2012 20:22 · Поправил: inffo
· Личное сообщение · #7

NikolayD он же написал где дамп:


>> Я не помню, где скачал прогу Visual Zip Password Recovery Processor, на всякий случай я приложил установочный файл
>>vzr.exe, сделанный дамп Dumped_.exe, скрипты которые я использовал в архив Problema.zip. Ссылка на архив:

>>http://files.mail.ru/WDUCCE

add: если надоест распаковывать вот --> правленый dump <-- пасс: Inffo



Ранг: 189.9 (ветеран), 334thx
Активность: 0.30
Статус: Участник

Создано: 13 июля 2012 13:43
· Личное сообщение · #8

inffo, a в третьем посте адреса откуда? ))) Правленный это к которому он память прикрутил, мне лень xD

Forester, вообще Камаз распаковывает нормально этот файл. А у тебя импорт неправильно восстановлен + ещё памяти придётся лепить.



Ранг: 3.7 (гость)
Активность: 0=0
Статус: Участник

Создано: 15 июля 2012 12:00
· Личное сообщение · #9

inffo, спасибо, вообще круто - код VM без мусора. И секции все наместе. Это сделано распаковщиком?

NikolayD пишет:
вообще Камаз распаковывает нормально этот файл. А у тебя импорт неправильно восстановлен + ещё памяти придётся лепить.

По сравнению с дампом от inffo точно есть разница в некоторых API. Вероятно ImpRec ntdll воспринял неверно. Может в этом у меня и кроется проблема.
И я в импорте когда делал вручную указал адрес RaiseException вместо 49EFAC
Не знаю почему на другой машине при запуске дампа вылетает "не возможно прочитать память по адресу BA11AD", я проверил в дампе нет такой константы. Поищу ошибки.
А что такое Камаз?



Ранг: 45.7 (посетитель), 40thx
Активность: 0.030
Статус: Участник

Создано: 16 июля 2012 07:15
· Личное сообщение · #10

Forester-> http://exelab.ru/f/action=vthread&forum=13&topic=18361




Ранг: 57.7 (постоянный), 49thx
Активность: 0.070
Статус: Участник

Создано: 16 июля 2012 20:10
· Личное сообщение · #11

Forester да это КаМаЗ вытворяет с новым кузовом



Ранг: 3.7 (гость)
Активность: 0=0
Статус: Участник

Создано: 16 июля 2012 23:56
· Личное сообщение · #12

igorca, за ссылку спасибо и PE_Kill поклон до земли. Теперь знаю, что может Камаз. Конечно хорошо, 5 сек и уже vzr4fin_n.exe.
Но кайфа не испытываю. Я лучше, не торопясь, попробую вручную.


 eXeL@B —› Протекторы —› Проблема при ручной распаковке "Visual Zip Password Recovery Processor"
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати