PE(Portable Executable)格式,是Windows的标准可执行文件的格式。PE文件格式被组织为一个线性的数据流,它是由一个MS-DOS头部开始,接着是PE文件头,之后紧接着节头部,节头部之后跟随着所有的节实体。
MS-DOS文件头
每一个PE文件都以一个小的MS-DOS可执行文件开始。当可执行文件在没有安装Windows的机器上运行的时候,这个程序至少可以输出一条消息,用来指明它需要运行在Windows平台上。
PE文件头
PE文件头由3部分组成:signature,IMAGE_FILE_HEADER结构和IMAGE_OPTIONAL_HEADER32结构。signature是一个合法PE文件标志。IMAGE_FILE_HEADER域包含了关于PE文件物理分布的一般信息,IMAGE_OPTONAL_HEADER32结构包含了关于PE文件逻辑分布的信息,该结构中还包含IMAGE_DATA_DIRECTORY结构数组,每个数组元素给出一个重要数据结构的相对虚地址和大小,如导入表、重定位表,通常共16个成员。
节表
紧跟着PE文件头的是节表。节表是一个IMAGE_SECTION_HEADER结构数组。此结构提供了与它相关的节的信息,其中包括偏移量、长度和其他属性2.通过偏移量属性,可以定位相关节数据在文件中的位置。
节
节是PE文件真正内容的划分。每一节是拥有共同属性的数据的集合。每节都包含了文件的内容,包含代码、数据、资源以及其他可执行信息。