Сам себе антивирус 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 направляет нас на путь истинный. Указывай наш дамп в появившемся окне — и вуаля. Все готово! |