RCE.SU - реверсинг, кодинг, выделенные сервера, ICQ, proxy

Восстановление таблицы импортов после AsProtect 1.2

[Исследование]

Subject: Reversing.
Target: Восстановить таблицу импортов после AsProtect 1.2
Author: Kop
Date: 27.09.2001

Before starting!
Все ниже изложенное предназначено только для образовательных целей.
FOR EDUCATION USE ONLY!!!

I. Вступление
Cегодня я расскажу про то как восстановить таблицу импортов после AsProtect 1.2
II. Постановка задачи
1. Необходимо восстановить таблицу импортов у исследуемой программы после упаковки AsProtect 1.2
III. Исследование
Необходимые инструменты:
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.
IV. Подводим итоги:
Небольшое домашнее задание.

В пункте 12 есть маленькая заморочка с исправлением параметров функции(Revirgin иногда не принимает ихи восстанавливает ее как не распознаную функцию) . С этим Вам и предстоит разобраться.
Hint: Решение надо искать не в самом Revirgin, а в одном из выходных файлов, а в каком подумайте сами.

Вот и все! :)
Endnote:
©Endnote: © 2001 Kop (kop@kop2000.com)
This essay can be freely distributed/ published/ printed etc... as long as no modifications are made in any way.
Greets to: Everyone in UOFG www.uofg.com.ua


<= Вернуться к статьям


Rambler's Top100