Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #89, МАЙ 2006 г.

Сам себе антивирус

Bokiv (Bokiv@yandex.ru)

Хакер, номер #089, стр. 089-060-3


00419910 PUSHAD - стоим здесь

00419911 MOV ESI,Mytob.0040F000

00419916 LEA EDI,DWORD PTR DS:[ESI+FFFF2000]

0041991C PUSH EDI

0041991D OR EBP,FFFFFFFF

00419920 JMP SHORT Mytob.00419932

Опять знакомая команда PUSHAD! Теперь крутим мышкой вниз, пока не увидим:

00419A67 POPAD

00419A68 JMP Mytob.0040A0EB <- это OEP "червя"

00419A6D ADD BYTE PTR DS:[EAX],AL<-а куча этих строк не даст ошибиться!

00419A6F ADD BYTE PTR DS:[EAX],AL

Ставим брейкпоинт на POPAD 00419A67, нажимаем F9 и два раза F7. Все мы находимся на OEP

"червя". Запишите это значение (у меня это 0040A0EB).

[дамп]

Для дампа воспользуемся программой PE Tools. Перед тем как снять дамп, давай проведем некоторую настройку самой программы. Заходи в Options программы и смотри. Внутри панели Task Viewer должен стоять флажок только напротив Full dump: fix Header. После того как ты это сделаешь (а я это уже сделал) мы с тобой продолжим. Выбираем из списка процессов червя -->, в контекстном меню жмем Dump Full. Думаю, с вводом имени файла проблемы возникнут только у безруких инвалидов :). Сперва необходимо провести небольшую оптимизацию данных. Как ты знаешь, наш протектор переименовал имена всех секций, однако тут все понятно: первые две секции – это секции кода протектора и распаковщика UPX, остальное – нормальная программа, просто переименованная. Нажимаем меню Tools->PE Editor и указываем червя. Теперь обрежем лишние секции протектора и упаковщика, про которые я только что сказал. Видишь кнопку Sections? Нажимай и обрезай две нижние секции с именами UPX2, yC кнопкой в меню Kill section (from file). Ну вот, теперь мы снова вместе. После восстановления импорта, описанного ниже, можно сделать rebuild (кнопка rebuild pe), при этом оптимизируется PE-заголовок файла, что может уменьшить его размер на несколько килобайт, к тому же происходит оптимизация внутренней структуры и расположения данных в файле. Также можно воспользоваться rebuild для восстановления файла после распаковки протекторов и упаковщиков.

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

Импорт мы будем восстанавливать с помощью одной замечательной программы - Import Recontructor. После запуска найди в списках процессов нашего червя (если ты уже все закрыл, то придется запускать файл С:\WINDOWS\system32\wfdmgr.exe).

Теперь нам необходимо указать RVA OEP (в ImpRec он просто OEP). Формула тут проста, как int 21h - "RVA OEP = VA OEP - ImageBase". Это надо знать наизусть! Image Base находится все в том же PETools, в главном окне. В нашем случае RVA = 01006420 – 01000000 = 6420. Вводим это значение в поле OEP и нажимаем кнопку IAT AutoSearch (то есть автопоиск). Программа найдет ссылки на функции таблицы импорта, затем мы получим саму таблицу, нажав на кнопку «Get Imports» (Получить импорты). Мы должны увидеть строки с функциями и надписью YES напротив. Если все так, а так и должно быть, то кнопка Fix Dump направляет нас на путь истинный. Указывай наш дамп в появившемся окне — и вуаля. Все готово!

Назад на стр. 089-060-2  Содержание  Вперед на стр. 089-060-4