|

ЯВУ на халяву!
Ramhak O`Hady
Xakep, номер #017, стр. 017-064-2
Второй подвид еще более рулен - считывается заголовок жертвы :) (мы ведь все время говорим о EXE, не так ли?), определяется размер. Считывается кусок из начала файла с размером, равным длине тела вируса. Неужели дальше непонятно? :) Этот кусок дописывается в конец файла. На его место (!) вписывается вирус. Вуаля! Но резонный вопрос - что происходит после вызова уже зараженной проги? Резонный ответ - вирус исправляет то, что натворил. То есть выполняет следующие действия:
1. Считывает начало жертвы в конце файла.
2. Обрезает файл, то есть размер его становится равным тому размеру, который был у проги-жертвы еще до заражения, обрезание, короче. ;)
3. Восстанавливает начало проги, записывая считанный из конца файла кусок в начало.
4. Неужели что-то забыл? :)
5. Да нет - вроде все. :)
6. Забыл сказать про недостатки. Если, например, зараженный файл поместят на диск, защищенный от записи, то работать, сам понимаешь, он поленится... )-:
Писать HLLP, понятное дело, гораздо сложнее. Но и интереснее! А что движет вирмейкером? (ну, кроме понятных LameMD?) Правильно, любопытство! И еще злость на некоторых твердолобых фанатиков ASM`a. ~>:-E
Есть и скрещенные виды - когда, например, Parasitic-вид перезаписывает кусочек из начала уже непосредственно исполняемого кода (Entry Point которого можно легко получить прочтя EXE-заголовок) небольшой процедуркой на ASM`е. А уж эта процедурка и вирус догрузит/запустит и, вообще, всем даст. Главное, чтобы фантазии хватило на нечто большее, чем вызов "format c: /u".
Но это я отвлекся. В общем, задрали меня разговоры о том, что pascal - sux для вирмейкинга. Я решил доказать всем (и в первую очередь себе), что вирусы, написанные на pascal, способны на нечто большее, чем быть просто Overwrite`ами. Да и pascal - не ASM, можно голову сломать, пока додумаешься, как же так хитро нужно извернуться, чтобы, например, подгружать прогу сразу после тела вируса и стек сохранить. Многие уже вкурили, что это за головоломка. :)
Сел я и прямо с утречка забабахал красивый вирь на Pas`е. Название придумал кульное. Fall. Это чтобы все эти ASM`офилы попадали со стульев, обгадились конкретно и стали стерильными! Гхм... "Оставим гнев для кулачных боев" (с) В.Скотт. Итак, чем же он таким хорош, мой Fall? Я разбил рассмотрение на две части, чтобы было удобнее читать. Да и по классификации разбирать тоже.
Тип вируса
HLLP, однозначно! :) Первого (по номеру, как я их описывал) подвида. То есть со сдвигом жертвы в конец филе. Плюсы такого метода очевидны: простота реализации и запуск без проблем, даже с защищенных от записи дисков. Минусы, правда, тоже довольно большие: необходимость своп-файла - главный из этих минусов. Но "нет не решаемых проблем для тех, кто знает про RTFM!" (c) :)
Алчный поиск жертвы
Изложу вкратце суть алгоритма. Находятся все файлы, подходящие по размерам и типу, в текущем каталоге. Смещаются в подкаталоги (но только на один уровень, иначе может занять много времени), повторяется процедура там. Можно ограничиться несколькими подкаталогами, но тогда нужно делать random - иначе инфекты-конфетки будут появляться только в первых N подкаталогах, что не есть гуд.
Назад на стр. 017-064-1 Содержание Вперед на стр. 017-064-3
|