Набор статей и руководств по дизассемблеру IDA


3. Восстановление IDA.WLL и модулей в их "почти" первоначальное состояние.


Прежде чем двигаться дальше, Вам следует хорошо понять структуру PE-файлов [например, хорошо прочитать статьи Randy Kath или Hard Wisdom, для них есть переводы на русском - прим. перев.].

IDA.WLL и все модули имеют обычную точку входа.  Воспользовавшись PE-редактором ProcDump'а, Вы обнаружите, что точка входа IDA.WLL находится по адресу $100AA000.

Установите по этому адресу контрольную точку 'bpmb' и загрузите IDA.

001B:100AA000 60                 PUSHAD           <-- Вы оказались здесь


001B:100AA001 E841060000         CALL    100AA647


001B:100AA006 EB41               JMP     100AA049


001B:100AA008 0000               ADD     [EAX],AL


001B:100AA00A E177               LOOPZ   100AA083


001B:100AA00C 0C00               OR      AL,00


001B:100AA00E 0000               ADD     [EAX],AL


001B:100AA010 0000               ADD     [EAX],AL

Перед Вами типичная процедура распаковки или дешифрования - 'PUSHAD' сохраняет содержимое всех регистров, следующим шагом выполняется расшифровка DLL, а затем окончательный переход на точку входа.  Чтобы найти ее Вы должны знать, что все DLL имеют секцию инициализации, которая и является фактической точкой входа.  Здесь происходит выделение памяти, инициализация переменных и т.п.  При этом те же самые функции осуществляют выгрузку DLL.  Поэтому выйдите из IDAG.EXE сразу после появления информационного окна, установите контрольную точку, а когда сработает 'BPMB' выполните 'p ret' (F12), и Вы окажетесь в следующем фрагменте:

001B:10001000 A1E0A10710         MOV     EAX,[1007A1E0] <--- Вы оказались здесь




Начало  Назад  Вперед