目录链,目录链是复合文件最基本的数据链,描述了复合文件的目录结构信息。目录链的开始在头块中可以找到。目录链中包括了复合文件的目录信息,每一个目录项的大小是128字节,所以目录链的一个块可以包括4个目录项,第一个目录项是根目录项,名字叫做“根实体”(Root Entry),任何复合文件里面这都是第一个目录项。一个典型的根目录项如下:
00400: 52 00 6f 00 6f 00 74 00 20 00 45 00 6e 00 74 00 R o o t E n t
00410: 72 00 79 00 00 00 00 00 00 00 00 00 00 00 00 00 r y
00420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00430: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00440: 16 00 05 00 ff ff ff ff ff ff ff ff 03 00 00 00
00450: 00 09 02 00 00 00 00 00 c0 00 00 00 00 00 00 46
00460: 00 00 00 00 00 00 00 00 00 00 00 00 86 29 f6 1f
00470: ad 57 bb 01 03 00 00 00 00 0f 00 00 00 00 00 00
目录项结构的说明如下:
偏移量(十六进制)
| 大小(字节)
| 内容
| 0
| 40
| 目录项的名字(所以复合文件中名字最长不能超过40字节)
| 40
| 2
| 名字的长度
| 42
| 2
| 目录项的类型1是一个存储(文件),2是目录,3是根
| 44
| 4
| 前一个目录项
| 48
| 4
| 下一个目录项
| 4C
| 4
| 如果是目录,指向子目录项
| 74
| 4
| 所存储内容的开始块
| 78
| 4
| 所存储内容的大小
|
由于上面的数据结构不是来源于微软的官方文档,包括了很多猜测的成分,所以很多内容暂时无法断定其意义,有些结构的说明可能和微软的原意也不相符合,但是我们使用这个结构对微软的大量文档进行了分析,至今尚未发现有明显的错误存在。
在基本的“劳拉”文件结构的基础上,字处理文档、电子数据表文档具有不同的内部目录结构,下面是一个典型WORD文件的内部目录结构:
1.doc
——1Table:一些数据表
——CompObj:通用的对象
——ObjectPool:对象池,是一个目录,包括WORD文件中嵌入的图像、声音或者其他对象
——WordDocument:实际的文字和格式化信息就存放在这里
——SummaryInforamtion:摘要信息
——DocumentSummaryInformation:其他的摘要信息
这篇关于复合文档二进制结构的内容可能很多朋友在《数据恢复高级技术》中看到,但有两个问题(红色文字部分,我觉得有点问题)讨论一下:
1、文中分析的是一个大块链是:0-5-7-9-0B,但我从大块映象图中分析好像有以下几个大块链,没有他说的那个大块链:① 0 ② 1-5 ③ 2 ④ 3-4-6-7-8-9-0A-0B。
2、在目录项结构的说明表中描述目录项的类型“1是一个存储(文件),2是目录,3是根”,但我在《复合文档文件格式研究》(这个文档在3楼上传)中发现不一样(见下图),我的理解是:1是目录,2是文件,5是根目录
[ 本帖最后由 tclrz100e 于 2007-11-18 20:35 编辑 ] |