如何获得最新的NTFS MFT记录?

时间:2013-09-05 18:14:15

标签: windows filesystems ntfs ntfs-mft

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

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

您可以使用名为NTFSInfo v1.0

的免费Windows Sysinternals工具获取表格的开始和结束MFT边界以及MFT大小