Электронная библиотека

Xakep

Xakep

Первый вирь - COMом

Xakep, номер #014, стр. 014-058-2


Созданный шаблон можно потом будет нарастить всякими функциями, чтобы не писать каждый раз все заново. Это обычно экономит уйму времени, которое можно потратить на более приятные занятия. Братишка, пивко мое и девочек неподалеку не видал? :)

Перед самым главным необходимо немного теории. Напомню, что все действия, совершаемые вирусом, можно разбить на несколько частей:

- поиск файлов

- выборка файлов, годящихся для заражения

- определение зараженности файлов

- собственно заражение

- выполнение каких-либо дополнительных действий

Поиск файлов нерезидентный com-вирус, о котором я рассказываю, может проводить, как минимум, двумя способами. Первый - непосредственное чтение FAT дисков и выцарапывание оттуда файлов. Второй - пользование функциями сервисного прерывания DOS INT 21H. Первый метод имеет очень большой недостаток - он обладает универсальностью, поскольку в дикой природе, кроме FAT-16, существует еще и FAT-32, и всякие NTFS... В общем, заморочки, а в результате - непонятки. И вникать без особой надобности в них - сущий мазохизм. Поэтому все живые на данный момент вирии для DOS поголовно пользуются вторым методом. Да и проще он намного. Но, как и все хорошее, этот метод имеет отрицательное качество: по вызовам прерывания 21H антивирусы определяют присутствие вируса в файле. Но об этом я уже писал в прошлом номере.

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

- найти первые несколько файлов в текущем каталоге

- повторить то же самое для родительского каталога

- выбирать подкаталоги и искать там

Т.е. вирусы, запущенные из C:\ и из C:\Internet\Download\Virus будут распространяться одинаково быстро по всему диску. Кто учил биологию, скажет, что теперь ареал этой популяции - весь диск, а более продвинутые вири - начинают еще и размножаться, типа продолжать популяцию :).

Заражение com-файлов довольно простая процедура из-за формата самих comков. Никаких внутренних таблиц и релокейшенов, никаких новых форматов - com-ки никто не апгрейдил с тех времен, когда Полтергейтс был еще программистом.

Существует два наиболее известных алгоритма заражения com-файлов:

- overwriting

Первые байты жертвы помещаются в конец файла, потом перезаписываются телом вируса. Когда файл запускают - запускается, естественно, вирус, который после небольшой гимнастики с файлами возвращает все на свои места. Этот метод немного заморочен, и приходится делать слишком много лишних телодвижений. Можно, правда, просто считывать весь файл-жертву, писать код вируса, а потом просто дописывать жертву в конец. Так, конечно, намного проще.

- appending

Код вируса дописывается в конец com-ка. Затем первые три байта жертвы сохраняются и перезаписываются в файле на JMP/CALL Virus_Start. Самый экономичный и популярный метод (миф универсал - экономит капитал :)). Кроме того, присутствие в файле первой командой JMP/CALL Virus_Start - может послужить возможным признаком того, что файл уже заражен.

Назад на стр. 014-058-1  Содержание  Вперед на стр. 014-058-3