Не удалось изменить записи файлов в основной таблице файлов (MFT) NTFS - PullRequest
1 голос
/ 13 июля 2011

Я пишу программу для удаления файла и всех связанных с ним атрибутов (в том числе 0x30 $ FILE_NAME, 0x80 $ DATA, 0x90 $ INDEX_ROOT и 0xA0 $ INDEX_ALLOCATION и т. Д.) В томе NTFS в Windows.

Теперь я могу найти позицию записи файла для любого файла.Я несколько раз перезаписываю запись файла, чтобы предотвратить восстановление, а затем возвращаю основную информацию, которая будет иметь запись файла (то есть заголовок стандартного атрибута первого атрибута «0x10 $ STANDARD_INFORMATION»).

Я использовал WriteFile () - записывает запись файла , и возвращаемое значение указывает на то, что функция выполнена успешно.После этого откройте диск, чтобы увидеть необработанные данные WinHex. Я вижу, что Запись файла на самом деле изменена .

Но проблема в том, что после удаления еще двух или трех файлов предыдущий файлЗапись файла вновь появилась , как будто я никогда ничего с ней не делал.

Я думаю, что это может быть механизм восстановления управления файлами Windows.Интересно, есть ли какой-нибудь метод для успешного изменения Файловой записи без ее восстановления Windows.

PS Я использовал DeleteFile () , чтобы позаботиться о дереве B + идругие вещи, прежде чем я изменю запись файла вручную.

1 Ответ

3 голосов
/ 23 августа 2011

Вы уверены, что запись MFT была удалена? Потому что если это так, то файл не появится снова.

Проверьте свои расчеты положения записи MFT (от VCN до фактического CN и номера сектора). Кроме того, существует $ MFTMirror, вы должны проверить, существует ли дублирующая копия записи MFT (для рассматриваемого файла) в $ MFTMirror ... если да, то вам следует стереть даже эту запись.

Если бы вы могли поделиться своим кодом для локатора записи MFT (скорее всего, в этом-то и проблема) для файла ... Я мог бы вам помочь.

...