这是一款专门用于查询PE文件头部信息和导入导出表重定位表的查看器。PE文件,全称为Portable Execute,是微软公司Windows操作系统上的程序流程文件,包括常见的EXE、DLL、OCX、SYS、COM等。近期我致力于PE文件的研究,并开发了这个工具,旨在帮助大家更好地理解PE文件的构造。
PE文件整体由DOS文件头、DOS加载模块、PE文件头、区段表与区段组成。在纯Windows环境下,DOS文件头和DOS加载模块实际上并不使用,它们的存在主要是为了兼容性考虑。为了便于观察和理解,我们可以通过图1来大致了解PE文件的构造。
如图所示程序流程从以“MZ”开头的DOS文件头开始,接着是DOS加载模块“此程序不能在DOS模式下运行”,这是每个Windows程序流程开头常见的信息。随后是一个以“PE”开头的文件块,即著名的PE文件头,其标准尺寸为224个字节。图中的水平线与左侧的十六进制信息“E0”相对应,这表明了PE文件头的体积描述符,十六进制的“E0”相当于十进制的“224”,所以我们可以确认PE文件头的尺寸为224个字节。
接下来是以“.text”、“.data”和“.rsrc”构成的区段表,也称为节表。区段表的作用类似于书籍的目录,它可以帮助我们快速定位到所需的章节或节。在PE文件中,区段表除了提供目录功能外,还包括每个区段的读写权限信息。图2显示了程序流程由“.text”、“.data”和“.rsrc”这三个区段构成,这些区段名称也被称为“节”。
通过区段名称,我们可以大致推断出该区段包含的信息以及在整个程序流程中的作用。PE文件具有非常科学的结构,这有助于我们更快地了解其构造。一旦记住了PE文件的这五个组成部分,你就可以自信地说,我已经掌握了PE文件!