Проблемы спасения ценных файлов с современных жестких дисков.
Сравнительно недавно жесткие диски стоили достаточно дорого, и был «экономический» интерес в их ремонте. На плате электроники использовали целую россыпь микросхем с низкой степенью интеграции и серийные комплектующие, над которыми имело смысл поработать с осциллографом, выискивая неисправный элемент. Но затем степень интеграции начала стремительно нарастать, производители перешли на заказные чипы, а цены на винчестеры упали, но сохранился большой интерес к восстановлению данных.
Специалисты-профессионалы по всему миру восстанавливают тысячи гигабайт ценной информации. Для выполнения этой работы каждому из них потребовалось несколько лет, чтоб изучить стандарты на накопители, их устройство, разобраться в структуре файловых систем, провести огромное количество инженерных исследований, написать программы и создать оборудование (хорошо если запорчена только информация, а аппаратная часть диска исправна, но достаточно часто неисправна и она).
Средства для восстановления служебной информации файловых систем и спасения ценных файлов обычно требуют больших материальных затрат, но если есть необходимость и желание, то можно создать свой программный инструмент практически без материальных затрат (потребуются лишь небольшие интеллектуальные усилия и знания служебных структур жестких дисков и файловых систем).
Средства для написания специальных программ
Написание специальных программ обычно осуществляют на ассемблере. Для упрощения процесса создания программ, в составе этих программ используют стандартные программы-функции BIOS. Программы BIOS являются низшим (физическим) уровнем стандартного ввода/вывода операционной системы. Программы "прошиты" в постоянном запоминающем устройстве ПЗУ BIOS (или флэш-памяти) и реализуют при своем выполнении функции управления внешними устройствами на физическом уровне. Ввод-вывод на физическом уровне осуществляется на уровне команд контроллеров внешних устройств, их программно-доступных регистров (с реализацией всех необходимых задержек и особенностей управления устройством).
Программы BIOS подробно описаны (как говорят, хорошо документированы). По ним изданы справочники в печатном и электронном виде. Набор, отладку и запуск программ на выполнение, удобно осуществлять с помощью специальных программ - профотладчиков (Debug, AFD и др.). Программы-профотладчики ориентированы на специалистов по ремонту и диагностированию персональных компьютеров, и хотя с точки зрения программистов, они обладают скромными функциональными возможностями, но для написания и выполнения небольших специальных программ их возможностей вполне достаточно.
Материнским платам с UEFI, не нужна BIOS, потому что в ней есть своя встроенная BIOS, называется — модуль поддержки совместимости. Поэтому те программы, которым для работы нужен был BIOS, спокойно могут работать и на компьютерах с UEFI.
Необходимый минимум знаний
Что же нужно знать для написания таких специальных программ? Необходимо следующее:
- знать примерно 10-20 простых команд ассемблера из базового набора команд семейства микропроцессоров (8086-Pentium 4) и наиболее простые виды адресации, используемые для указания операндов в командах;
- уметь пользоваться справочником по функциям BIOS;
- знать назначение основных программно-доступных регистров процессора, используемых при программировании;
- уметь пользоваться профотладчиком AFD (уметь использовать основные команды и функциональные клавиши);
- знать общую архитектуру IBM PC подобных компьютеров.
Прерывание Int 13h, функция 42h: расширенное чтение.
Функция осуществляет передачу секторов с заданной области диска в буфер памяти.
Перед вызовом прерывания требуется записать в регистры следующие значения:
• в АН — значение 42h;
• в DL — номер дисковода;
• в DS: SI — пакет дискового адреса.
После завершения операции функция возвращает в регистре АН состояние дисковой системы. В случае аварийного завершения выполнения функции поле счетчика блоков в пакете дискового адреса содержит число блоков, которые были успешно прочитаны (прочитаны до того, как произошла ошибка).
Прерывание Int 13h, функция 43h: расширенная запись.
Функция осуществляет передачу секторов из буфера памяти в заданную область диска. Запись данных проводится в режиме верификации, то есть после записи выполняется проверка секторов.
Перед вызовом прерывания требуется записать в регистры следующие значения:
• в АН — значение 43h;
• в AL — код режима записи (0 или 1 — запись без верификации, 2 — запись с верификацией);
• в DL — номер дисковода;
• в DS: SI — пакет дискового адреса.
После завершения операции функция возвращает в регистре АН состояние дисковой системы. В случае аварийного завершения выполнения функции поле счетчика блоков в пакете дискового адреса содержит число блоков, которые были успешно записаны (записаны до того, как произошла ошибка). Причиной аварийного завершения , данной функции может быть отсутствие у заданного устройства поддержки команды записи данных с верификацией. Проверить наличие поддержки записи с верификацией можно при помощи функции BIOS (48h).
Какие проблемы решают за счет использования таких программ ?
1. Восстановление системных областей (MBR, BOOT и GPT-структур). После высокоуровнего форматирования разделов HDD, cтруктуры MBR и BOOT являются константами. Их копируют в программки их восстановления (сектор в сектор).
2. С помощью таких программ можно «спасать» файлы используя знание структур файловых систем «вручную».
3. С помощью таких программ можно «вручную» восстанавливать правильность служебных структур файловых систем.
4. С помощью таких программ можно тестировать и проводить диагностику HDD и др. устройств, создавать условия для исследования процессов с помощью осцилографа и многое другое ...