PE文件格式详解.pdf

  1. 1、本文档共28页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PE文件格式详解.pdf

PE PE PPEE文件格式详解 摘要 WindowsNT3.1引入了一种名为PE文件格式的新可执行文件格式。PE文件格式的规范 包含在了 MSDN 的 CD 中(Specs and Strategy, Specifications, Windows NT File Format Specifications),但是它非常之晦涩。 然而这一的文档并未提供足够的信息,所以开发者们无法很好地弄懂PE格式。本文旨 在解决这一问题,它会对整个的PE文件格式作一个十分彻底的解释,另外,本文中还带有 对所有必需结构的描述以及示范如何使用这些信息的源码示例。 为了获得PE文件中所包含的重要信息,我编写了一个名为PEFILE.DLL 的动态链接库, 本文中所有出现的源码示例亦均摘自于此。这个DLL和它的源代 码都作为PEFile 示例程序 的一部分包含在了CD 中(译注:示例程序请在MSDN 中寻找,本站恕不提供),你可以在 你自己的应用程序中使用这个DLL; 同样,你亦可以依你所愿地使用并构建它的源码。在 本文末尾,你会找到PEFILE.DLL的函数导出列表和一个如何使用它们的说明。我觉得你会 发现这些函 数会让你从容应付PE文件格式的。 介绍 Windows操作系统家族最近增加的WindowsNT为开发环境和应用程序本身带来了很大 的改变,这之中一个最为重大的当属PE文件格式了。新的PE文件格式主要来自于UNIX 操 作系统所通用的COFF 规范,同时为了保证与旧版本MS-DOS及Windows操作系统的兼容, PE文件格式也保留了MS-DOS 中那熟悉的MZ 头部。 在本文之中,PE文件格式是以自顶而下的顺序解释的。在你从头开始研究文件内容的 过程之中,本文会详细讨论PE文件的每一个组成部分。 许多单独的文件成分定义都来自于MicrosoftWin32 SDK开发包中的WINNT.H 文件, 在这个文件中你会发现用来描述文件头部和数据目录等各种成分的结构类型定义。但是,在 WINNT.H中缺少对PE文 件结构足够的定义,在这种情况下,我定义了自己的结构来存取文 件数据。你会在PEFILE.DLL 工程的PEFILE.H 中找到这些结构的定义,整套的 PEFILE.H 开发文件包含在PEFile 示例程序之中。 本文配套的示例程序除了PEFILE.DLL 示例代码之外,还有一个单独的Win32示例应用 程序,名为EXEVIEW.EXE。创建这一示例目的有二: 首先,我需要测试PEFILE.DLL 的函 数,并且某些情况要求我同时查看多个文件;其次,很多解决PE文件格式的工作和直接观 看数据有关。例如,要弄懂 导入地址名称表是如何构成的,我就得同时查看.idata 段头部、 导入映像数据目录、可选头部以及当前的.idata 段实体,而EXEVIEW.EXE就 是查看这些信 息的最佳示例。 闲话少叙,让我们开始吧。 PE PE PPEE文件结构 PE文件格式被组织为一个线性的数据流,它由一个MS-DOS 头部开始,接着是一个是 模式的程序残余以及一个PE文件标志,这之后紧接着PE文件头和可选 头部。这些之后是 所有的段头部,段头部之后跟随着所有的段实体。文件的结束处是一些其它的区域,其中是 一些混杂的信息,包括重分配信息、符号表信息、行号 信息以及字串表数据。我将所有这些 成分列于图1。 1.PE 1.PE 图11..PPEE文件映像结构 从MS-DOS文件头结构开始,我将按照PE文件格式各成分的出现顺序依次对其进行讨 论,并且讨论的大部分是以示例代码为基础来示范如何获得文件的信息 的。所有的源码均摘 自PEFILE.DLL 模块的PEFILE.C 文件。这些示例都利用了WindowsNT最酷的特色之一—— 内存映射文件,这一特色允许用户使用一个简单的指针来存取文件中所包含的数据,因此所 有的示例都使用了内存映射文件来存取PE文件 中的数据。 注意:请查阅本文末尾关于如何使用PEFILE.DLL 的那一段。 MS-DOS / MS-DOS / MMSS--D

文档评论(0)

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档