Windows NT Portable Executable (PE) Format Specification v6.0详解

需积分: 10 3 下载量 68 浏览量 更新于2024-07-16 收藏 883KB PDF 举报
Portable Executable and Common Object File Format (PE/COFF) 是由微软公司制定的一种用于Windows NT平台的二进制可执行文件和目标文件的标准格式,版本为6.0,发布于1999年2月。这份规格文档旨在帮助开发者开发适用于Windows NT的操作系统工具和应用程序,尽管它可能不是所有方面的完整规范,因为微软保留了随时更新文档的权利。 1. **General Concepts**: PE/COFF文件格式的主要概念包括可执行性和可重定位性,这意味着程序可以在不同的平台上运行,并且允许在链接时进行动态调整。它支持模块化设计,使得多个独立的模块可以组合成一个大型应用。 2. **File Headers**: - **MS-DOS Stub (Image Only)**: 文件的开始是MS-DOS引导部分,即使在非DOS环境下也存在,负责加载实际的PE结构。 - **Signature (Image Only)**: 签名确认文件是PE格式,如"\x4D\x5A"代表MZ头,是DOS引导记录的前缀。 - **COFF File Header**: 对象文件和可执行文件共有的基本元数据,包含机器类型和特征位,用于识别目标机器架构。 - **Optional Header**: 可选的,通常在可执行文件中存在,包含了操作系统特定的信息,如地址空间布局、导入导出表等。 3. **Section Table (Section Headers)**: - **Section Flags**: 指示每个节(section)的属性,如可执行、可读、只读等。 - **Grouped Sections**: 可以按照逻辑将多个节组织在一起,便于管理。 4. **Other Content of the File**: - **Section Data**: 包含程序的实际代码、数据和资源,每个节都有自己的起始地址和大小。 - **COFF Relocations**: 在对象文件中,用于存储节间关系和动态地址调整的信息。 - **COFF Line Numbers**: 提供源代码行号信息,有助于调试。 - **COFF Symbol Table**: 存储符号名称及其对应的地址和类型,方便链接器进行链接和定位。 5. **Type Indicators**: 在重定位表中,指示不同类型的数据调整操作,例如相对地址调整、绝对地址调整等。 这份文档详细介绍了如何解析和创建符合PE/COFF标准的文件,对Windows开发人员来说,理解并遵循这些规则至关重要,以便确保程序能够在各种Windows环境中正确编译、链接和运行。同时,对于研究低级系统编程、逆向工程或安全分析等领域的人来说,掌握PE/COFF结构是不可或缺的技能。