Office复合文件格式(壹)

简介: Office复合文件格式(壹)

之前说好的更新,因为私人原因,有点事所以耽搁了,没能去及时的更新,今天先更新一下,下周可能要回趟学校,又无法更新了。今天我想说的是Office复合文件格式,之前一直在学习PE方面的知识(有关PE的那些博客,我之后也会抽空更新,今天想说说非PE)所以研究的文件格式主要集中在PE文件方面,最近有幸接触到非PE文件格式,想和大家一起分享学习一下这个格式,之所以进行这个文件的学习,因为其也是病毒的载体文件中的一种,非PE文件格式太多太大杂,我们就先从最常见的Office文件类型开始。因为对非PE感兴趣的人可能不是很多,所以国内相关的文档不是很多,所以我也去国外的网站看过一些文章,以及非PE病毒攻击方式。我自己也翻阅了微软有关该文件格式的文档,今天是第一篇,就随便说点,说到哪儿算哪儿。


我对于概念的理解:Office复合文档结构,说直白一点其内部就相识一个文件系统一样,文件系统中,我们有各层目录,然后最终到达我们存储数据的文件。对于Office文档来说,也是一样的,它会把其中的娄数据分别存放到很多个数据流中(streamQ),而这些数据流又保存

在不同的storage(翻译过来是仓库,也太挫了,就中英混杂了,装个b 里面。其大致可以用下图来表示:

image.png


和PE文件相似,复合文档也有自己的文件头部,今天我说的都是wo ord97-03的文档,其word文档后缀是doc,而这个文档类型又称为OLE文件。我们先从OLE文件的头部说起。

image.png

我们可以从图中的我所打开的文件左侧十六进制编码,开头的\x00\xCF\x11\xE0\xA1\xB1\x1AlxE1这8个字节是固定的,一般也被用来校验OLE文件的第一道防线,这就是OLE文件的标志。

我自己代码中的结构体和一点简单注释有关这个512字节大的结机构头部。

typedef struct _OLEHeader_
{
  BYTE  Signature[8];     //OLE文件标识符 "\xD0\xCF\x11\xE0\xA1\xB1\x1A\xE1";
  GUID  clsidNULL;        //Unique Id,May be All 0  
  USHORT  VerMinor;       //Minor Version Most used is 003E
  USHORT  VerDll;         //DLL Version Most used is 0003
  USHORT  ByteOrder;        //字节序 小端0xFEFF 大端0xFFFF
  USHORT  SectorShift;      //符合文档中sector的大小,最小是7 也就是2^7 (128字节)最多的是9也就是512字节
  USHORT  MiniSecShift;     //minisector size Short-stream in the short-stream container stream ,Most used 2^6(64字节) 
  USHORT  Reserved;       //保留值 0
  ULONG Reserved2;        //0
  ULONG NumDirSects;      //0
  ULONG NumFatSects;      //主扇区配置表使用总数
  ULONG DirSect1;       //Section Id of first section of directory stream
  ULONG TransactSig;      //一般为0
  ULONG MniStrMax;        //max value of mini stream一般为0x1000
  ULONG MiniFatSect1;     //Section id of first sector of the Short-sector
  ULONG NumMiniFatSects;    //Number of sections used by Short-sector
  ULONG DifatSect1;       //附加的主扇区配置表
  ULONG NumDifatSects;          //大小
  ULONG DiFat[109];       //主扇区配置表  偏移0x4C
}OLEHeader, *POLEHeader;

关于这些结构中的各个重要字段,我之后会结合一个doc文档,细细的来说,纸上得来终觉浅,绝知此事要躬行,对于文件结构学习之后,字节也写了一个ole文件解析的代码,后面会结合文档来细细了角解这个文件结构。今天就先到这里,下次更新时间,待定…

按照惯例本来是一句诗句结尾的,今日不吟诗。我好兄弟昨日当兵去了,我人在北京,也没办法去送送他,所以今天在这里为他送上祝福:披上军装的你,必然有着飒爽英姿,必然会所向披靡,愿你为国国效力,平安归来。两年后当兵归来,兄弟们定为你接风洗尘!还有就是,我真的特别为你感到自豪,军人最帅!!!To:HDX

目录
相关文章
|
7月前
|
Web App开发 JavaScript 前端开发
网页VUE纯前端在线预览编辑Office,支持doc/docx、xls/xlsx、ppt/pptx、pdf等格式
随着互联网技术的不断发展,越来越多的企业开始采用在线办公模式,微软Office Word 是最好用的文档编辑工具,然而doc、docx、xls、xlsx、ppt、pptx等格式的Office文档是无法直接在浏览器中直接打开的,如果可以实现Web在线预览编辑OffIce,肯定会还带来了更高效、便捷的办公体验,为我们的工作带来了更多可能性。
1516 0
5-22|pywintypes.com_error: (-2147352567, '发生意外。', (0, 'Microsoft Office Excel', 'Excel 无法打开文件“
5-22|pywintypes.com_error: (-2147352567, '发生意外。', (0, 'Microsoft Office Excel', 'Excel 无法打开文件“
|
7月前
|
前端开发 JavaScript Java
大咖与小白的日常:如何在线编辑Word/PPT/Excel等Office文件
如何利用OSS和智能媒体管理服务,实现在线预览/编辑Office文件。
154 0
office2019安装Mathtype7.4运行时错误‘53’,文件未找到:MathPage.WLL
office2019安装Mathtype7.4运行时错误‘53’,文件未找到:MathPage.WLL
566 0
office2019安装Mathtype7.4运行时错误‘53’,文件未找到:MathPage.WLL
|
前端开发 Python
Office 文件转 PDF 之服务实战
小编之前写了一篇关于 Office 文件转 PDF 的实战文章,详见Python 小技之 Office 文件转 PDF但是在平时的工作中,咱们需要通过接口的形式来调用具体的转换逻辑,同时开可以将文件转换写成服务的形式,将服务开启后传入参数或者地址即可直接调用逻辑转换,今天的文章主要讲解如何将文件转换写成服务; 一起拭目以待吧!!!
329 0
Office 文件转 PDF 之服务实战
|
Python
Python 小技之 Office 文件转 PDF
在平时的工作中,难免需要一些 小Tip 来解决工作中遇到的问题,今天的文章给大家安利一个方便快捷的小技巧,将 Office(doc/docx/ppt/pptx/xls/xlsx)文件批量或者单一文件转换为 PDF 文件。不过在做具体操作之前需要在 PC 安装好 Office,再利用 Python 的 win32com 包来实现 Office 文件的转换操作。
270 0
Confluence 6 Office 和 PDF 文件
插入一个文件到页面中是能够让你将有用的文件,电子表格,幻灯片或者其他可用的文件在你小组中进行分享的好方法。 针对所有的文件类型,你可以选择以链接方式插入一个文件。缩略图将会对文档的内容进行预览同时可以对大小进行调整。
927 0
|
C#
WPF:将Office文档、任意类型文件嵌入到EXE可执行文件中
原文:WPF:将Office文档、任意类型文件嵌入到EXE可执行文件中 版权声明:本文为博主原创文章,未经博主允许可以随意转载 https://blog.csdn.net/songqingwei1988/article/details/50259527 RT 可能这个需求比较奇怪 做了一个绿色版应用,最后只生成一个可执行的exe文件,不附带任何dll和其他文件。
1491 0
|
Java Linux Windows
java实现office文件预览
喜欢的朋友可以关注下,粉丝也缺。        不知觉就过了这个久了,继上篇java实现文件上传下载后,今天给大家分享一篇java实现的对office文件预览功能。
3664 0