Восстановление информации своими руками


Master boot record – техника восстановления - часть 4


Только учтите, что Windows хранит копию boot сектора, которая в зависимости от версии может быть расположена либо в середине раздела, либо в его конце. Другие копии могут находится в архивных файлах и файле подкачке. Кстати говоря, посмотрите – не содержится ли среди них ничего удобоваримого –  Как отличить копию сектора от оригинала? Элементарно, Ватсон! Если это подлинник вслед за ним пойдут служебные структуры файловой системы (в частности, для NTFS таблица MFT, каждая запись которой начинается с легко узнаваемой строки FILE*). Собственно говоря, поскольку служебные структуры файловой системы обычно располагаются на более или менее предсказуемом смещении относительно начала раздела, то отталкиваясь от их "географического" расположения, мы может установить размеры каждого из логических дисков, даже если все-все-все boot/partition уничтожены.

Что произойдет, если границы разделов окажутся определенными неверно? Если мы переборщим, увеличив размер раздела сверх необходимо, все будет нормально работать, поскольку карта свободного пространства хранится в специальной структуре (у NTFS это файл $bitmap, а у FAT13/32 – непосредственно сама FAT-таблица) и "запредельные" сектора будут добавлены только после переформатирования раздела. Если все что нам нужно – это скопировать данные с восстанавливаемого диска на другой носитель, но возиться с подгонкой параметров partition table не нужно! Распахните ее на весь физический диск и дело с концом!

Естественно, такой способ восстановления подходит только для первого раздела диска, а для всех последующих нам потребуется определить стартовый сектор. Это определение должно быть очень точным, поскольку все структуры файловой системы адресуются от начала логического диска и ошибка в один-единственный сектор сделает весь этот тонкий механизм полностью неработоспособным. К счастью, некоторые из структур ссылаются сами на себя, давая нам ключ к разгадке. В частности, файлы $mft/$mftmiff содержат номер своего первого кластера. Стоит нам найти первую запись FILE*, как мы узнаем на каком именно секторе мы сейчас находится (конечно, при условии, что сумеем определить количество секторов на кластер, но это уже другая тема – см. загрузочный сектор – базовые концепции).




Начало  Назад  Вперед



Книжный магазин