"Игорь Коваль. Как написать вирус" - читать интересную книгу автора грамме,необходимо восстановить значения регистров,
которые имели место при получении управления рези- дентной программой : exit_zarasa: ;Восстановим ;регистры ;процессора ... pop es pop ds pop bp pop di pop si pop dx pop cx pop bx pop ax popf mov ss,cs:ss_save-110h ;Восстановим mov sp,cs:sp_save-110h ;стек ... iret Кроме того, вирус восстанавливает стек прерванной программы, без чего дальнейшая работа невозможна . Для начала выясним, какие прерывания и с какой це- лью наш вирус будет перехватывать . Во - первых, необходимо перехватить прерывание Int 21h .Дело в том, что наш вирус является резидент- ным, и должен заражать файлы при тех или иных со- бытиях в вычислительной системе.Очень многие виру- сы активизируются, например,при смене текущего ди- ска или каталога .Этот метод является весьма удач- ным, и мы реализуем именно его .Но для этого нужно знать, когда именно выполняются смена каталога или диска.Единственный способ узнать о таком событии - это перехватить прерывание Int 21h на себя, и при каждом его вызове проверять, какая именно функция вызывается . Так мы и сделаем . Во - вторых, нам не обойтись без перехвата Int 13h ( см п. 2.13 ) . В - третьих,поскольку наш вирус будет пользоваться функциями DOS,которые работают с диском в резиден- тном режиме,необходимо знать,когда можно безопасно обращаться к этим функциям . Для этого следует перехватить прерывание Int 28h,которое всегда вы- зывается только при выполнении DOS реентерабельной секции своего кода .Иными словами, при возникнове- |
|
|