一、概念
PE文件的全称是Portable Executable,意为可移植的可执行的文件,常见的EXE、DLL、OCX、SYS、COM都是PE文件,PE文件是微软Windows操作系统上的程序文件(可能是间接被执行,如DLL)。
二、PE文件结构
PE文件总的来说是由DOS文件头,DOS加载块,PE文件头,区段表与区段5部分构成。
(该图来自网络)
为了便于后面理解PE结构,我自己也画了一张。
DOS头部分由两部分构成:
1)DOS 文件头,确定是PE文件和还有指明NT头在文件中的位置。
2)DOS块是用来兼容MS-DOS操作系统的,目的是当这个文件在MS-DOS上运行时提示一段文字,大部分情况下是:This program cannot be run in DOS mode。
NT文件头包含windows PE文件的主要信息,包括一个‘PE00’字样的签名,PE文件头(IMAGE_FILE_HEADER)和PE可选头(IMAGE_OPTIONAL_HEADER32)。
节表:是PE文件后续节的描述,windows根据节表的描述加载每个节。
节数据:每个节实际上是一个容器,可以包含代码、数据等等,每个节可以有独立的内存权限,比如代码节默认有读/执行权限,节的名字和数量可以自己定义,未必是上图中的四个。
知道了PE文件结构后,我们就能够知道PE文件的写的内容是什么了。