Необходимые инструменты:
Revirgin 1.2 by +Tsehp (взять можно на http://protools.cjb.net)
И так преступим.
Будем считать что у вас уже есть дамп программы с исправленной точкой входа, пусть его имя будет dump.exe,
если нету, то на www.xtin.org есть статья от Hex о нахождении OEP после AsProtect.
- Запускаем запакованную прогу.
- Запускаем Revirgin
- Выбираем в списке процессов Revirgin нашу прогу и жмем Fetch IAT - Revirgin найдет адрес начала IAT и ее размер.
- Жмем IAT Resolver, после того как Revirgin найдет функции он покажет окошко для выбора дампа - выбирете Ваш дамп(dump.exe)
- После нажимаем Resolve again и Revirgin находит большенство функций IAT
- Выбираем в списке Show ALL или Show Unresolved - второе и Revirgin покажет не восстановленные автоматически функции IAT
- Выбираем первую не восстановленную функцию, жмем на ней правой кнопкой мыши и выбираем Api Emulation, если все нормально то Revirgin изменит поле Name на emulated. Если этого не случилось, тогда выбираем Enable Trace и поле Name меняется на to_resolve, после этого выбираем Trace и поле Name меняется на traced.
- После этого жмем Resolve again и вместо на найденной функции появляется ее Имя, модуль, ординал и адрес.
- Пукты 7, 8 повторяем для каждой не найденной функции.
- Жмем IAT Generator и получаем восстановленный dump.exe уже с полной таблицей импортов.
- Жмем Save resolved и сохраняем текст IAT
- В идеале с помощью пунктов 7, 8 можно восстановить все не найденные функции, но у меня было так что я не находил и при помощи Api Emulation с Trace некоторых функций, тогда поступаем так смотрим поле IATRva не найденной функции прибавляем к нему Image Base и ищем в дампе вызов этой функции( Для HIEW 6.7x поступаем так: F4->F7->F7-> Вводим ??(где IATRva+IamgeBase - адрес не найденной функции)->Enter и ищем до тех пор пока не увидим нечто подобное jmp d,[IATRva+ImageBase] и запоминаем адрес этой инструкции.> Потом запускаем оригинальный экзешник и ставим такой бряк bpm <адрес инструкции> x и ждем выполнения. После этого входим в эту инструкцию и смотрим функцию, которая выполняется. (Возможно эта функция не выполнится никогда и тогда просто проигнорируйте сообщение Revirgin о не полном восстановлении IAT). В Revirgin правим все ее параметры с помощью пункта Edit в меню правой кнопки и после этого выполняем пункты 10 и 11.
|
|
Небольшое домашнее задание.
В пункте 12 есть маленькая заморочка с исправлением параметров функции(Revirgin иногда не принимает ихи восстанавливает ее как не распознаную функцию) . С этим Вам и предстоит разобраться.
Hint: Решение надо искать не в самом Revirgin, а в одном из выходных файлов, а в каком подумайте сами.
Вот и все! :)
|