Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #57, АВГУСТ 2005 г.

Распаковка вручную

Симонов Илья (nazi@gh0sts.org)

Спецвыпуск: Хакер, номер #057, стр. 057-032-4


Снятие дампа

Для тех, кто пользуется OllyDbg, никакого труда не составит поставить breakpoint на команде перехода (всего лишь нажав <F2>) и запустить программу до срабатывания точки останова. Любителям SoftIce придется немного поколдовать. Тут мы уже просто зациклим программу на этом месте путем замены байт, да SoftIce и это может :). Итак, двигаемся на команду прыжка и вводим команду "a", что означает ввод ассемблерных команд, а затем пишем jmp eip. Применяем магическим <Enter>'ом, и теперь наша команда делает бесконечные прыжки на себя. Как видишь, ничего сложного нет. Вообще самое сложное в распаковке упаковщиков - это нахождение ОЕР.

Отладчики запущены, программы висят на прыжках на точку входа, остается только снимать дамп. Вопрос чем? Конечно, сейчас есть уйма плагинов как для SoftIce, так и для OllyDbg, однако ими я не пользуюсь, ибо все это от лукавого. Существуют две замечательные программы PETools и LordPE, первую сегодня мы уже использовали, значит, снимать дамп будем второй. Вообще принципиальной разницы в этих программах нет, но нужно учиться всему и знакомиться со всеми. После запуска LordPE находим в списке наш зацикленный процесс, правый клик на нем и full dump - что может быть проще? Сохраняем дамп на диск. Ура! Наконец-то наш файл готов... но что это? Он не запускается и выдает ошибку. А это потому, что наш новоявленный блокнот не знает, какие же функции ему использовать. Нам предстоит еще восстановить таблицу импорта. Кстати, если мы уже сдампили программу, то можно закрывать отладчики. Для тех, у кого отладчик ядра в LordPE, выбираем программу и в контекстном меню нажимаем burn process.

Восстановление импорта

Импорт мы восстановим с помощью еще одной замечательной программы Import Recontructor. Запустим упакованный блокнот, затем найдем его в листе процессов ImpRec'а. Теперь нам необходимо указать RVA OEP (в ImpRec он просто OEP). Не пугайся слов: на врезке есть объяснение всему. Вот формула "RVA OEP = VA OEP - ImageBase". Ее нужно запомнить крепко. Image Base мы сможем найти нажав на кнопку PE Editor в LordPE. В нашем случае RVA = 01006420 – 01000000 = 6420. Вводим это значение в поле OEP и жмем автопоиск, то есть IAT AutoSearch. После этого нажимаем Get Imports. Мы должны увидеть строки с функциями и надписью YES напротив. Если все так, а так и должно быть, то кнопка Fix Dump открывает нам дверь на путь истинный. Останется только указать наш дамп и после нажатия на заветную кнопку ОК наслаждаться распакованным блокнотом.

Назад на стр. 057-032-3  Содержание  Вперед на стр. 057-032-5