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

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

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

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

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

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

Собейкис В.Г. Азбука хакера 3. Компьютерная вирусология — М.: Майор, 2006. — 512 c.
ISBN 5-98551-013-1
Скачать (прямая ссылка): hakeriazbukahakera2006.djvu
Предыдущая << 1 .. 57 58 59 60 61 62 < 63 > 64 65 66 67 68 69 .. 123 >> Следующая

также имели файл DBLSPACE.BIN, который использовался для интерпретации
сжатых дисков.
Когда нормальный загрузочный сектор DOS начинал выполняться, он сначала
определял важные параметры диска. Далее он проверял, имелись ли на диске
два скрытых файла операционной системы.
Если их не было, загрузочный сектор выдавал сообщение об ошибке и
останавливал машину.
Если они имелись, загрузочный сектор загружал файл IBM-BIO.СОМ или IO.SYS
в локацию памяти 0000:0700Н.
При удачной загрузке он передавал контроль программному файлу, который
продолжал процесс загрузки операционной системы PC/MS-DOS. Кроме прочего,
загрузочный сектор мог содержать важную информацию об операционной
системе. Хотя эта информация была жестко стандартизированной, многие
версии ОС использовали ее по-разному.
Вирус загрузочного сектора может быть очень простым - по крайней мере, в
принципе. Ему нужно лишь захватить первый сектор на диске. Обосновавшись
там, он найдет незараженные диски системы. Беда в том, что чем сложнее
вирус, тем больше места он занимает. Он может разрастись до двух-пяти
секторов, поэтому автор должен найти место, чтобы прятать эти секторы,
загружать и копировать их. Не все так просто в мире компьютерных
джунглей.
242
ГЛАВА 6. Инфицирование загрузочного сектора
Но мы запросто можем создать вирус для захвата одного сектора. Эта глава
будет посвящена такому виду вирусов.
Вместо того, чтобы придумывать вирус, инфицирующий загрузочный сектор, мы
создадим "зверюгу", которая станет само-воспроизводящимся загрузочным
сектором. Для начала рассмотрим устройство нормального загрузочного
сектора, который способен загружать DOS и выполнять ее. Эта теория
поможет нам выяснить, какие проблемы поджидают нашего героя.
Необходимые компоненты загрузочного сектора
Прежде всего, присмотримся к базовой структуре загрузочного сектора.
Первые байты сектора всегда являются инструкцией прыжка к реальному
началу программы, за которым следуют данные о диске, где размещен данный
загрузочный сектор. Вкратце говоря, эти данные менялись от типа диска к
типу диска (имеются в виду дискеты на 360К, 1.2М, 1.4М и жесткие диски).
Стандартные данные начала загрузочного сектора приведены в табл. 14. Они
содержат 43 байта и требуются для того, чтобы DOS и BIOS могли
использовать данный диск соответствующим образом. Единственным
исключением является поле DOS ID. Это просто 8-байто-вое имя для
идентификации загрузочного сектора.
Сразу после инструкции прыжка загрузочный сектор настраивает стек. Далее
он устанавливает Таблицу параметров диска, также известную как Таблица
базы диска. Это просто таблица параметров, которые используются BIOS для
контроля дискового устройства с помощью контроллера. При загрузке
загрузочного сектора BIOS настраивает таблицу по умолчанию и выставляет
на нее указатель в адресе 0000:0078Н (прерывание IE Hex). Загрузочный
сектор заменяет эту таблицу своей собственной - уникальной для каждого
частного диска. Это стандартная практика, хотя во многих случаях таблица
BIOS вполне пригодна для доступа к диску.
Вместо того, чтобы просто заменить адрес вектора прерывания 1ЕН,
загрузочный сектор выполняет сложную процедуру, которая строит таблицу из
данных в загрузочном секторе и данных, настроенных BIOS. Он находит
таблицу, настроенную BIOS по умолчанию, и побайтово читает ее вместе с
таблицей, хранящейся в загрузочном секторе. Если таблица сектора содержит
ноль в каком-
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
либо байте, этот байт заменяется соответствующим байтом из таблицы BIOS.
Когда в загрузочном секторе выстраивается новая таблица, этот сектор
изменяет направление вектора прерывания 1ЕН, чтобы тот указывал на него.
Затем он использует функцию О прерывания 13Н и использует таблицу новых
параметров.
Табл. 12. Область данных загрузочного сектора
Наименование поли Офсет Размер Описание
DOS_ID 7C03 8 Байты для ID формата программы
SEC SIZE 7C0B 2 Размер сектора (в байтах)
SECS PER CLUST 7C0D l Число секторов на кластер
FAT_START 7C0E 2 Стартовый сектор для 1-го FAT
FAT COUNT 7СЮ I Количество FAT на диске
ROOTENTRIES 7CII 2 Номера записей в корневой директории
SEC_COUNT 7CI3 2 Количество секторов на данном диске
DISKJD 7CI4 l ID диска (FD Hex = 360К и т. д.)
SECS_PER_FAT 7C15 2 Номера секторов в таблице FAT
SECS_PER_TRK 7CI8 2 Количество секторов на треке
HEADS 7C1A 2 Номера головок на диске
HIDDENSECS 7C1C 2 Количество скрытых секторов
Для поиска системных файлов определяется начало корневой директории на
диске. Затем производится ее осмотр. Данные диска в начале загрузочного
сектора имеют всю информацию для расчета места, где начинается корневая
директория.
Первый сектор корневой директории -
FAT.COUNT * SECS_PER_FAT + HIDDEN_SECS + FAT_START
244
ГЛАВА 6. Инфицирование загрузочного сектора
То есть, мы можем рассчитать номер сектора и прочитать его в локации
памяти 0000:0500Н. С этой позиции загрузочный сектор осматривает две
Предыдущая << 1 .. 57 58 59 60 61 62 < 63 > 64 65 66 67 68 69 .. 123 >> Следующая