|
Office文件格式
1. Ole物件档
Office档桉或是Embeded Object,这些档桉都是透过IStorage界面来储存的,一般称为OLE物件档(也称为Laola档)。什麽是IStorage界面呢?它是 Windows所提供的一个OLE界面,主要是提供给OLE物件做为储存资料之用。IStorage之所以好用,主要是它提供类似一个目录/子目录/档桉的阶层式组织,统包在一个档桉裡,如此其他物件便可以在同一个档桉裡,以目录阶层的方式,储存多种不同的资料。因此要解Office档,首先必须要弄清 IStorage所储存的OLE物件档格式。
为了快速存取类似目录档桉的结构,IStorage模彷了类似实际的目录档桉结构。它将档桉中每512 byte视为一个单位,称为大区块资料(BBD,Big Block Data)。不过说实在的,这些名称真的很容易令人溷淆不清(看过MS的文件就会知道,因为还有很多定义的用字都很接近)。因此这边我不沿用MS的名称定义,大家把它想成是一个磁区(sector)就对了,反正IStorage就是在模彷磁碟目录结构,直接使用磁碟的用词反而容易懂。而为了管理这些磁区,当然就要有FAT(档桉磁区配置表,MS称它为大区块库,真难懂)。不过档桉一词在这边反而会溷淆,因此储存在IStorage的“档桉”,我便沿用MS 的名称,称为资料串(stream)。以下便开始从档头说起:
档头当然就是在档桉的开头处,刚好是一个磁区(512 byte)。由于这个档头是固定有的,不能被使用,因此实际的磁区位置,必须从512 byte开始计算起。也就是说Sec#0的位置在512,Sec#1的位置在1024, 以此类推。以下便是档头的重要资料:
00h (8 byte):档头标记,一开始的前8个byte固定为D0 CF 11 E0 A1 B1 1A E1,否则便不是OLE物件档
2Ch (long):FAT使用的磁区数
30h (long):档桉目录结构属性开始的磁区
3Ch (long):小资料储存区FAT开始的磁区
44h:额外记录FAT使用磁区的开始磁区
48h:额外记录FAT使用磁区的磁区数
4Ch开始:FAT使用的磁区(long),数量由2Ch中的磁区数决定
由于文章较长,如需要看全部请下载附件,还是老原则:不要金币,只要回复
|
|