Восстановление данных. Практическое руководство
LBN 24579450 [С 1530, H 0, S 1]
==================================================================
Extended Boot Record
==================================================================
| B | FS TYPE | START | END | | |
| F | (hex) | C H S| C H S| RELATIVE | TOTAL |
==================================================================
| | 07 |1023 1 1|1023 254 63| 63| 5397777|
| | 00 | 0 0 0| 0 0 0| 0| 0|
| | 00 | 0 0 0| 0 0 0| 0| 0|
| | 00 | 0 0 0| 0 0 0| 0| 0|
==================================================================
Если таблица разделов повреждена, логические диски, скорее всего, будут полностью недоступны — они не будут отображаться ни Проводником Windows (Windows Explorer), ни файловым менеджером FAR, а команда
вызовет ошибку. Искажение таблицы разделов не приводит к немедленному изменению объема уже отформатированных томов, так как эта информация хранится в загрузочном секторе (boot sector). Однако при последующим переформатировании произойдет затирание данных из соседнего раздела, или же текущий раздел окажется усеченным. Кстати говоря, если расширенный раздел указывает сам на себя или на один из предшествующих разделов в цепочке, то все известные мне операционные системы наглухо зависнут еще на этапе загрузки, даже если диск подключен "вторым". Чтобы исправить ситуацию, необходимо запустить редактор диска или другую утилиту, а для этого необходимо загрузить операционную систему! Существует несколько путей выхода из этой, казалось бы, неразрешимой ситуации. Самый простой вариант — горячее подключение диска "на лету" с последующей работой с ним через BIOS или порты ввода/вывода. Если и диск, и материнская плата переживут это (а для устройств IDE подключение "на лету" представляется довольно жестким испытанием), то вы сможете запустить доктора и работать с диском на физическом уровне. Другой, чисто хакерский, путь — пропатчить MS-DOS, изменив сигнатуруC:
на какое-нибудь другое значение, тогда она не сможет распознать таблицу разделов и, соответственно, не станет ее анализировать. Как вариант, можно записать в boot-сектор дискеты специально подготовленную программу, которая обнуляет MBR или искажает сигнатуру, расположенную в его конце. Просто загрузитесь с нее и все!55h AAh
Воспользовавшись любым редактором диска (например, Microsoft Disk Probe из комплекта Resource Kit), считаем первый сектор физического диска. Он должен выглядеть приблизительно так, как показано на рис. 5.4.
Рис. 5.4. Внешний вид MBR
Не правда ли, MBR выглядит как знаменитая Матрица? Ее формат кратко описан в таблице 5.1.
Таблица 5.1. Формат MBR
Смещение Размер Описание 0x000
перемен. Код загрузчика 0x1BB
4h
Идентификатор диска 0x1BE
10h
Partition 1 0x1CE
10h
Partition 2 0x1DE
10h
Partition 3 0x1EE
10h
Partition 4 0x1FE
0x2
"Магическое число" — сигнатура , которое указывает, что данный сектор представляет собой MBR55h AAh
Первые
байт занимают код и данные загрузчика, среди которых отчетливо выделяются текстовые строки.1BBh
ПримечаниеКстати говоря, локализовав сообщения загрузчика в национальных версиях Windows, например, в русской, Microsoft допустила грубейшую стратегическую ошибку. Ведь в BIOS нет никаких кириллических шрифтов, поэтому русские символы выглядят бессмысленной абракадаброй.
По смещению
расположен четырехбайтовый идентификатор диска, принудительно назначаемый Windows при запуске Disk Manager. Коварство Microsoft не знает границ! Еще со времен первых IBM PC (тогда они назывались XT) загрузчик владел первыми1BBh
байтами MBR, и достаточно многие загрузчики (и вирусы!) использовали эти байты на полную катушку. Нетрудно сообразить, что произойдет, если внутрь загрузчика вдруг запишется идентификатор. Это убьет его! Поэтому байты1BEh
–1BBh
лучше не трогать.1BEh
Со смещения
начинается таблица разделов, представляющая собой массив из четырех записей типа1BEh
. Каждая из этих записей описывает свой логический диск, что позволяет нам создавать до четырех разделов на каждом HDD. Формат записи таблицы разделов представлен в табл. 5.2. Динамические диски, впервые появившиеся в Windows 2000, хранятся в базе данных Менеджера Логических Дисков (Logical Disk Manager Database), и в таблице разделов присутствовать не обязаны.partition
Таблица 5.2. Формат записи таблицы разделов
Смещение Размер Описание 000
1ВЕ
1CE
1DE
1EE
byte
Флаг активного загрузочного раздела (Boot Indicator). — загрузочный раздел,80h
— незагрузочный раздел00h
001
1BF
1CF
1DF
1EF
Стартовая головка раздела 002
1C0
1D0
1E0
1F0
byte
Стартовый сектор раздела (биты 0–5). Старшие биты стартового цилиндра (биты 6–7) 003
1C1
1D1
1E1
1F1
byte
Младшие биты стартового цилиндра (биты 0–7) 004
1C2
1D2
1E2
1F2
byte
Идентификатор системы (Boot ID), см. табл. 5.3 005
1C3
1D3
1E3
1F3
byte
Конечная головка раздела 006
1С4
1D4
1E4
1F4
byte
Конечный сектор раздела (биты 0–5). Старшие биты конечного цилиндра (биты 6–7) 007
1C5
1D5
1E5
1F5
Младшие биты конечного цилиндра (биты 0–7) 008
1C6
1D6
1E6
1F6
dword
Смещение раздела относительно начала таблицы разделов в секторах 00C
1CA
1DA
1EA
1FA
dword
Количество секторов раздела