"Игорь Коваль. Как написать вирус" - читать интересную книгу автора нии прерывания Int 28h можно смело пользоваться
любыми функциями DOS . Далее, для проверки наличия вирусного кода в памя- ти наш вирус будет использовать так называемое мультиплексное прерывание - Int 2fh, и поэтому мы должны перехватить и его ( см п. 2.7 ) . И, наконец, мы должны написать обработчик критиче- ской ошибки .Она возникает,например,если мы попы- таемся записать информацию на вынутую из дисковода дискету . Наш вирус должен перехватить прерывание по критической ошибке ( Int 24h ) и выполнить его обработку . 2.17 Обработчик Int 13h Как мы уже выяснили, этот обработчик должен запи- сывать в ячейку " tg_13h " значение " 1 ", если в данный момент выполняется прерывание Int 13h, или значение " 0 " - в противном случае . К сожалению,в MS DOS отсутствует какое - либо сре- дство, позволяющее узнать, когда именно активно прерывание Int 13h .И поэтому единственный способ решения этой задачи - установка на Int 13h так на- зываемого " фильтра ", который отслеживал бы все Самое простое решение - это перехватить Int 13h на себя,а в самом обработчике вызвать системный обра- ботчик как дальнюю процедуру .Конечно, перед этим нужно записать в " tg_13h" единицу - это будет ин- дикатором выполнения Int 13h в данный момент .Ко- гда системный обработчик выполнится, управление вновь получит " фильтр ".Поскольку Int 13h уже вы- полнилось, можно сбросить в "0" переменную tg_13h. Итак : ; _______________________________________________ ;| | ;| Напишем новые обработчики INT 13h, INT 21h, | ;| INT 24h и INT 2fh ... | ;|_______________________________________________| to_new_13h equ $-vir new_13h: jmp cs:start_13h tg_13h db 0 ax_13h dw 0 cs_13h dw 0 ip_13h dw 0 |
|
|