2011-07-13 39 views
1

我正在編寫一個程序以刪除文件和相關的所有屬性(包括0x30 $ FILE_NAME,0x80 $ DATA,0x90 $ INDEX_ROOT和0x​​A0 $ INDEX_ALLOCATION,等等)在Windows中的NTFS卷中。未能修改NTFS的主文件表(MFT)中的文件記錄

我現在可以找到文件記錄到任何文件的位置。爲了防止恢復,我會多次覆蓋文件記錄,然後放回文件記錄將具有的基本信息(即第一個屬性「0x10 $ STANDARD_INFORMATION」的標準屬性標題)。

我用WriteFile()寫入文件記錄,並且返回的值表示函數成功。 之後,通過WinHex打開磁盤查看原始數據我可以看到文件記錄實際上是修改爲

但問題是,當我刪除了其他兩個或三個文件,以前的文件的文件記錄再現,就好像我從來沒有做過任何它。

我想這可能是Windows文件管理的一些恢復機制。我想知道是否有任何方法可以在沒有Windows恢復的情況下成功修改文件記錄。

P.S.在我手動修改文件記錄之前,我使用了DeleteFile()來照顧B +樹和其他東西。

回答

3

您確定MFT記錄被刪除了嗎?因爲如果是這樣,那麼文件將不會再出現。

檢查您的MFT記錄位置計算(從VCN到實際的CN和扇區號)。 另外,還有一個$ MFTMirror,您應該檢查$ MFTMirror中是否存在MFT記錄的重複副本(對於該文件)...如果是,那麼您應該擦除該記錄。

如果您可以共享您的代碼爲MFT記錄定位器(最可能這是問題是)的文件...我可以幫助你更多。