Зараженный системный драйвер


Существуют также вирусы, заражающие системные драйверы другим способом: вирус модифицирует его заголовок так, что DOS рассматривает инфицированный файл как цепочку из двух (или более) драйверов (см. рис. 2.5).

Рис. 2.5 Зараженный системный драйвер в виде цепочки драйверов


Аналогично вирус может записать свои коды в начало драйвера, а если в файле содержится несколько драйверов, то и в середину файла.

Внедрение вируса в середину файла. Существует несколько возможностей внедрения вируса в середину файла. В наиболее простом из них вирус переносит часть файла в его конец или раздвигает файл и записывает свой код в освободившееся пространство. Этот способ во многом аналогичен методам, перечисленным выше. Отдельные вирусы при этом сжимают переносимый блок файла так, что длина файла при заражении не изменяется (см. например Mutant).

Второй метод — cavity, при котором вирус записывается в заведомо неиспользуемые области файла. Вирус может быть скопирован в незадействованные области таблицы настройки адресов DOS ЕХЕ-файла (см. BootExe) или заголовок NewEXE-файла (Win95.Murkry), в область стека файла СОМ-MAND.COM (Lehigh) или в область текстовых сообщений популярных компиляторов (NMSG). Некоторые вирусы заражают только те файлы, которые содержат блоки, заполненные каким-либо постоянным байтом, при этом вирус записывает свой код вместо такого блока.

Кроме того, копирование вируса в середину файла может произойти в результате ошибки вируса, в этом случае файл может быть необратимо испорчен.

Вирусы без точки входа. Отдельно следует отметить довольно незначительную группу вирусов, не имеющих точки входа (ЕРО-вирусы — Entry Point Obscuring viruses). К ним относятся вирусы, не записывающие команд передачи управления в заголовок СОМ-файлов (JMP) и не изменяющие адрес точки старта в заголовке ЕХЕ-файлов. Такие вирусы записывают команду перехода на свой код в какое-либо место в середину файла и получают управление не непосредственно при запуске зараженного файла, а при вызове процедуры, содержащей код передачи управления на тело вируса. Причем выполняться эта процедура может крайне редко (например, при выводе сообщения о какой-либо специфической ошибке). В результате вирус может долгие годы "спать" внутри файла и выскочить на свободу только при некоторых ограниченных условиях.

Перед тем как записать в середину файла команду перехода на свой код, вирусу необходимо выбрать "правильный" адрес в файле — иначе зараженный файл может оказаться испорченным. Известны несколько способов, с помощью которых вирусы определяют такие адреса внутри файлов.

Первый способ — поиск в файле последовательности стандартного кода Си/Паскаль (вирусы Lucretia, Zhengxi). Эти вирусы ищут в заражаемых файлах стандартные заголовки процедур Си/Паскаль и записывают вместо них свой код.

Второй способ — трассировка или дизассемблирование кода файла (CNTV, Midlnfector, NexivDer). Такие вирусы загружают файл в память, затем трассируют или дизассемблируют его и в зависимости от различных условий выбирают команду (или команды), вместо которой записывается код перехода на тело вируса.

Третий способ применяется только резидентными вирусами — при запуске файла они контролируют какое-либо прерывание (чаще — INT 21h). Как только заражаемый файл вызывает это прерывание, вирус записывает свой код вместо команды вызова прерывания (см., например, Avatar. Positron, Markiz).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: