数据运行解析例子
本帖最后由 zhaoliangcn 于 2009-5-10 21:21 编辑共六个例子,从ntfs英文帮助文档翻译过来的。没有太多时间,分六次发上来吧。
例子1:正常,无碎片的文件。
数据运行:
21 18 34 56 00
21 18 34 56 - 00重组后
运行1:
.头 = 0x21- 1字节的长度,2字节的偏移
.长度 = 0x18- (1字节)
.偏移 = 0x5634 (2字节)
运行2:
.头 = 0x00- 表示运行结束
总结:
0x18簇,位置在虚拟簇号为0x5634的区域中,因此,
数据1是一个无碎片的文件,大小是0x18簇,起始于虚拟簇号0x5634
例子2:正常、离散的文件
数据运行:
.31 38 73 25 34 32 14 01 E5 11 02 31 42 AA 00 03 00
.31 38 73 25 34 - 32 14 01 E5 11 02- 31 42 AA 00 03 - 00重组之后
运行1:
.头 = 0x31 - 1字节的长度,3字节的偏移
.长度 = 0x38
.偏移 = 0x342573
运行2:
.头 = 0x32 - 2字节的长度,3字节的偏移
.长度 = 0x114
.偏移 = 0x363758 (0x211E5相对于0x342573)
运行3:
.头 = 0x31 - 1字节的长度,3字节的偏移
.长度 = 0x42
.偏移 =0x393802(0x300AA相对于0x363758)
运行4:
.头 = 0x00 -运行结束
总结:
0x38簇存储于虚拟簇0x342573
0x114簇存储于虚拟簇0x363758
0x42簇存储于虚拟簇0x393802
因此,数据2是一个离散的文件,大小为0x18E簇,数据区位于虚拟簇0x342573,0x363758和0x393802 例子3:正常,杂凑的文件
数据运行:
.11 30 60 21 10 00 01 11 20 E0 00
.11 30 60- 21 10 00 01 - 11 20 E0 - 00 (重组)
运行1:
.头 = 0x11 - 1字节的长度,1字节的偏移
.长度 = 0x30
.偏移 = 0x60
运行2:
.头 = 0x21 - 1字节的长度,2字节的偏移
.长度 = 0x10
.偏移 = 0x160 (0x100 相对于 0x60)
运行3:
.头 = 0x11 - 1字节的长度,1字节的偏移
.长度 = 0x20
.偏移 = 0x140 (-0x20相对于0x160)
运行4:
.头 = 0x00 - 结束
总结:
0x30簇存储于 虚拟簇 0x60
0x10簇存储于 虚拟簇 0x160
0x20簇存储于 虚拟簇 0x140
因此,数据3是一个情况很差的离散文件,数据区位于虚拟簇0x60,0x160,和0x140,另外,第三块数据位于物理存储区域第一块数据和第二块数据之间(第三块数据有一个负的偏移量,因此将它置于前面的运行之前) 先休息休息休息休息休息休息休息休息休息休息笑嘻嘻 感谢楼主!!!!!!!!!!!!!!!! 例子4: 稀疏、非离散的文件
数据运行:
.11 30 20 01 60 11 10 50 00
.11 30 20 - 01 60 - 11 10 30 -00 (重组)
运行1:
.头 = 0x11 -1字节的长度,1字节的偏移
.长度 = 0x30
.偏移 = 0x20
运行2:
.头 = 0x01 -1字节的长度,0字节的偏移(稀疏)
.长度 = 0x60
.偏移 = N/A
运行3:
.头 = 0x11 -1字节的长度,1字节的偏移
.长度 = 0x10
.偏移 = 0x30
运行4:
.头 = 0x00 - 结束
总结:
.0x30簇位于 簇0x20
.0x60簇 (稀疏)
.0x10簇位于 簇0x50
因此,数据4是一个稀疏,非离散的文件,大小为0xA0簇,数据区位于0x20和0x50,该文件中部的0x60 簇有一个稀疏的部分,它并不占据存储空间,但是它代表了0x60个虚拟簇的大小。 回复 2# zhaoliangcn
请问楼主能不能解释一下为什么长度0x20偏移 就是0x140 (-0x20相对于0x160)。为什么是 " -0x20相对于0x160 " ,烦请知道的朋友说一说
页:
[1]