数据运行解析例子

[复制链接]

该用户从未签到

2

主题

34

回帖

262

积分

[INTOHARD]排长

Rank: 3Rank: 3

积分
262
发表于 2009-5-10 18:46:41 | 显示全部楼层 |阅读模式
本帖最后由 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
本帖评分记录威望 收起 理由
focefix + 10 支持原创

该用户从未签到

2

主题

34

回帖

262

积分

[INTOHARD]排长

Rank: 3Rank: 3

积分
262
 楼主| 发表于 2009-5-11 22:11:01 | 显示全部楼层
例子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,另外,第三块数据位于物理存储区域第一块数据和第二块数据之间(第三块数据有一个负的偏移量,因此将它置于前面的运行之前)
  • TA的每日心情
    开心
    2018-6-9 21:04
  • 签到天数: 25 天

    [LV.4]七品知县

    9

    主题

    5167

    回帖

    2799

    积分

    [INTOHARD]营长

    Rank: 6Rank: 6

    积分
    2799
    QQ
    发表于 2009-5-11 22:19:01 | 显示全部楼层
    先休息休息休息休息休息休息休息休息休息休息笑嘻嘻

    该用户从未签到

    15

    主题

    674

    回帖

    9296

    积分

    [INTOHARD]团长

    浸淫

    Rank: 8Rank: 8

    积分
    9296
    发表于 2009-5-12 08:32:45 | 显示全部楼层
    感谢楼主!!!!!!!!!!!!!!!!

    该用户从未签到

    2

    主题

    34

    回帖

    262

    积分

    [INTOHARD]排长

    Rank: 3Rank: 3

    积分
    262
     楼主| 发表于 2009-5-12 20:00:24 | 显示全部楼层
    例子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个虚拟簇的大小。

    该用户从未签到

    1

    主题

    185

    回帖

    257

    积分

    [INTOHARD]排长

    Rank: 3Rank: 3

    积分
    257
    发表于 2010-5-20 16:27:02 | 显示全部楼层
    回复 2# zhaoliangcn
    请问楼主能不能解释一下为什么  长度0x20  偏移 就是0x140 (-0x20相对于0x160)。为什么是 " -0x20相对于0x160 " ,烦请知道的朋友说一说
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    快速回复 返回顶部 返回列表