Вирусы и другой вредоносный код


Идентификация упаковщика и автоматическая распаковка - часть 2


В таком случае распаковать файл можно и самостоятельно. Вам даже не придется выходить из дизассемблера, – всю работу можно выполнить и на встроенном языке (если, конечно, ваш дизассемблер поддерживает такой язык). Для расшифровки простейших "ксорок" хорошо подходит HIEW, а задачи посложнее решаются с помощью IDA. Подробное изложение методики расшифровки исполняемых файлов вы найдете в книге "Образ мышления – дизассемблер IDA" Криса Касперски.


.text:004010DA loc_4010DA:                  ; CODE XREF: sub_401090+58vj .text:004010DA         mov    dl, [esp+ecx+0Ch]    ; загрузить в DL след. байт

.text:004010DE         xor    dl, 66h              ; расшифровать по XOR 66h

.text:004010E1         mov    [esp+ecx+0Ch], dl    ; положить на место

.text:004010E5        inc    ecx                  ; увеличить счетчик на единицу

.text:004010E6         cmp    ecx, eax             ; еще есть что расшифровывать?

.text:004010E8         jl     short loc_4010DA     ; …если да, то мотаем цикл

.text:004010EA loc_4010EA:                       ; CODE XREF: sub_401090+48^j

Листинг 1 Пример типичного "ксорного" расшифровщика с комментариями

Если же код расшифровщика по своей дремучести напоминает непроходимый таежный лес, у исследования есть все основания считать, что исследуемая программа упакована одним из навесных упаковщиком, к которым, в частности, принадлежат ASPack, UPX, NeoLite и другие. Отождествить конкретный упаковщик при наличии достаточно опыта можно и самостоятельно (даже полиморфные упаковщики легко распознаются визуально, стоит только столкнуться с ними три-пять раз кряду), а во всех остальных случаях вам помогут специальные сканеры, самым известным (и мощным!) из которых является бесплатно распространяемый PE-SCAN (http://k-line.cjb.net/tools/pe-scan.zip). Давайте возьмем файл с вирусом Worm.Win32.Lovesan (также известный под именем MSblast) и натравим на него PE-SCAN. Сканер тут же сообщит, что вирус упакован упаковщиком UPX, который можно скачать с сервера upx.sourceforge.net, а при нажатии на кнопку "OEP" определит и адрес оригинальной точки в файл (в данном случае она равна 0x00011CB).


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



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