|
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"
равно нулю .
|
|
|