【精选】详细的修改文件头.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
【精选】详细的修改文件头

首先我们先给出复合文档的数据分配结构: 文件头 数据区 MSAT SAT 目录 SSAT 文档标示 最后那个文档标示,占用最后一个扇区。不重要; 其中的那个MSAT指的是主扇区配置表过大,用来存储过大的那部分MSAT内容的扇区; 对于复合文档的修复,主要都是基于修复文件头的,就像是修复FAT文件系统的DBR一样。那么我们就可以根据修复FAT文件系统一样的方法来修复复合文档的文件头。思路就是先拷贝一个正常的复合文档的文件头覆盖掉被破坏的文件头,然后逐一修改相应的参数。这里我们需要修改的参数有以下几个: l???????? SAT占用的扇区数; l???????? 目录流的起始扇区号,也就是目录流第一个扇区的SID; l???????? 短扇区配置表(SSAT)的起始扇区,也就是SSAT的第一个扇区的SID; l???????? 短扇区配置表(SSAT)占用的扇区总数; l???????? 存放主扇区配置表的其他扇区的第一个扇区的SID,如果没有则此处为 FE FF FF FF; l???????? 存放主扇区配置表的其他扇区的扇区总数,如果没有则此处为00 00 00 00; 至于扇区大小数,一般都是09 00 00 00也就是512个字节。短扇区大小数一般都也就是64个字节。还有标准流的大小一般情况下也是00 10 00 00也就是4096个字节; ? 好的,下面我们就根据上述分析来逐一找到那些参数,从而修复复合文档的文件头。 ? 0号扇区已经被清零了,文件头完全被破坏了。下面我们来修复这个文件头。 l???????? 先复制一个正常的复合文档的文件头覆盖掉受损的文件头,然后逐一修改相应参数; l???????? 我们首先要找的是目录流起始扇区,因为前面分析过,目录流的签名标志是ROOT entry?.搜索52006F006F007400找到目录流的起始扇区。 ? 我们在1556号扇区找到了目录流的起始扇区,那么我们就确定了目录流的起始扇区这个参数了,为 1556-1=1555 用十六进制表示就是06 13 。接着我们顺着目录流往下找,因为前面说过紧接着目录流的是SSAT。目录流记录的都是一些名称之类的,而SSAT记录的确是SID。这个就跟FAT表记录的内容一样,4个字节占用一个表项。我们很容易就能区分出目录流和SSAT。果然我们就在1558号扇区找到了SSAT。看到SSAT的内容了吗,记录的就是SID和目录流记录的内容完全不一样,我就是通过这个判断出目录流到哪里就结束了。 ? ? SSAT找到了,起始扇区是1558-1=1557号扇区,大小只有一个扇区,因为SSAT的后面只有一个扇区了,就是前面提过的表示扇区。所以我们的SSAT占用1个扇区。我们又找到了两个参数了。 l???????? 接着我们找SAT , 目录流是紧接着SAT的,我们就可以通过找SSAT的方法判断出哪里是SAT。因为SAT记录的也是SID。和目录流记录的内容很不一样。我们顺着目录流往上找,因为1556-1=1555号扇区是目录流的起始扇区,那么1555-1=1554肯定是SAT的结束扇区,因为SAT和目录流是紧接着的。 ? 这就是1555-1=1554号扇区的内容,大家可以看到这个记录的就是SID后面的表项内容都是FF FF FF FF也就是说是空闲扇区。现在我们就要来确定SAT占用多少个扇区,如果SAT是连续存储的,那么我们顺着它的结束扇区慢慢往上找根据它内容的特殊性,就能确定SAT占用多少个扇区了。而且,SAT的起始扇区前面一个扇区一般都是以0结束的扇区。前提就是SAT是连续的,不连续的情况,我没遇到过,这里就不做讨论了。 好的,我慢慢往上找,终于在1543-1=1542号扇区找到了SAT的起始扇区。 ? 现在我们的SAT起始扇区就确定了,因为这里的SAT是连续的,那么SAT占用多少个扇区也就知道了。现在我们需要的参数都确定了下来了,就可以重建复合文档的文件头了。下面我们来总结一下找到的参数: 1???????? SAT占用扇区数 1555-1543+1=13个扇区,起始扇区是1543-1=1542号扇区; 2???????? 目录流的起始扇区是1556 – 1 =1555号扇区; 3???????? SSAT起始扇区是1558 – 1 =1557号扇区,大小是 1 个扇区; 4???????? 因为SAT只占用13个扇区,也就是说MSAT中只需要用13个表项来记录就行了,文件头中能记录MAST的前109个表项,所以文件头中就能放下MSAT的内容了,就不需要额外的扇区来存放MSAT了。所以MSAT的起始扇区就是 FE FF FF FF大小就是00 00 00 00 5???????? 以上参数确定了之后,最后一步就是修复MSAT的

文档评论(0)

pfenejiarz + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档