复合文档的修复

上传人:飞*** 文档编号:47825728 上传时间:2018-07-05 格式:PDF 页数:15 大小:5.19MB
返回 下载 相关 举报
复合文档的修复_第1页
第1页 / 共15页
复合文档的修复_第2页
第2页 / 共15页
复合文档的修复_第3页
第3页 / 共15页
复合文档的修复_第4页
第4页 / 共15页
复合文档的修复_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《复合文档的修复》由会员分享,可在线阅读,更多相关《复合文档的修复(15页珍藏版)》请在金锄头文库上搜索。

1、2012-07-04 10:44 手工重建复合文档 (.doc;xls,ppt)文件头 , 修复文件全过程手工重建复合文档 (.doc;xls,ppt)文件头 , 修复文件全过程最近学习了复合文档的格式, 在修复复合文档头方面做了不少实践, 有了一 些心得 , 经过梳理 , 做了个例子 , 把思路和过程介绍给大家 , 希望能解决你的不时 之需! 例子中用的文件如下图:名为“实验文档”,是个空文档,里面没有内容, 看属性, 10,752字节,刚好 21 扇区,复合文档的文件大小一定是512 字节的 整数倍,这跟复合文档的设计有关系。EXCEL ,PPT等文件也属于复合文档,也 符合这样的特点。后

2、来我又想,可能有网友会对修复后的文件产生怀疑,没有内容的文件可能说 明不了问题,所以我在文件中输入了很短的文本内容!如下图:实验文档是一个正常的文件, 另外我用 Winhex把该文件的文件头 (前面 512 字节)全部写成了 0,最彻底的破坏,保存为“损坏的实验文档”,大家可以用 现有的修复软件试一下,能不能修复,我用EasyRecovery Professional没有修 复成功!其它的软件没有试过!下面,就请大家跟我一起看,如何把“损坏的实验文档”修复成功!先介绍用到的工具软件Winhex,功能很强大, 可以用二进制的方式打开文件, 并进行编辑, 保存!该软件不仅可以打开文件, 还可以打开

3、硬盘, 对硬盘数据进 行编辑,搜索功能什分强大,用起来非常方便,同时支持脚本,提供API 函数。 软件界面如下图:用该软件打开“实验文档”和“损坏的实验文档”,可以对比一下前512 字节,为了便于操作, 我们需要将文件解释为硬盘,让软件以扇区的方式显示文 件内容,看起来直观些!两个文件的在软件里显示如下图:可见,“损坏的实验文档”前面的512 字节全是 0,文件头被全部破坏,文 件无法用 office打开!复合文档文件头的定义:Offset Size Contents 0 8 复合文档文件标识: D0H CFH 11H E0H A1H B1H 1AH E1H8 16 此文件的唯一标识 ( 不重

4、要, 可全部为 0) 24 2 文件格式修订号 ( 一般为 003EH) 26 2 文件格式版本号 (一般为 0003H) 28 2 字节顺序规则标识 ( 见 3.2): : FEHFFH= Little-Endian FFH FEH = Big-Endian 30 2 复合文档中 sector 的大小(ssz) , 以 2 的幂形式存储 , sector 实际大小为 s_size = 2ssz字节(一般为 9 即 512 字节, 最小值为 7 即 128字节) 32 2 short-sector的大小 (见 5.1) ,以 2 的幂形式存储 , short-sector实际大小为 s_s_s

5、ize = 2sssz字节( 一般为 6 即 64 字节,最大为 sector 的大小 ) 34 10 Not used 44 4 用于存放扇区配置表( SAT )的 sector 总数48 4 用于存放目录流的第一个sector 的 SID ( 见 6) 52 4 Not used 56 4 标准流的最小大小 ( 一般为 4096 bytes), 小于此值的 流即为短流。60 4 用于存放短扇区配置表(SSAT )的第一个 sector 的 SID ( 见 5.2), 或为 2 ( End Of Chain SID )如不存在。64 4 用于存放短扇区配置表(SSAT )的 sector 总

6、数68 4 用于存放主扇区配置表(MSAT )的第一个 sector 的 SID ( 见 4.1), 或为 2 ( End Of Chain SID ) 若无附加的 sectors 。72 4 用于存放主扇区配置表(MSAT )的 sector 总数76 436 存放主扇区配置表(MSAT ) 的第一部分,包含 109个 SID。看起来有些复杂!修复文件头的数据只需要计算并填写几项,一是扇区分配表(SAT )所占的扇区 数,二是目录起始扇区号, 三是短流扇区分配表的起始扇区号及占用扇区数,四是主 扇区分配表的起始扇区号及中用扇区数,五是扇区分配表的扇区号, 其它内容所 有的复合文档都是一样的,

7、从正常文件中拷过来就行。以上所说五项内容需要计算,现在介绍方法一:确定目录起始扇区号打开“损坏的实验文档”,将文件解释为硬盘,搜索字符串“ROOT (52006F) ” (unicode )如图:搜索到结果,软件自动定位到字符串的位置,如图:看状态栏:该字符串位置是 43 扇区,第一个值确定了,目录起始扇区是43,第一项完成。 由于复合文档在扇区编号时不包括文件头,0 扇区从 512 字节处开始,所以目录 起始扇区应该是 42,下面就不再进行说明。二:确定扇区分配表( SAT )我们需要通过扇区的内容来确定某个扇区是不是扇区分配表(SAT )该文件总共有 47 个扇区,文件头占一个扇区, 剩下

