Office文档是目前应用最广泛的文档格式,但很多人都没有为office文件建立完善的安全防护措施,也没有养成进行文件备份的良好习惯,所以一旦出现操作失误、病毒破坏、系统故障等情况,就有可能造成当前正在编辑的word、excel文档和access数据库等受到损坏,下次无法打开。那么一旦遇到这类文档被破坏或者丢失我们是否就束手无策了呢,当然不是,我们可以借助专业知识和小工具进行受损文档修复。

未公开的office文档存储格式秘密

Office文档格式一直以来都是微软公司的技术机密,至今未曾向外界公布。那么我们现在要做的是修复受损的文档,如果真的对office文件数据结构一无所知的话那么最终也只能止步于“傻瓜式”的文档修复工具水平。想要提高自己的文档修复水平,在最大程度上挽救丢失的数据,那就必须对office文档二进制格式有所了解,下面我们以word文档为例子,给大家介绍word文件内部结构和office文档格式的部分秘密。为什么说是部分呢,因为全部的office文档格式可能只有微软自己才知道了。

Laola的文件格式

Laola文件格式是微软复合文档结构的二进制格式。按照微软的命名来说,这种文档结构应该叫做“复合文档二进制结构(Compound File Binary Format)”。但微软官方并没有公开关于这种文档结构的相关内容,大量黑客通过对word、Excel文件的逆向分析以及办公软件的跟踪,基本上破解了“复合文档二进制结构”的组成和算法。但这些并不是微软的官方文档,有存在差异的可能性,并且微软有权随时改变这一算法结构,因此人们有必要使用另外的名称“laola”来描述这一结构。

复合文档的起源

国内最早分析“复合文档二进制结构”的是反宏病毒技术人员,但国际上在宏病毒没出现前针对微软复合文档二进制结构的分析就已经开始了。进行这种分析的根本目的是为了在其他操作系统下(这里主要指的是linux和其他开源操作系统下)能够开发出可读写微软办公软件使用的文档。

“复合文档”是微软引入的一种在文件内部存放结构化信息的方法。例如:我们写一篇文章,如果这篇文章没有任何格式信息和嵌入图像,那么使用没有任何结构的文本格式就可以了,但是一篇完善的文章里可能包含段落、格式、字体、颜色、插图等,这样简单的无格式文本就无法满足需要了。所以需要在文件的内部存放很多结构,包括段落的文字、字体、甚至段落本身信息等。针对这种需求、以及电子数据表、演示制作等软件的需要,微软开发了一种“文件中的文件系统”,也就是“复合文档”结构。

复合文档结构介绍

在复合文档中,可以有很多目录,在每个目录下可以有子目录,目录和子目录包含了“存储”,一个存储相当于磁盘上的一个文件,整个复合文档就形成了一个类似于磁盘上的目录和文件所组成的树状结构。如果在视窗环境下使用复合路径,可以利用操作系统提供的功能对复合文件进行读写。

与硬盘划分扇区的方法类似,所有使用laola文件格式的文件由512 B的数据块组成(有兴趣的可以验证一下,所有的word、excel或其他office文件大小都是512B的倍数),数据块的序号从-1开始,如下图所示。

序号为-1的块是整个文件的文件头块,存放了复合文件的一些整体信息,结构见下图:

在512 B的数据块基础上,复合文件中包括了两种最基本的结构:

第一种是由512 B的大块连接起来的大块链。如果对以文件分配表“FAT”为基础的文件系统熟悉的话,可以很容易的理解大块链的概念,只要知道一个大块链的开始块序号,通过大块映像图就可以找到这一条大块链的所有内容。一个典型的大块映像图如下图所示:

从图中可以看到,如果一个大块链的开始序号是0的话(该处的内容是5),那么这个大块链包括:序号为0的数据块、序号为5的数据块(该处的内容是7)、序号为7的数据块(该处的内容是9)、序号为9的数据块(该处的内容是0b)、序号为0b的数据块(该处的内容是-1,表示这是该链的最后一个数据块)。

对于比较小的结构,如果以512 B为单位的话会造成比较大的空间浪费,所以专门使用一个大块链来存放比较小的数据块,小于4096 B的数据结构使用小块链来表示,小块链的组成和寻址方式和大块链非常类似,唯一不同的是小块链里面对小块的寻址不是在整个复合文件范围内的,而是在某一个特定的大块链范围内,这个大块链的开始块序号会在以后的更新中叙述。

目录链:是复合文件最基本的数据链,描述了复合文件的目录结构信息。目录链的开始在头块中可以找到。目录链中包括了复合文件的目录信息,每一个目录项的大小是128 B,所以 目录链的一个块可以包括4个目录项,第一个目录项是根目录项,名字叫“根入口(Root Entry)”,任何复合文件里这都是第一个目录项。一个典型的根目录项如下图所示:

下面是目录项的结构说明:

由于上面的数据结构并不是来源于微软的官方文档,其中包含了很多猜测的成分,所以很多内容暂时无法判断其意义,有些结构说明可能与微软原意不同,不过我们利用这个结构对微软的大量文档进行分析,至今尚未发现有明显错误。

在基本的laola文件结构基础上,字处理文档、电子数据表文档具有不同的内部目录结构,下面介绍一个典型word文件内部目录结构

