Структура жесткого диска DOS

Автор статьи: Господин J
Сайт Автора: Нет
E-mail Автора: johnd@white-star.com
Дата публикации: 26.03.2005


Часть I

Вряд ли вся механика так очевидна для тебя - ладно, повторим еще раз,
только с картинками :

P A R T I T I O N T A B L E
==================================

1 2 3 4

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
_/ _/ _/ _/ _/ _/
_/ Cylinder _/ 1 _/ 400 _/ - _/ - _/
_/ Head _/ 0 _/ 0 _/ - _/ - _/
_/ Sector _/ 1 _/ 1 _/ - _/ - _/
_/ Boot _/ Yes _/ No _/ - _/ - _/
_/ System _/ DOS16 _/ Extended _/ Unused _/ Unused _/
_/ _/ _/ _/ _/ _/
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

FIG.1

Перед нами максимально упрощенная таблица разделов жесткого диска
в том виде, в каком ее обычно создает FDISK при отсутствии физических
дефектов поверхности.
Конечно, таблица разделов содержит больше информации - ведь программам,
работающим с диском, надо знать не только в каком месте начинается тот
или иной раздел, но и где он заканчивается, поэтому и таблица, которую
ты можешь увидеть при просмотре диск-эдитором первого сектора нулевой
поверхности нулевого цилиндра несколько сложнее нашей схемы.
( Если тебе не терпится забежать вперед, то не забудь что диск-эдитор
имеет несколько режимов интерпретации данных, читаемых из сектора на
жестком диске, режим просмотра Partition включается клавишей F6, причем
программе наплевать какой на самом деле сектор диска ты просматриваешь -
она просто интерпретирует просматриваемые данные так как тебе этого
хочется - и согласно значению байт в определенных местах текущего сектора)
Расшифруем содержимое таблицы :
В самой левой колонке я просто поместил названия для тех данных которые
размещены в следующих четырех колонках - это номера цилиндров,головок
и секторов с которых начинается соответствующий раздел, а также
признак его активности ( Yes ) или неактивности ( No ) - собственно
говоря - Yes означает что данный раздел - загрузочный, причем
по большому счету системе неважно где он находится, это только
Fdisk стремится прописать его в 1/0/1 - то есть в первый сектор
первой поверхности нулевого цилиндра, если сразу за ним не обнаружит
плохих секторов.
Последняя строка обозначает тип файловой системы, которая применяется
в данном разделе диска. В нашем случае - DOS16, конечно - открытым
текстом в самом секторе этого не увидеть, для обозначения типа
файловой системы и многих других параметров используется более экономный
способ - при этом для записи этих данных отводится по одному-два
байта. Так сделано для того чтобы поля с параметрами разделов
занимали в маленьком 512-байтном секторе как можно меньше места.
А под сами разделы отведено всего лишь четыре таких поля - и все это
только затем чтоб оставить побольше места для программы начальной
загрузки ( куда иногда влазят со своими поправками бутовые вирусы :).
Программа начальной загрузки диска ( не торопись - пока только ДИСКА,
а не операционной системы ) вместе с полями параметров разделов и
заголовком сектора и составляет так называемый
MBR - Master Boot Record
- по-русски - главную загрузочную запись. Объем ее - 512 байт,
то есть равен размеру одного сектора диска, - если это стандартный
IBM-совместимый диск. Изредка применяется другой размер сектора, но
нам сейчас это неинтересно. 512 байт - общепринятый стандарт.
В начале MBR обычно можно увидеть сокращенное название операционной
системы, чья FDISK сделала этот сектор, в конце - пару строк текста
стандартных сообщений об ошибках - на тот случай если что-то
нехорошее произойдет с теми частями системы которые должны грузиться
сразу вслед за MBR. ( Ты можешь немного поэкспериментировать,
если сумеешь вытереть их и восстановить потом без посторонней помощи -
при попытке загрузки с такого диска ты увидишь этот текст на экране .)
Последние два байта в секторе занимает код 55 AA - при загруженном
драйвере русификатора экрана это читается как Uк. Этих признаков тебе
будет достаточно чтобы опознать этот сектор даже если твой диск
был заражен вирусом, который переместил его куда поглубже, но не
слишком далеко от исходного места. Вирус это делает затем
чтобы иметь возможность подставлять вместо себя исходный сектор
для проверки антивирусу. По крайней мере - если это умный вирус.
И если какой-нибудь балбес забудет что для полной гарантии ему
надо грузонуть машину с чистой системной дискеты, то никакой DrWeb
с Касперским и Aidstest`ом ( последнего было бы достаточно для большей
части бутовых) ему уже не помогут. Как-то на работе я не затер
бутовый вирус а переместил его еще немного дальше чем он сам перемещал
исходный сектор - ну в область на нулевой поверхности нулевого же
цилиндра, просто затем что мне нужно было чтоб на диске лежал
эталон для сравнения, для того чтобы узнать в конце концов, какой
из глупых юзеров постоянно пытается загрузить машину со своей
зараженной вирусом дискеты ( или просто забывает эту дискету
в дисководе и включает машину ). Был жуткий скандал. Два программиста
кстати, очень грамотных в своей области, когда я попросил их настроить
одну программу на этой машине, обнаружили этот вирус с помощью AVP,
обвинили меня в разгильдяйстве, и переформатировали диск. Поводом же
к запуску антивируса послужила плохая работа старой нерусифицирован-
ной версии Нортон-коммандера. Я-то знал, что Нортон просто не может
управиться со слишком большим для него диском, поэтому пользовался
Волковым, а для работы с архивами - ДОС-навигатором. Но откуда же
я мог знать что они еще не вырасли из пеленок и так же как и ты
обожают Нортон - свою первую операционную оболочку. У них хватило
ума заремить VC в AUTOEXEC.BAT но как-то не хватило опыта понять
что немедленно после запуска NC начавшиеся проблемы связаны именно
с этими их действиями. Воистину - в чужом глазу соринка видна,
в своем же и бревна не заметишь. В результате я получил выговор,
меня стали считать разгильдяем, (слава богу - хоть не вирусописателем:),
но самое главное - они грохнули мои архивы, так как им просто
не хватало места на диске куда они перебрасывали данные на время
форматирования моего диска. Спасибо хоть установили на нем вместо
громоздкой 32-битной старую, но такую понятную 16-битную версию FAT.
А самое смешное было в том что когда мне вернули машину, я снова
обнаружил мою отсадку в том же месте где она и была ! Ничего с ней
не сделалось от форматирования - ведь FORMAT и НЕ ЗАГЛЯДЫВАЕТ
даже в область до первого сектора логического диска. А FDISK ТОЛЬКО
ПЕРВЫЕ СЕКТОРА каждой поверхности протирает кодом FF. И если бы
не дай бог у этих ребят было чуточку поменьше самоуверенности и
чуть поболее времени - чтоб они запустили Касперского еще раз,
- то не знаю что бы со мной было. Касперский в общем-то прав когда
ищет вирус в зоне где бутовый в принципе неактивен, он же не знает
что я держу его там просто для своей проверки. Дело в том что есть
много новых вирусов - и видимо он считает что лучше перестраховаться.
А молодежь слепо доверяет ему, я могу назвать массу случаев когда
DOC-файл индицируется Касперским как зараженный - в то время как
он всего-навсего создан не самой распоследней наикрутейшей версией
WORD`а - а скромным стареньким WRITE. Кто об этом знает, постоянно
конфликтует с теми, кто этого не знает - последние обвиняют первых
в том что те пытаются подсунуть им завирусенные письма. Это просто
ВИРУСОФОБИЯ, обычное у нас явление.
( Зато первые со злорадством читают в письмах вторых все их системные
настройки - и пути к сетевым принтерам, и имя файл-сервера - ну много
чего может почерпнуть грамотный хакер из коротенького письма юного балбеса,
которое тот, желая подчеркнуть свою крутость, пишет в DOC-формате).
Но мы кажется отвлеклись, более того - макровирусы - не бутовые.
Они сами нуждаются в хорошей работе системы. А самый красивый
бутовый вирус я когда-то видел на своей первой XT - это был LPT.
Он так и называется по имени - системному имени ! - принтерного порта,
потому что все что он делает - это перепрограммирует порт вывода
на принтер - и тот начинает печатать такое ... Видимо, написал его
бедный программист с целью собрать побольше клиентов для друга,
занимавшегося аппаратной русификацией матричных принтеров :-))
Однако вернемся же к нашим баранам, тьфу - лошадям !