NTFS文件系统
+ -

NTFS文件系统数据属性

2021-07-01 131 0

每个文件都具有数据属性($DATA),数据属性的内容用于存储文件的内容,数据内容的大小最小为0,最大在理论上无限制。

数据属性的类型

数据属性的类型值为:0x00000080.

数据属性($DATA)的多样性

一个文件可以具有可以有没有名字的数据属性(一些工具命名为”$DATA”),也可以有名字的数据属性(文件的附加属性,如文件的摘要)。
数据属性不但可以是常驻的,也可以有非常驻的。
如果文件的数据内容不超过约700字节,就使用常驻数据属性存储,数据直接存储在MFT中,反之使用非常驻性属性存储。

安全性

数据属性可以通过加密以阻止授权的访问,或者对数据进行压缩以节省空间。数据的加密或压缩都会在$DATA属性中设置相应的标志,如果使用了加密,则密钥存储在$LOGGED_UTILITY_STREAM中,当一个文件有多个$DATA属性时,这些$DATA属性使用同一个密钥。

非驻属性

下面还是以$MTF的数据属性来解释数据属性

非常驻数据属性
查看0x15000100地址,以此为基要地址的内容如下:
08~08处为0x01,说明为非常驻性类型

  • 00~03:0x00000080,数据属性
  • 04~07:0x00000048,属性的总长度为0x48字节
  • 08~08:0x01,01-非常驻
  • 09~09:0x00 属性名长度为0
  • 0A~0B:0x40,属性名位置偏移
  • 0C~0D:0x0000,表示非压缩、加密、稀蔬
  • 0E~0F:0x01属性ID标识
  • 10~17:0x0簇流的起始VCN(虚拟簇号:Virtual Cluster Number)
  • 18~1F:0x3F簇流的结束VCN
  • 20~21:0X40簇流列表相对于本属性头起始处的偏移
  • 22~23:0x00,压缩单位
  • 24~27:0x00000000,未用
  • 28~2F:0x40000为属性内容分配的空间大小的字节数,是簇的整数倍
  • 30~37:0x40000该属性的内容实际占用字节数,即属性的实际有效大小
  • 38~3F:0x40000,属性内容初始大小
  • 0x40:值为31 40 00 55 01 00 FF FF

从0x20~0x21可知,0x40为簇流列表相对于本属性头起始处的偏移,那么簇流的结构是怎么样的呢?
簇流的结构分为三部分:
第一个字节为第一部分,其低4位说明第二部分的字节长度,高4位的有效位说明第三部分的字节数。
这里为0x31,则第二部分的字节数为1,第三部分的字节数为3。
第二部分从第二个字节开始,说明簇流的长度,即该簇流包含的簇数。
这里为0x40,说明数据长度为512x8 x 0x40 = 0x40000字节数,这个数那刚好等于0x30~0x37该属性的内容实际占用字节数,即属性的实际有效大小
第三部分长度跟在第二部分之后,长度为第一部分的高4位描述的字节数,用于说明簇流的起始簇号。
这里可以看到,字节数为3个,即值为0x015500,即起始地址为:512 x 8 x 0x000155 = 0x15500000,而这个地址刚好是MFT的起始地址。因为$MFT也是以文件进行管理的,$MFT这个文件的数据就是$MFT里的数据。

0 篇笔记 写笔记

NTFS文件系统数据属性
每个文件都具有数据属性($DATA),数据属性的内容用于存储文件的内容,数据内容的大小最小为0,最大在理论上无限制。数据属性的类型数据属性的类型值为:0x00000080.数据属性($DATA)的多样性一个文件可以具有可以有没有名字的数据属性(一些工具命名为”$DATA”),也可以有名字的数据属......
作者信息
我爱内核
Windows驱动开发,网站开发
好好学习,天天向上。
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!