Небесные боги,приветствуют вас!Небесные боги,приветствуют вас!






1.6 Вирус получает управление



После этого вступления начинается собственно исполняемая часть программы ( метка START ) :

start: jmp vir
;Передача управления вирусному коду ...

org 110h

Команда "jmp vir" передает управление вирусному коду, а директива "org 110h" указывает компилятору размещать все коды после метки "vir",начиная с адреса 110h .Число 110h принято для удобства расчета смещений при разработке вируса .Чуть позже мы разберемся, зачем понадобилась команда "jmp vir", а пока продолжим :

vir: push ds
;Сохраним DS ...
;Корректируем
mov ax,ds
;регистр DS ...
db 05h
;Код команды
add_to_ds: dw 0
; " ADD AX,00h "
mov ds,ax
;AX -> DS ...


Поскольку в зараженной программе область данных вируса будет сдвинута хотя бы на длину этой прoграммы,необходимо выполнить коррекцию регистра DS. Коррекция осуществляется прибавлением к его содержимому длины программы в параграфах,округленной в большую сторону .Например, длина программы составляет 401 байт . Тогда она содержит 25 полных параграфов и еще 1 байт.Округленное число параграфов будет равно 26 .Эта величина и прибавляется к регистру DS . При заражении вирус рассчитывает корректирующее число и записывает его в область "add_ to_ds" .Теперь всякий раз при запуске зараженной программы оно будет использоваться вирусом для исправления DS . В запускающей программе DS коррек- тировать не нужно, и поэтому для нее "add_to_ds" равно нулю .


Сайт разработан и поддерживается
by MAXIMUS в 2001г. По вопросам
размещения рекламы обращаться
maximus@runet.com



Hosted by uCoz