Начало работы

Работа вируса в зараженной программе

Как вирус может заразить EXE - файл

Как и при заражении COM - программ, при заражении EXE-файлов вирусный код может записываться в конец, начало или в середину файла.Запись в конец файла, как и в предыдущем случае,реализуется наиболее просто,и кроме того,предохраняет от многих трудностей при отладке. Поэтому мы создадим вирус, работающий имено по такому принципу. Для того,чтобы при старте зараженной программы код вируса получил управление, следует соответствующим образом модифицировать заголовок EXE - файла. Для этого исходные значения CS0 и IP0 заменяются на точку входа в вирусный код, а значения SS0 и SP0 "переключаются" на собственный стек вируса. Кроме того, поскольку при заражении изменяются длина загрузочного модуля и длина файла, необходимо скорректировать поля заголовка по смещению 02h, 03h, а также 04h, 05h. Вот и все. Может показаться, что создать вирус,заражающий EXE-файлы, намного сложнее, чем COM - вирус. Однако это не так. Прочтите эту главу, и вы убедитесь в этом!

Рассмотрим теперь действия вируса при получении им управления. Итак, вирус функционирует по такому алгоритму:

  1. Ищет на диске подходящий EXE-файл.
  2. Записывает свое тело в конец этого файла.
  3. Корректирует заголовок заражаемой программы следующим образом:
    1. Вместо исходных CS0 и IP0 заражаемой программы записываются значения, обеспечивающие передачу управления вирусному коду при запуске программы.
    2. Исходные SS0 и SP0 заменяются на значения, обеспечивающие переключение на собственный стек вируса.
    3. Корректируется остаток от деления размера загрузочного модуля на 512.
    4. Поскольку при заражении длина файла увеличивается, корректируется размер файла в страницах (одна страница равна 512 байт).

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

  1. Выполняет вредные действия, предусмотренные автором.
  2. Определяет значения CS, IP, SS и SP,необходимые для правильной работы программы,из которой стартовал вирус.
  3. Передает управление зараженной программе. Для этого вирус использует команду безусловного дальнего перехода.Адрес перехода задается вычисленными CS и IP. После этого начинается обычное выполнение программы.

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

prg segment assume cs:prg,ds:prg,es:prg,ss:prg org 100h

Как вы помните, директива "assume cs:prg,ds:prg,es:prg,ss:prg" назначает сегментные регистры сегменту с именем PRG, а директива "org 100h" резервирует место для PSP вирусной программы.