Энциклопедия компьютерных вирусов

         

Внедрение вируса в конец файла


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

В DOS COM-файле в большинстве случаев это достигается изменением его первых трех (или более) байтов на коды инструкции JMP Loc_Virus (или в более общем случае - на коды программы, передающей управление на тело вируса). DOS EXE-файл переводится в формат COM-файла и затем заражается как COM-файл либо модифицируется заголовок файла. В заголовке DOS EXE-файла изменяются значения стартового адреса (CS:IP) и длина выполняемого модуля (файла), реже - регистры-указатели на стек (SS:SP), контрольная сумма файла и т.д. В исполняемых файлах Windows и OS/2 (NewEXE - NE,PE,LE,LX) изменяются поля в NewEXE-заголовке. Структура этого залоловка значительно сложнее заголовка DOS EXE-файлов, поэтому изменению подлежит большее число полей - значение стартового адреса, количество секций в файле, характеристики секций и т.д. Дополнительно к этому длины файлов перед заражением могут увеличиваться до значения, кратного параграфу (16 байт) в DOS или секции в Windows и OS/2 (размер секции зависит от параметров заголовка EXE-файла).

DOS COM-файл DOS EXE-файл New EXE-файл +---------+ +---------+ +---------+ +--|JMP | | +----|Заголовок| |DOS stub | | |----+ | | |---------| |---------| | |Программа| | |Программа| |New EXE | | | | | | | +----|заголовок| | |---------| V | | | |---------| | |Вирус | Стартовый |---------| | |Программа| +->| | адрес |Вирус | | | | | | --------->| | V | | +---------+ | | Стартовый |---------| +---------+ адрес |Вирус | --------->| | | | +---------+

Вирусы, внедряющиеся в DOS SYS-файлы, приписывают свои коды к телу файла и модифицируют адреса программ стратегии (Strategy) и прерывания (Interrupt) заражаемого драйвера (встречаются вирусы, изменяющие адрес только одной из этих программ). При инициализации зараженного драйвера вирус перехватывает соответствующий запрос операционной системы, передает его драйверу, ждет ответа на этот запрос, корректирует его и остается вместе с драйвером в одном блоке оперативной памяти.
Такой вирус может быть чрезвычайно опасным и живучим, так как он внедряется в оперативную память при загрузке DOS раньше любой антивирусной программы, если она, конечно, тоже не является драйвером.

+--------------------------------+ Незараженный файл-драйвер |Заголовок| Драйвер | +--------------------------------+

+------------------------------------+ Зараженный файл-драйвер | +-------------------------------+ | | | V V +------------------------------------------------------------+ |Заголовок| Драйвер | Вирус | +------------------------------------------------------------+

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

+--------------------------------+ Незараженный файл-драйвер |Заголовок| Драйвер | +--------------------------------+

+--------------------------------+ Зараженный файл-драйвер | V +------------------------------------------------------------+ |Заголовок| Драйвер |Заголовок| Вирус | +------------------------------------------------------------+

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


Содержание раздела