File 了解NTFS中的$ATTRIBUTE_列表

File 了解NTFS中的$ATTRIBUTE_列表,file,parsing,attributes,ntfs,ntfs-mft,File,Parsing,Attributes,Ntfs,Ntfs Mft,我正在检查NTFS(新技术文件系统),一直在试图找出$ATTRIBUTE_LIST属性。从中,很少会遇到$ATTRIBUTE_列表,它们仅在MFT表空间不足时使用。但是,通过查看以下解析器,我发现它们确实可以解析它: jkdefragv3.36源代码(通过谷歌搜索找到) 通过查看这些,我得出了以下流程图: (在“Has$ATTRIBUTE_LIST”的右边应该有一个yes) 我想参考流程图右侧的两个流程。是否正确: 只有当属性的FRN不同于包含属性列表FRN的文件时,才会分析该属性

我正在检查NTFS(新技术文件系统),一直在试图找出$ATTRIBUTE_LIST属性。从中,很少会遇到$ATTRIBUTE_列表,它们仅在MFT表空间不足时使用。但是,通过查看以下解析器,我发现它们确实可以解析它:

  • jkdefragv3.36源代码(通过谷歌搜索找到)
通过查看这些,我得出了以下流程图:

(在“Has$ATTRIBUTE_LIST”的右边应该有一个yes)

我想参考流程图右侧的两个流程。是否正确:

  • 只有当属性的FRN不同于包含属性列表FRN的文件时,才会分析该属性
  • 属性添加到文件中时,FRN列在属性中,而不是包含属性列表的FRN?或者,属性中列出的FRN是否仅用于此文件记录的属性(而不是真正的文件)
  • 只有在MFT桌空间不足时才使用

    这是不对的。当MFT条目太大而无法容纳所有属性时,将使用它们

    只有当属性的FRN不同于包含属性列表FRN的文件时,才会分析该属性

    我想这取决于操作系统/软件,但这有点道理。虽然
    $ATTRIBUTE_LIST
    必须包含所有属性的列表,但您可以通过简单地解析整个MFT条目来枚举“本地”属性。例如,我的软件就是这样做的

    相反,您需要列表来确定“远程”属性存储在哪些其他MFT条目中

    或者,属性中列出的FRN是否仅用于此文件记录的属性(而不是真正的文件)

    编号包含在
    $ATTRIBUTE_列表
    属性中的MFT条目不包含
    $DATA
    属性,也没有
    $FILE_NAME
    属性。它不是一个文件,只是一个附加的MFT条目



    注意:我编辑了答案,因为我使用了“常驻”一词来表示基本MFT条目中的属性。但是,常驻属性的概念是不同的。

    属性头不能是非常驻的(由数据运行条目描述),因为它们是MFT结构的一部分,只有属性体可以是非常驻的并由数据运行条目描述;此外,非驻留属性体(包含数据运行)也不能是非驻留的,因为在属性头中没有这样的选项或第二个驻留位。因此,当所有标题本身不再适合MFT条目时,您需要一个
    $ATTRIBUTE_LIST
    属性来引用包含其余属性标题的MFT条目。
    $ATTRIBUTE_LIST
    条目指向扇区对齐MFT条目的扇区,该条目包含所描述的特定属性头(数据、文件名等)

    插入的
    $ATTRIBUTE_列表
    本身可以是非常驻的,这意味着,如果描述导致MFT条目溢出的属性数量的
    $ATTRIBUTE_LIST
    的常驻属性体对于MFT条目来说也太大,那么它可以是非常驻的,因此可以引用尽可能多的属性以及包含它们的MFT条目

    $ATTRIBUTE_LIST
    lowerstvcn
    成员在MFT条目因一个非常驻属性(其本身不能成为非常驻属性)中的大量数据运行条目而溢出(其中的标题不再适合)时使用;在这种情况下,它会在MFT条目中插入一个
    $ATTRIBUTE_LIST
    ,在属性列表中,将有两个条目具有相同的属性(流)类型和相同的属性(流)名称,但
    最低的VCN
    将不同。指向的MFT条目将包含具有该流名称的数据属性,并将覆盖数据运行的特定VCN范围(数据运行本身由运行条目中的LCN描述,其中每个运行具有不同的独立连续LCN范围,但实际上,数据运行条目本身描述了一个VCN从0到由所有LCN范围组成的群集总数的连续块;VCN根据运行条目分配)

    类似地,如果非驻留属性体变得过大的属性是
    $attribute_LIST
    本身,则您会得到另一个
    $attribute_LIST
    ,其中的条目指定了覆盖属性列表数据运行的MFT条目(每个MFT覆盖数据运行的特定VCN范围).这种情况极为罕见