eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС
выпущен 4 ноября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: cppasm
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

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

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

Создано: 10 июля 2012 00:11 New!
Цитата · Личное сообщение · #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 (посетитель)
Статус: Участник

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

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

Ранг: 189.9 (ветеран)
Статус: Участник

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

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

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

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

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

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

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

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

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

Ранг: 189.9 (ветеран)
Статус: Участник

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

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


Ранг: 57.7 (постоянный)
Статус: Участник

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

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


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

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

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

Ранг: 189.9 (ветеран)
Статус: Участник

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

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

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

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

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

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

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

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

Ранг: 45.7 (посетитель)
Статус: Участник

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

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


Ранг: 57.7 (постоянный)
Статус: Участник

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

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

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

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

igorca, за ссылку спасибо и PE_Kill поклон до земли. Теперь знаю, что может Камаз. Конечно хорошо, 5 сек и уже vzr4fin_n.exe.
Но кайфа не испытываю. Я лучше, не торопясь, попробую вручную.
 eXeL@B —› Протекторы —› Проблема при ручной распаковке "Visual Zip Password Recovery Processor"

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS