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


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



0008:10013307 8B500C             MOV     EDX,[EAX+0C]


0008:1001330A 85D2               TEST    EDX,EDX


0008:1001330C 7404               JZ      10013312


0008:1001330E B001               MOV     AL,01     * то же самое


0008:10013310 EB02               JMP     10013314


0008:10013312 B001               MOV     AL,01


0008:10013314 83C418             ADD     ESP,18


0008:10013317 C3                 RET

Таким образом, мы получили образ IDA.WLL и заменили зашифрованный файл практически исходным ему.

Теперь Ваша IDA работает нормально, все декомпилирует без ошибок и не помещает регистрационных записей в создаваемые файлы.  Теперь же в качестве упражнения давайте восстановим в свое "почти" исходное состояние  модули *.W32 и *.LDW.  Воспользуемся для этого той же самой техникой сброса образа на диск, восстановлением заголовка и смещением адреса точки входа на +1000.

Однако, на этот раз при попытке вызова из IDA функции loadlibraryA для загрузки модуля мы получим ошибку.  Рассмотрим в качестве примера PE.LDW.  Для сравнения сброшенного образа PE.LDW с исходным файлом воспользуемся таким замечательным инструментом как PEBrowse, и он покажет нам, что секция импорта в полученном образе немного отличается от оригинала.  Почему?  Да потому, что Windows изменяет адреса API-функций в секции импорта, и эти адреса оказываются в сброшенном модуле неработоспособными.

Секция импорта оказалась поврежденной.  Чтобы найти ее местонахождение, взгляните в ProcDump.  Он показывает, что ее виртуальный адрес равен 178f4.  Чему равно смещение файла?  Взгляните на секции: виртуальное смещение (Virtual offset) секции .adata равно 17000, а полное смещение (Raw Offset) = f200.  Следовательно, смещение секции импорта равно (178f4-17000) = 8f4 + f200 = faf4.

Взгляните на таблицу импорта в ASCII-режиме шестнадцатеричного редактора.  Дальше есть 2 пути: наиболее интересный из них - все сделать самому: изучить структуру таблицы импорта и самостоятельно восстановить ее так как это сделал я.  Этот путь требует некоторых затрат труда и времени, однако, в будущем он себя окупит с лихвой.  Более простой, воспользоваться таблицей импорта из оригинального файла PE.LDW:
 




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



Книжный магазин