8、 46 扇区,所以,扇区分配表 中的值应该大于 0 小于等于 46,另外还有一些特殊的值,值FEFFFFFF 表示扇区 链结束,值 FDFFFFFF 表示该扇区被 SAT占用,值 FFFFFFFF 表示该扇区为空闲。看文件的 1 扇区:数据如下:该扇区是不是扇区分配表(SAT )呢?分析里面的数据( 4 个字节一个项,因为扇区编号是用4 个字节来存放的),第 一项是 ECA5C100 ,低位在前高位在后,换过来就是00C1A5EC ,换成十进制为 12690924,文件最大为 46 扇区,因此该扇区不可能是扇区分配表(SAT )。看第 2 扇区,第三项 00007A03不满足条件,因此不是扇区

9、分配表。重复该过程, 1-41 扇区均不符合条件,分析到42 扇区,看该扇区数据:第一项 0100000,第二项 02000000,第三项 03000000,等等,该扇区内的所 有项的值要么小于46,要么是 FEFFFFFF ,要么是 FDFFFFFF ,要么是 FFFFFFFF , 符合扇区分配表的特点!记下该扇区号。继续分析剩下的扇区,直到结束!在本例中,文件总共47 扇区大小,而每个扇 区 512 字节,4 个字节放一个扇区编号,因此,一个扇区分配表可以存放128 个 扇区编号,所以说该文件只有一个扇区用来存放扇区分配表(SAT )。第二项完 成。第三:确定主扇区分配表(MSAT )的起

10、始扇区号主扇区分配表( MSAT )中存放的是扇区分配表(SAT )所在的扇区号,本例中, 扇区分配表(SAT )只有一个,根据复合文档的格式定义, 文件头中可以存放109 项 SAT值,也就是说,只要文件的扇区分配表不大于109 个,就不需要主扇区分 配表,严格的说是不需要额外的主扇区分配表,因为文件头就可以容纳下了, 主 扇区分配表 (MSAT )是在 SAT多于 109 项时,剩下的值用指定的扇区来记录!根 据定义,无额外主扇区分配表(MSAT )时,主扇区分配表的起始扇区号为-2,十 六进制表示为 FEFFFFFF ,它占用的扇区数为0,第三项完成第四:确定短流扇区分配表的起始扇区号及

11、占用的扇区数短流扇区分配表 (SSAT )是复合文档中的另一个概念,短流数据用短流扇区来存 放,短流数据存放的位置通过短流扇区分配表来确定。一个文件有没有短流数据 可以查看目录,如图:根据复合文档定义,目录的第一表项0X74处的 4 个字节表示的是短流的起始 扇区(十六进制 2D000000值为 45),0X48处的 4 个字节为短流的大小 (十六进 制 800000值为 128)。而短流扇区分配表(SSAT )一般位于短流起始扇区的前 一个扇区,所以短流扇区分配表的起始扇区为45-1=44 扇区,它只占用一个扇区。 44 扇区的内容如下图:第四项完成。第五:确定文件头中的扇区分配表编号本例子

12、只有一个扇区分配表(SAT ),因此文件头中只用填写一个值。到此,需要重建文件头的所有值基本都确定了,下面的工作就是改写文件头。定位到 0X2C处,2C-2F为扇区分配表( SAT )所占用的扇区数,本例占用1 个扇 区,转换成十六进制为(01000000,低位在前高位在后),操作完成后如下图:定位到 0X30处,4 字节表示目录所在的扇区编号,经前面的计算,目录所在的 扇区编号为 42,换成十六进制为2A000000 ,把该值写到此处,操作完成后如下 图:定位到 0X3C处,4 字节表示短流扇区分配表(SSAT )的起始扇区号,本例短流 扇区为 44,十六进制值为 2C000000 ,改写后

13、,如下图:定位到 0X40 ,4 字节表示短流扇区分配表占用的扇区数,本例占用 1 个扇区,应 填写 01000000,操作完成后如下图:定位到 0X44处,4 字节表示 MSAT 起始扇区编号, 本例没有 MSAT ,填写-2,十六 进制值为 FEFFFFFF ,定位到 0X48处,4 字节表示 MSAT 占用的扇区数, 本例为 0, 填写 00000000 操作完成后如下图:定位到 0X4C处, 此处后的每 4 个字节填写一项SAT扇区编号,本例只有一个 SAT , 位置为 41,转换成十六进制为29000000,剩下的填写成 FFFFFFFF ,或者不填写 也行!操作完成后如下图:到此,所有艰苦的工作都完成了, 但是文件头的其它数据还没有建立,不过这些 数据都是固定的, 比如,文件头的前 8 个字节所有复合文档都是一样的,不一样 的只有前面所说的那些项, 因此,这些数据可以从别的文件中拷过来!填写完所 有数据后,如下图:保存对文件的修改:打开“损坏的实验文档”,能够正常打开,并且内容正确!Office中的 WORD,EXCEL ,PPT都是复合文档,都可以按这个方法操作!

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号