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

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

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

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

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

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

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

установлен перенос => ошибка
1ос1оор_18:
inc ах ;инкрементируем DWORD в dx:ax
jnz loc_19 ;прыгаем, если не ноль incdx 1ос_19:
add bh,2 ;и каждый раз добавляем 2 к bh
loop locloop_18 ;петля, пока не станет сх = О
clc ;очищаем флаг переноса
664
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
1ос_20:
pop si ;не имеет смысла. По моим расчетам стек выгляд ит так: ;SI ,0,0,
DX, АХ, ES, ВХ,СХ
retn . прыжок к старому сх ??
1ос_21: ;здесь содержится таблица ошибок
jmp short loc_22 ;прыгаем через нее db 'Invalid partition table1,0 db
'Error loading operating system', 0 db 'Missing operating system' db 37
dup (0)
loc_22: ;когда мы оказываемся здесь, то это означает, что все ; прошло
ОК. Теперь загрузочная запись загружена и ;MBR готов выполнить ее
\
mov di,sp ;di = указатель стека
push ds ;вталкиваем ds:di в стек
push di mov si,bp
retf ;дальний возврат (фактически, прыжок ds:di)
;к загрузочной записи
db 52 dup (0) ;пустое пространство
Здесь начинается Таблица разделов:
db 80h ; маркер активного раздела
db 01 h ;раздел: начальная головка
dbOlh ;сектор
ГЛАВА 7. Многоцелевые вирусы
dbOOh ;цилиндр
db 06h ;тип системы
db OFh ;раздел: конечная головка
db OFFh ;сектор
db38h ;цилиндр
db 3Fh, 00h, OOh, OOh ;номер физического сектора db 31 h, OBOh, OCh, 0
;длина раздела в секторах db 48 dup (0) '.других разделов не существует -
.всего в таблице разделов 40h байтов db 55h,0AAh ;и подпись!
.......Конец исходного кода MBR..........
Итак, что делает этот код:
• проверяет, если правильная таблица разделов (только один раздел
активен, и его подписью является 0AA55h);
• находит сектор, где размещается загрузочная запись для этого раздела;
• загружает эту загрузочную запись;
• прыгает к загрузочной записи.
Если правильной таблицы разделов не имеется, то появляется ошибка
'Invalidpartition table'(неверная таблица разделов).
Если система не может читать (по каким-то причинам) с диска, то
появляется сообщение об ошибке: 'Error loading operating system ' (ошибка
при загрузке операционной системы).
Если загрузочная запись не найдена, появляется ошибка 'Missing operating
system' (операционная система отсутствует).
Как видите, при загрузке мы можем вызывать прерывания. Но доступны только
прерывания от 0 до lFh (обратите внимание, что ошибки изображаются с
помощью графического прерывания 10h). Фактически, во время этой паузы мы
можем перехватывать прерывания, назначать память, читать с диска и писать
на диск. Все это мы обсудим позже, а сейчас рассмотрим загрузочную
запись.
АЛЛ
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
Загрузочная запись
Здесь нас интересует ВРВ (BIOS Parameter Block - блок параметров BIOS) и
расширенный ВРВ с весьма полезной информацией. Прыжок к загрузочной
последовательности приведет нас непосредственно к загрузке операционной
системы.
Табл. 17. Структура загрузочной записи
Офсет Размер Описание
00h-02h 03h Инструкция прыжка к загрузочной последовательности кода
03h-0Ah 08h Имя и версия операционной системы
OBh-OCh 02h Размер сектора в байтах
ODh Olh Размер кластера в байтах
OEh-OFh 02h Резервные секторы, пока не будет копирована первая FAT
lOh Olh Количество копий FAT
llh-12h 02h Количество директорных записей в ROOT
13h-14h 02h Всего секторов на диске (или разделе)
I5h Olh Тип диска
16h-17h 02h Размер FAT в секторах
18h-19h 02h Секторов на цилиндр (трек)
lAh-lBh 02h Количество головой (сторон)
ICh-lFh IBEh Скрытых секторов
Также следует отметить, что на жестком диске существуют две копии FAT
(таблицы размещения файлов). Они имеют особую длину, которую можно найти
в ВРВ (секторов на FAT).
Вторым важным для нас значением будет количество секторов на кластер. Две
копии FAT идут одна за другой. Вторая нужна
г" г" л
ГЛАВА 7. Многоцелевые вирусы
для гарантии на случай потери данных. Некоторые адепты Искусства
записывают туда данные, затем скрывают их, перенаправляя чтение из второй
копии FAT к первой копии (если копии FAT не будут равны, пользователь тут
же получит соответствующее сообщение). Проблема этого метода заключается
в том, что трудно искать место второй копии и читать, используя лишь int
13. Еще нам интересна директорная запись в Root. Данные о ней также
находятся в ВРВ. Хорошим местом для сокрытия данных является конец
корневой записи (Root Entry). Мы рассмотрим эту технику позже.
Теперь предположим, что мы замышляем написать загрузочный или
многоцелевой вирус. Где хранить код? Это первый вопрос. Мы можем
поместить его:
• в MBR
• в Boot
• в запись корневой директории
• во вторую копию FAT
Рассмотрим эти техники.
1. Инфицирование MBR
Мы уже ознакомились с исходным кодом* MBR. Что нам известно? Главная
загрузочная запись размещается в физическом секторе (0,0,1). Загрузочную
запись можно найти в (0,1,1), но это верно только в том случае, если
активен первый раздел.
Если разделов больше одного и активен какой-то другой, нам придется
производить проверку и выискивать адрес загрузочной записи для этого
Предыдущая << 1 .. 76 77 78 79 80 81 < 82 > 83 84 85 86 87 88 .. 123 >> Следующая