Таблица MFT 0 сектор

Низкоуровневое программирование портов, микроконтроллеров и т.д.

Модератор: Andy

Ответить
Dr_Grizzly
Сообщения: 407
Зарегистрирован: 13 сен 2004, 12:05
Откуда: Курган
Контактная информация:

Всем привет! Появилась задача написать программу которая по команде должна убить данные на диске, на случай не прошенных гостей (т.е. максимально быстро). Вопрос в том, реально ли из под винды затереть mft таблицу путем указания головке с какого по какой сектор записать нули?

Был ли у кого такой опыт? Может еще варианты подскажете по убиванию винта программно?
Перед тем, как очищать загрузочный сектор, желательно убедиться в правильности определения его координат. Для этого после исправления команд, отвечающих за настройку “координат” сектора, нужно первую команду снова настроить на чтение сектора, то есть по адресу 100 записать “mov ah, 2”. Если из таблицы разделов, например, видно, что Hb = 1, Sb = 1, Cb = 0, то программа должна выглядеть следующим образом:

-u 100 l 14
2804:0100 B402 MOV AH,02
2804:0102 B001 MOV AL,01
2804:0104 B500 MOV CH,00
2804:0106 B101 MOV CL,01
2804:0108 B601 MOV DH,01
2804:010A B280 MOV DL,80
2804:010C BB0002 MOV BX,0200
2804:010F CD13 INT 13
2804:0111 E9ECFE JMP 0000
-

Тогда после ее выполнения командой “g =100” можно оценить правильность ввода координат, просмотрев результат считывания с помощью команды “d 200 l 200”. Последние байты загрузочного сектора должны содержать сообщения операционной системы типа “Invalid system disk” и имена системных файлов “Io.Sys” и “Msdos.Sys”, а в самом конце записана все та же сигнатура 55AA16.

После такой проверки можно предполагать, что координаты загрузочного сектора определены правильно. Для его очистки достаточно записать в сектор 512 нулевых байтов. Чтобы подготовить образ очищенного загрузочного сектора в памяти, надо выполнить команду отладчика “f 200 l 200 0”. После этого можно настроить программу на запись (то есть по адресу 10016 ввести команду “mov ah, 03”) и выполнить ее. Теперь информация о том, что раздел содержал файловую систему FAT 32, утрачена окончательно и бесповоротно.
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто! ;) Да! Кстати! Ctrl+V реально вставляет!!! ХDD
Аватара пользователя
somewhere
Сообщения: 1858
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

Реально, но нужно чтобы программа работала в кольце защиты < 3. Для этого необходимо получить соответствующие привелегии, например, проинсталлировавшись как драйвер или служба. Остальная работа будет завязана на функциях WinAPI по работе с запоминающими устройствами.
Вышеприведенные команды и вызовы прерывания ДОС по работе с диском в Windows не имеют силы, т.к. порты, через которые среда эмуляции общается с диском - являются защищенным виртуальным адресным пространством. Примечательно, что для чтения секторов никаких особых привелегий не требуется.
Dr_Grizzly
Сообщения: 407
Зарегистрирован: 13 сен 2004, 12:05
Откуда: Курган
Контактная информация:

А еще тогда вопрос - таблица Fat32 и NTFS находятся в одном и том же секторе? Т.е я не должен проверять что за таблица размещений используется на системном диске?
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто! ;) Да! Кстати! Ctrl+V реально вставляет!!! ХDD
Ответить