3

在网上徘徊寻找如何读/写 MFT 的解释时,我发现了以下部分:( http://www.installsetupconfig.com/win32programming/1996%20AppE_apnilife.pdf )

如果 NtfsProtectSystemFiles 设置为 FALSE,则可以打开特殊文件。然而,尝试这样做有一些缺点:因为许多特殊文件在挂载卷时以特殊方式打开,它们不准备处理调用 ZwReadFile 产生的 IRP_MJ_READ 请求,并且系统如果收到这样的请求就会崩溃。这些特殊文件可以通过用 ZwCreateSection 和 ZwMapViewOfSection 映射特殊文件,然后读取映射的数据来读取。另一个问题是一些特殊文件没有准备好处理在关闭文件对象的最后一个句柄时生成的 IRP_MJ_CLEANUP 请求,如果收到这样的请求,系统就会崩溃。

  1. “他们没有准备好处理 IRP_MJ_READ 请求”是什么意思,需要什么样的准备?什么是 IRP_MJ_READ?
  2. “用 ZwCreateSection 和 ZwMapViewOfSection 映射特殊文件,然后读取映射的数据” 那如何解决问题?
  3. 这是什么意思“文件没有准备好处理在文件对象的最后一个句柄关闭时生成的 IRP_MJ_CLEANUP 请求”又是什么准备?什么是 IRP_MJ_CLEANUP?
  4. “将特殊文件的打开句柄复制到一个永不终止的进程中”这是如何解决问题的?
4

1 回答 1

2

那是旧数据(从 1996 年开始)。而且有点不正确。从那时起,世界一直在前进。

您可以尝试打开 \$MFT 来读取 MFT,但获取正确的访问位可能会有问题。你也可以写它们,但这真的是在玩火。文件系统不希望在没有它参与的情况下修改它的数据结构。

最好打开原始分区并直接遍历磁盘结构。

于 2012-07-26T19:24:18.683 回答