"Игорь Коваль. Как написать вирус" - читать интересную книгу автора ся обнаружить " фильтр " .
Далее - так как нам нужно всего лишь определить, какая функция 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 . Мы договорились испо- льзовать это прерывание для проверки наличия виру- са в памяти . |
|
|