一、概述:
结构化的文档格式PDF(Portable Document Format)是由美国排版与图像处理软件公司Adobe于1993年首次提出的。Adobe Reader这款pdf阅读器软件相信大家并不陌生,人们熟知它的原因是因为它的应用相当普及,可能接触过计算机的人中没有几个会不知道它,但是相信也有一部分人注意到Adobe这款软件是因为它频频爆出漏洞的缘故,号称漏洞之王的Adobe似乎有报不完的漏洞,时不时就会给人以惊喜,其潜力真是不容置疑!这样说来,如果想对Adobe的漏洞原理进行分析。了解PDF文件的格式就变得尤为重要了!
二、PDF文件结构:
PDF的结构可以从文件结构和逻辑结构两个方面来理解。PDF的文件结构指的是其文件物理组织方式,逻辑结构则指的是其内容的逻辑组织方式[1]。
1、数据对象类型:
PDF文件的基本元素是PDF对象(PDF Object),PDF对象包括直接对象(Direct Object)和间接对象(Indirect Object);其中直接对象如下几种基本类型:布尔型(Boolean)、数值型(Number)、字符串型(String)、名字型(Name)、数组型(Array)、字典型(Dictionary)、流对象(Stream)以及空对象(Null);间接对象是一种标识了的PDF对象,这个标识叫作间接对象的ID。标识的目的是为了让别的PDF对象引用。任何PDF对象标识后都变成了间接对象。
2、PDF文件结构:
PDF的文件结构(即物理结构)包括四个部分:文件头(Header)、文件体(Body)、交叉引用表(Cross-reference Table)和文件尾(Trailer),如图-1所示: