Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #46, СЕНТЯБРЬ 2004 г.

Откопай и оживи!

Крис Касперски

Спецвыпуск Xakep, номер #046, стр. 046-070-5


После повторной перезагрузки винчестер обретет новую жизнь. Или не обретет :).

Разбитые диски одолеть значительно сложнее. Как минимум, необходимо определить границы первичного раздела и реконструировать ссылку на расширенный раздел. Это можно сделать как автоматически, например, утилитой DiskEditor от PhysTechSoft (не путать с Disk Editor от Symantec!), так и вручную. Будем отталкиваться от того факта, что в начале каждого раздела расположен boot-сектор. Предположим, что он не затерт, тогда начало следующего раздела можно идентифицировать по его имени (например, "NTFS"), находящемуся по смещению 3 относительно начала сектора. В меню "Tools" выбираем "Search Sectors" и заполняем поля появившегося диалогового окна в соответствии с приведенным рисунком, подставляя вместо "Last sector to search" размер винчестера в секторах.

После достаточно продолжительного шуршания диском, когда наконец требуемый сектор будет найден, необходимо переключиться в режим "NTFS Bootsector", убедившись в правдоподобности всех полей и в том, что это не зеркальная копия boot-сектора основного раздела. Если все поля правдоподобны и не совпадают с полями основного boot-сектора, отними от него удвоенное значение "Sector per Track" (это можно узнать в Drivers -->  Volume Information) и уменьши его еще на единицу. В результате получится размер первого раздела в секторах. Занеси его в "Total Sectors", а затем заполни поля Ending Head/Sector/Cylinder, вычисляя их на основе Total Sectors, с одной стороны, и значений Sector per Track, Track per Cylinder – с другой.

Теперь переместим "Partition Table Index" на Partition 2, "System ID" на Extended (или Extended LBA, если требуется включение поддержки больших дисков), в поле Relative Sector занесем сектор с найденным boot'ом, увеличив его на единицу, а также заполним поля Staring Head/Sector/Cylinder, вычисляя их на основе Relative Sector за вычетом значения Sector per Track (вспомни вышеприведенную формулу). При стандартной разбивке поля Ending Head/Sector/Cylinder указывают на конец диска и заполняются элементарно.

После перезагрузки нам останется только помолиться и в консоли восстановления отдать команду FIXMBR. Перезагрузка. Все потерянные логические разделы должны появиться вновь. Если же этого не произошло… Тогда обращайся за помощью к профессионалам!

В зависимости от версии операционной системы копия boot-сектора хранится либо в середине, либо в конце раздела. Для ее поиска можно воспользоваться функций "Search Sector" в меню «Tools», заполнив все поля диалогового окна, как на иллюстрации внизу врезки. Первый же найденный сектор (при условии что он не выходит за пределы логического диска) и будет искомой резервной копией.

Запиши сектор на диск (File -->  Save as), а затем, вернувшись к разрушенному boot-сектору (Sector -->  Read --> Sector:0, View -->  Partition Table, Relative Sector: GO), считай только что сохраненный сектор с диска (File -->  Open File). Сохрани изменения на диск (Sector -->  Write). Теперь осталось лишь войти в консоль восстановления и дать команду FIXBOOT для записи boot-загрузчика. Перезагрузка… Если все было сделало правильно, диск заработает как миленький.

Назад на стр. 046-070-4  Содержание  Вперед на стр. 046-070-6