0

我正在编写一个实用程序来解析 NTFS 中的 MFT。到目前为止,我已经编写了获取 1024 字节 MFT 记录并遍历其属性的代码。据我所知,MFT 从记录号 0x23 开始将记录分配给用户文件,所以我从 0x23 循环到 N 条记录。我想知道如何获得MFT的最后一条记录?是否有某种结束标记?我如何知道某条记录是否是最后一条记录,以便我可以停止循环遍历 MFT 记录。

任何帮助,将不胜感激。

4

2 回答 2

3

MFT 位置并不总是固定在卷上。您应该从引导扇区(卷的扇区 0,您可以在网上找到结构)获取起始 MFT 偏移量。

MFT 中的第一个文件是“$MFT”文件,它是整个 MFT 本身的文件记录。您可以像任何其他文件一样解析此文件的属性并获取它的数据运行列表。当您知道集群中每个片段的大小时,为最后一个片段的每个 1024 字节记录解析最后一个集群(尽管我相信分段的 MFT 很少见)。MFT 中的最后一条记录是该特定集群中标记为“FILE0”的最后一条记录,如果您遇到一个 1024 字节太远的空幻数。

或者你可以从它的属性中获取文件大小,并根据它有多少片段计算到 MFT 末尾的偏移量。然后从偏移量中减去 1024,您应该查看最后一个文件。

于 2013-09-09T06:30:11.573 回答
0

您可以使用名为NTFSInfo v1.0的免费 Windows Sysinternals 工具获取表的开始和结束 MFT 边界和 MFT 大小

于 2014-05-09T20:19:33.473 回答