【说明:本译文的所有大小标题序号都是译者添加,以方便大家阅读。圆圈内的数字是注释的编号,注释全部译自网络。另外,本系列译文之一中已有的注释这里就不再重复了。所有注释仅供参考,如有不妥之处,敬请原谅!----译者】一、摘要Windows NT 3.1 版操作系统引进了一种叫做可移植的可执行(PE)文件格式的新文件格式。尽管《可移植的可执行文件格式规范》的内容相当含糊,但公众已可得到了;并且它也已被包括在我们的微软开发者网络CD(其中的:Windows NT 文件格式规范->规范->规范和战略)当中。不过,对开发者来说,仅此规范一文并不足以提供足够的信息来让他们对 PE 文件格式的理解变得容易,哪怕是更合理一点。本文档的目的就是用来解决这个问题的。从本文档之中,你可找到整个 PE 文件格式的完整的解释,还有所有必须的结构体的描述以及演示怎样使用这个信息的源代码例子。出现在本文中的所有源代码例子都是从一个叫 PEFILE.DLL 的动态链接库中例举出来的。我写出这个 DLL的目的就是为了发现包含在一个 PE 文件中的重要信息。这个 DLL 和它的源代码也被包含在这个 CD 当中作为 PE 文件例子程序的一部分;你可以自由地将这个 DLL 使用在你自己的应用程序之中。同样,你也可以自由地取得这些源代码并在它的基础之上为你的任何目的去构建(程序)。在本文的末尾,你会找到一个从 PEFILE.DLL 中导出的简短的函数列表,以及怎样使用它们的解释。我想,你会发现利用这些函数会让你对 PE 文件格式的理解要容易一些。二、介绍最近 Windows 操作系统的家族得到了微软®Windows NT 操作系统的加入给开发环境带来了很多的变化,并且也给应用程序本身带来了不小的变化。比较重要的变化之一就是对可移植的可执行(PE)文件格式的引入。新的 PE 文件格式主要源自于 UNIX 操作系统常用的 COFF(Common Object File Format,通用目标文件格式)规范。不过,为了保持对以前各版的 MS-DOS®和 Windows 操作系统的兼容性,PE 文件格式也保留了大家过去比较熟悉的 MS-DOS 的 MZ 头。在本文中,PE 文件格式将使用从头到尾的方式来解释。文中将依照你通读文件的内容时文件的每个组成部分出现的顺序来一一讨论它们,开始时是头部并沿着你曾走过的路线全程直到结束。许多单个的文件组成部分的定义来自于 WINNT.H 文件中,这是一个包含在 Windows NT 的微软 Win32™软件开发工具箱(SDK)中的文件。在这个文件...