90H类型属性即$INDEX_ROOT,是索引根属性,该属性是实现NTFS的B+树索引的根节点,它总是常驻属性。该属性没有最大最小长度限制。属性结构如下:

标准属性头

索引根

索引头

索引项

索引项

...

索引根

索引根的描述见表4-67。

表4-67 索引根描述

字节偏移 字段长度(字节) 描述
标准属性头(已分析过)
0x00 4 属性类型
0x04 4 校对规则
0x08 4 每个索引缓冲区的分配大小(字节数)
0x0C 1 每个索引缓冲区的簇数
0x0D 3 无意义(填充到属性长度能被8整除)

索引头

索引头的描述见表4-68。

表4-68 索引头描述

字节偏移 字段长度(字节) 描述
0x00 4  第一个索引项的偏移
0x04 4  索引项的总大小
0x08 4  索引项的分配大小
0x0C 1  标志:当该字节为00时,表示其为小索引(适合于索引根);当该字节为01时,表示其为大索引(适合于索引分配)
0x0D 3  无意义(填充到属性长度能被8整除)

索引项

索引头后面有着不同长度的索引项的序列,由一个带有最后一个索引项标志的特殊索引项来结束。当一个目录比较小,可以全部存储在索引根属性中时,该目录就只需要这一个属性来描述。而如果目录太大不能全部存储在索引根中时,就会有两个附加的属性出现:一个是索引分配属性,描述B+树目录的子节点;另一个是索引位图属性,描述索引块的索引分配属性使用的虚拟簇号。根目录$Root包含它自身的一个索引项。常用索引项见表4-69。

表4-69 常用索引项

90H($INDEX_ROOT)属性分析-数据恢复迷

索引项的结构见表4-70。

表4-70 索引项描述

字节偏移 字段长度(字节) 描述
0x00 8 该文件的MFT参考号
0x08 2 索引项的大小(相对索引项开始的偏移)
0x0A 2 文件名属性体大小
0x0C 2 索引标志:此处为1表示这个索引项包含子节点;为2表示这是最后一个项
0x0E 2 用0填充,无意义
0x10 8 父目录的MFT文件参考号
0x18 8 文件创建时间
0x20 8 文件最后修改时间
0x28 8 文件记录最后修改时间
0x30 8 文件最后访问时间
0x38 8 文件的分配大小
0x40 8 文件的实际大小
0x48 8 文件标志
0x50 1 文件名的长度
0x51 1 文件名的命名空间
0x52 2F 文件名
2F+0x52 P 填充到能被8整除(无意义)
P+2F+0x52 8 子节点的索引所在的VCN(需要有子节点时才有)

90H属性的例子如图4-428所示。

90H($INDEX_ROOT)属性分析-数据恢复迷

图4-428 90H属性的例子