"Игорь Коваль. Как написать вирус" - читать интересную книгу автора

ся обнаружить " фильтр " .
Далее - так как нам нужно всего лишь определить,
какая функция DOS вызвана, нет смысла после завер-
шения системного обработчика передавать управление
обратно в " фильтр " .По этой причине отпадает не-
обходимость сложных " манипуляций " со стеком, ко-
торые мы проделывали в предыдущем пункте .
Помимо решения своей конкретной задачи, написанный
нами обработчик используется для перехвата преры-
вания Int 24h.Делается это прямым обращением к та-
блице векторов прерываний . Так же перехватывает
прерывания и секция инициализации при установке
вируса в память .Правда, вы можете спросить, зачем
потребовалась такая сложная методика перехвата,
и почему бы не выполнить его в секции инициализа-
ции ? Дело в том, что такой прием будет "работать"
только в MS DOS .WINDOWS 95, например, постоянно
восстанавливает вектор Int 24h, что делает бессмы-
сленным изменение вектора " только один раз ".Тру-
дно сказать, зачем в WINDOWS 95 принято восстанав-
ливать вектор .Вероятно, это сделано для надежно-
сти работы системы .При создании резидентного EXE-
вируса мы поговорим еще об одной " странности "
этой популярной операционной системы,которая поме-
шает нам сделать вирусную программу " невидимой "
для антивирусных средств .


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

Этот обработчик должен устанавливать собственную
реакцию на критическую ошибку .Вызывается он очень
редко,поэтому просто сделаем так,чтобы при появле-
нии ошибки не происходило " зависание " .Для этого
достаточно вернуть управление прерванной програм-
ме,поместив предварительно в регистр AL код " 3 ":

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

to_new_24h equ $ - vir

new_24h: mov al,3 ;Вернем програм-
iret ;ме управление


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

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