首先我们先给出复合文档的数据分配结构:文件头数据区MSATSAT目录SSAT文档标示最后那个文档标示,占用最后一个扇区
不重要;其中的那个MSAT指的是主扇区配置表过大,用来存储过大的那部分MSAT内容的扇区;对于复合文档的修复,主要都是基于修复文件头的,就像是修复FAT文件系统的DBR一样
那么我们就可以根据修复FAT文件系统一样的方法来修复复合文档的文件头
思路就是先拷贝一个正常的复合文档的文件头覆盖掉被破坏的文件头,然后逐一修改相应的参数
这里我们需要修改的参数有以下几个:lSAT占用的扇区数;l目录流的起始扇区号,也就是目录流第一个扇区的SID;l短扇区配置表(SSAT)的起始扇区,也就是SSAT的第一个扇区的SID;l短扇区配置表(SSAT)占用的扇区总数;l存放主扇区配置表的其他扇区的第一个扇区的SID,如果没有则此处为FEFFFFFF;l存放主扇区配置表的其他扇区的扇区总数,如果没有则此处为00000000;至于扇区大小数,一般都是09000000也就是512个字节
短扇区大小数一般都是06000000也就是64个字节
还有标准流的大小一般情况下也是00100000也就是4096个字节;好的,下面我们就根据上述分析来逐一找到那些参数,从而修复复合文档的文件头
0号扇区已经被清零了,文件头完全被破坏了
下面我们来修复这个文件头
l先复制一个正常的复合文档的文件头覆盖掉受损的文件头,然后逐一修改相应参数;l我们首先要找的是目录流起始扇区,因为前面分析过,目录流的签名标志是ROOTentry
搜索52006F006F007400找到目录流的起始扇区
我们在1556号扇区找到了目录流的起始扇区,那么我们就确定了目录流的起始扇区这个参数了,为1556-1=1555用十六进制表示就是0613
接着我们顺着目录流往下找,因为前面说过紧接着目录流的是SSAT
目录流记录的都是