Смещение | Размер | Описание |
---|---|---|
0x00 | 3 байта | Инструкция перехода |
0x03 | 8 байт | OEM ID |
0x0B | WORD | Количество байт на сектор (для жестких дисков всегда 512) |
0x0D | BYTE | Количество секторов на кластер |
0x0E | WORD | Количество зарезервированных секторов, всегда равно 0 |
0x10 | 3 байта | He используется NTFS и всегда должно быть равно 0 |
0x13 | WORD | Не используется NTFS и всегда должно быть равно 0 |
0x15 | BYTE | Дескриптор носителя (media descriptor) — для жестких дисков всегда равен 0xF8 |
0x16 | WORD | Не используется NTFS и всегда должно быть равно 0 |
0x18 | WORD | Количество секторов на дорожку |
0x1A | WORD | Количество головок |
0x1C | DWORD | Количество скрытых секторов |
0x20 | DWORD | Не используется NTFS и всегда должно быть равно 0 |
0x24 | DWORD | Не используется NTFS и всегда должно быть равно 0 |
0x28 | 8 байт | Общее количество секторов (total sector) |
0x30 | 8 байт | Логический номер кластера, с которого начинается MFT |
0x38 | 8 байт | логический номер кластера, с которого начинается зеркало MTF |
0x40 | DWORD | Количество кластеров на сегмент (File Record Segment) |
0x44 | DWORD | Количество кластеров на блок индексов (index block) |
0x48 | 8 байт | Серийный номер тома |
0x50 | DWORD | Контрольная сумма (0 — не подсчитывать). |
0x54 | 426 байт | Код самозагрузки (Bootstrap Code) |
0x01FE | WORD | Сигнатура 55 AA |
Техника восстановления загрузочного сектора
Осознавая значимость загрузочного сектора, операционная система Windows NT при форматировании диска создает его зеркальную копию (однако делает она это только на разделах NTFS). Для различных версий Windows расположение резервной копии загрузочного сектора различно. Так, Windows NT 4.0 располагает ее в середине логического диска, a Windows 2000 — в последнем секторе раздела. Если таблица разделов уцелела, то для восстановления загрузочного сектора достаточно просто перейти в начало следующего раздела и отступить на сектор назад (Windows 2000) или поделить количество секторов логического диска пополам (с округлением в нижнюю сторону) и перейти к сектору с полученным номером, дав редактору диска команду GO (Windows NT 4.0).
Если таблица разделов разрушена, то найти резервную копию загрузочного сектора можно глобальным поиском (ищите строку NTFS
по смещению 3 от начала сектора). Поскольку положение копии фиксировано и отсчитывается от начала логического диска, мы можем с абсолютной уверенностью определить границы раздела. Предположим, что копия загрузочного сектора найдена в секторе 1289724
, а поле NumberSectors
содержит значение 12289661
. Тогда номер конечного сектора раздела равен 1289724
, а номер стартового сектора можно вычислить следующим образом: 1289724 - 12289661 == 63
. Поскольку загрузочный сектор расположен на расстоянии одной головки от таблицы разделов, что соответствует значению SectorPerTrack
, мы сможем восстановить и ее.
Если резервных копий загрузочного сектора нет, его придется реконструировать вручную. К счастью, это совсем не так сложно, как может показаться на первый взгляд. В поле идентификатора производителя заносится строка NTFS
(обратите внимание, что на конце этой строки должны быть четыре пробела). Поля, задающие количество секторов на дорожке и количество головок, заполняются, исходя из текущей геометрии диска. Количество скрытых секторов (то есть количество секторов, расположенных между началом раздела и загрузочным разделом) равно количеству головок. Общее количество секторов в разделе вычисляется на основании его размера (если точный размер не известен, берите значение с запасом).