a.doc
—1 Table:一些数据表
—CompObj:通用的对象
—ObjectPool:对象池,是一个目录,包括word文档中嵌入的图像、声音或者其他对象
—WordDocument:实际的文字和格式化信息就存放在这里
—SummaryInformation:摘要信息
—DocumentSummaryInformation:其他的摘要信息

Office文档修复介绍之:laola文件格式介绍相关推荐

  1. office 里的链接如何显示成图片_微软Office文档 | Office小程序介绍(一)

    微软中国Office 365 for WeChat团队开发了四款好用方便的小程序--「微软Office文档」「微软听听文档」「微软AI识图」「微软海报」.它们的受众已经十分庞大,但相信仍旧有不少人与其 ...

  2. wps office 2010 Wps文字文档保存及自动保存方法介绍

    转载请说明来源于"厦门SEO" 本文地址:http://www.96096.cc/Article/169640.html wps office 2010 Wps文字文档保存及自动保 ...

  3. EasyRecovery修复Office文档

    EasyRecovery Professional是威力非常强大的硬盘数据恢复工具,能够帮用户恢复丢失的数据及重建文件系统.用该工具修复Office文档,也是轻而易举的. 在前面讲述了修复损坏的Wor ...

  4. android在线预览excel文件格式,Android打开doc、xlsx、ppt等office文档解决方案

    原标题:Android打开doc.xlsx.ppt等office文档解决方案 1.Android端有什么控件可以直接显示office文档吗? 很抱歉没有,对于ios而言想要显示office文档,直接调 ...

  5. 使用LibreOffice修复受损的Office文档

    在工作中时常遇到Office文档损坏,用MS Office不能打开,有时候用LibreOffice(测试为4.2版本)可以打开,另存一下就好了. 此方法虽然不是100%管用,但在实际中大半都可以. 另 ...

  6. office文档格式简要介绍

    本文目的:理清office文档格式,学习何为OLE. 一.OpenXML (OOXML) OpenXML(OOXML) 是微软在Office 2007中提出的一种新的文档格式,Office 2007中 ...

  7. 绕过Office文档的受保护视图

    介绍 我想分享最近发现的一个有趣现象,提前说明,这是我基于最新的Windows 10操作系统以及最新的的MS Office 365所发现的.这也是我在开发网络钓鱼工具PhishAPI时偶然发现的. 大 ...

  8. office文档在线预览工具平台选型

    ​​​​​​在线预览原理 文档在线预览说明: 1.业务系统生成文档浏览地址,用户通过终端进行访 2.用户终端访问文档预览资源地址,请求文档解析器,解析器分为私有云和公有云部署,作用是将文档进行解析成x ...

  9. 如何在线编辑Office文档

    Office文档是我们办公中最常用的文件格式之一,它可以通过Microsoft Office应用程序创建和编辑,但前提是需要先将Microsoft Office下载并安装到系统中.如果系统中没有或者无 ...

  10. office受保护视图_使用受保护的视图激发恶意Office文档

    office受保护视图 介绍 (Intro) I wanted to share an interesting behavior I discovered with Microsoft Office ...

最新文章

  1. js去除数组中重复值
  2. Sql Server函数全解三数据类型转换函数和文本图像函数
  3. 输入URL到浏览器显示页面的过程,搜集各方面资料总结一下
  4. 【异或运算】 - 交换2个数
  5. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol52]42蒙哥马利乘法,哪里泄漏侧信道路吗?
  6. linux如何删除行首的空格
  7. java 代码效率_提高代码性能效率总结(一)--Java
  8. 七:如何实现代理与日志清除技术
  9. windows10应用商店下安装kali子系统
  10. keil5写c语言的步骤,keil5使用C51的详细步骤讲述
  11. Flash 加密和破解
  12. Python打包exe文件并换图标【最强版教程】
  13. ArcGIS 地图切图系列之(一)切片原理解析
  14. Linux CentOS 中安装 Tomcat(四)
  15. java删除图片杂色_Java生成图片,Graphics生成图片,Graphics2D生成图片,Awt生成图片
  16. 电镀废水处理工艺 离子交换树脂回收镍 硫酸镍经济效益越来越高 电镀废水如何获利 含重金属废水处理工艺
  17. Vue3基础安装教程
  18. PDF中加java空白可写字段,使用iTextSharp压模的可填写PDF中的空白字段
  19. 入境游平台http://cutetrip.com运营合作
  20. 湖南文旅数据中心:湖南文旅数据早知道(9月7日)

热门文章

  1. 杰奇2.4UTF安装教程+关关远程采集
  2. c51汇编语言循环指令,汇编语言循环指令loop
  3. 一阶惯性环节的性能分析——自动控制原理基础补充(二)
  4. HTML导航栏的四种制作方法
  5. NMAP 端口扫描工具下载 + 安装
  6. 百度飞桨螺旋桨赋能生物医药,推动AI技术在药物研发领域的探索应用
  7. Windows 10 安装 Oracle 10g
  8. Apache的网页与安全优化
  9. 相机dc内置滤镜 千奇百怪不离其踪 漫谈数码相机内置滤镜
  10. windowsXP sp3 升级包