Крис Касперски - Восстановление данных. Практическое руководство
| | 0f | 765 0 1|1023 254 63| 12289725| 17687565|
| | 00 | 0 0 0| 0 0 0| 0| 0|
| | 00 | 0 0 0| 0 0 0| 0| 0|
==================================================================
LBN 12289725 [C 765, H 0, S 1]
==================================================================
Extended Boot Record
==================================================================
| B | FS TYPE | START | END | | |
| F | (hex) | C H S| C H S| RELATIVE | TOTAL |
==================================================================
| | 07 | 765 1 1|1023 254 63| 63| 8193087|
| | 05 |1023 0 1|1023 254 63| 8193150| 4096575|
| | 00 | 0 0 0| 0 0 0| 0| 0|
| | 00 | 0 0 0| 0 0 0| 0| 0|
==================================================================
LBN 20482875 [C 1275, 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| 4096512|
| | 05 |1023 0 1|1023 254 63| 12289725| 5397840|
| | 00 | 0 0 0| 0 0 0| 0| 0|
| | 00 | 0 0 0| 0 0 0| 0| 0|
==================================================================
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, а команда C: вызовет ошибку. Искажение таблицы разделов не приводит к немедленному изменению объема уже отформатированных томов, так как эта информация хранится в загрузочном секторе (boot sector). Однако при последующим переформатировании произойдет затирание данных из соседнего раздела, или же текущий раздел окажется усеченным. Кстати говоря, если расширенный раздел указывает сам на себя или на один из предшествующих разделов в цепочке, то все известные мне операционные системы наглухо зависнут еще на этапе загрузки, даже если диск подключен "вторым". Чтобы исправить ситуацию, необходимо запустить редактор диска или другую утилиту, а для этого необходимо загрузить операционную систему! Существует несколько путей выхода из этой, казалось бы, неразрешимой ситуации. Самый простой вариант — горячее подключение диска "на лету" с последующей работой с ним через BIOS или порты ввода/вывода. Если и диск, и материнская плата переживут это (а для устройств IDE подключение "на лету" представляется довольно жестким испытанием), то вы сможете запустить доктора и работать с диском на физическом уровне. Другой, чисто хакерский, путь — пропатчить MS-DOS, изменив сигнатуру 55h AAh на какое-нибудь другое значение, тогда она не сможет распознать таблицу разделов и, соответственно, не станет ее анализировать. Как вариант, можно записать в boot-сектор дискеты специально подготовленную программу, которая обнуляет MBR или искажает сигнатуру, расположенную в его конце. Просто загрузитесь с нее и все!
Воспользовавшись любым редактором диска (например, 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 "Магическое число" — сигнатура 55h AAh, которое указывает, что данный сектор представляет собой MBRПервые 1BBh байт занимают код и данные загрузчика, среди которых отчетливо выделяются текстовые строки.
ПримечаниеКстати говоря, локализовав сообщения загрузчика в национальных версиях Windows, например, в русской, Microsoft допустила грубейшую стратегическую ошибку. Ведь в BIOS нет никаких кириллических шрифтов, поэтому русские символы выглядят бессмысленной абракадаброй.
По смещению 1BBh расположен четырехбайтовый идентификатор диска, принудительно назначаемый Windows при запуске Disk Manager. Коварство Microsoft не знает границ! Еще со времен первых IBM PC (тогда они назывались XT) загрузчик владел первыми 1BEh байтами MBR, и достаточно многие загрузчики (и вирусы!) использовали эти байты на полную катушку. Нетрудно сообразить, что произойдет, если внутрь загрузчика вдруг запишется идентификатор. Это убьет его! Поэтому байты 1BBh–1BEh лучше не трогать.
Со смещения 1BEh начинается таблица разделов, представляющая собой массив из четырех записей типа partition. Каждая из этих записей описывает свой логический диск, что позволяет нам создавать до четырех разделов на каждом HDD. Формат записи таблицы разделов представлен в табл. 5.2. Динамические диски, впервые появившиеся в Windows 2000, хранятся в базе данных Менеджера Логических Дисков (Logical Disk Manager Database), и в таблице разделов присутствовать не обязаны.
Таблица 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 Количество секторов разделаТаблица 5.3. Возможные значения Boot ID