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

         

Вирусы без точки входа


Отдельно следует отметить довольно незначительную группу вирусов, не имеющих «точки входа» (EPO-вирусы - Entry Point Obscuring viruses). К ним относятся вирусы, не записывающие команд передачи управления в заголовок COM-файлов (JMP) и не изменяющие адрес точки старта в заголовке EXE-файлов. Такие вирусы записывают команду перехода на свой код в какое-либо место в середину файла и получают управление не непосредственно при запуске зараженного файла, а при вызове процедуры, содержащей код передачи управления на тело вируса. Причем выполняться эта процедура может крайне редко (например, при выводе сообщения о какой-либо специфической ошибке). В результате вирус может долгие годы «спать» внутри файла и выскочить на свободу только при некоторых ограниченных условиях.

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

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

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

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



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