10.03.2000 Win32CPP - PE infector in C++ [meza & SMT]

вашему вниманию предлагается пример вируса на с++ (к статье SMT
"Использование microsoft visual C++ 6.0 для создания
перемещаемого програмного кода.")

вирус учебный , поэтому многие вещи в нем упущены , т.к.
их реализация не представляет особого труда

итак , win32cpp - это РЕ инфектор , заражающий любые РЕ файлы
(с некоторыми уточнениями , см ниже). метод заражения самый 
простой - создание собственной секции , что не проходит мимо
нормальной эвристики , конечно :)

в проекте для msvc++ есть только release build , т.к. debug
build просто не будет работать (за подробностями к SMT:))
первое поколение заражает файл из командной строки
следующие - файл с именем goat.exe в текущей директории

тестировался на exe, dll, scr - успешно
по идее , должен работать и с ocx , просто не проверялось
для работы с cpl надо немного изменить firstfunc , т.к
cpl вызывается не совсем так , как обычная dll
из-за нехватки времени тестировался только под win98 , хотя
очевидно , что должен работать под любой win32 осью

чего не хватает для того , чтоб его можно было бы пустить в
природу?

1 конечно , надо применить более приличный метод заражения
2 работа с аттрибутами файла
3 создание рабочего потока - поиск и заражение файлов
4 заражение залоченных файлов , через setupapi

все это остается для следующей версии

выводы - смотрите сами , насколько легко читается исходник,
насколько легко вносить в него свои изменения. и где проигрыш
по сравнению с асмом?

PS небольшой прикол напоследок
AVP считает , что секции в файле расположены в том же порядке ,
что и их заголовки - какая трогательная наивность!:) Короче , 
достаточно поменять местами 1-й и последний ЗАГОЛОВКИ секции ,
т.е. сделать заголовок секции виря первым , чтоб AVP перстал
его видеть! И это проверенный факт. Это называется хевристика...
ДрВеба , конечно , так просто не провести.
исходник