PE文件格式详解(1)

2016-02-19 20:22 2 1 收藏

关注图老师设计创意栏目可以让大家能更好的了解电脑,知道有关于电脑的更多有趣教程,今天给大家分享PE文件格式详解(1)教程,希望对大家能有一点小小的帮助。

【 tulaoshi.com - 编程语言 】

摘要  Windows NT 3.1引入了一种名为PE文件格式的新可执行文件格式。PE文件格式的规范包含在了MSDN的CD中(Specs and Strategy, Specifications, Windows NT File Format Specifications),但是它非常之晦涩。
  
   !-- frame contents -- !-- /frame contents --   然而这一的文档并未提供足够的信息,所以开发者们无法很好地弄懂PE格式。本文旨在解决这一问题,它会对整个的PE文件格式作一个十分彻底的解释,另外,本文中还带有对所有必需结构的描述以及示范如何使用这些信息的源码示例。
  
  我为了获得PE文件中所包含的重要信息,编写了一个名为PEFILE.DLL的动态链接库,本文中所有出现的源码示例亦均摘自于此。这个DLL和它的源代码都作为PEFile示例程序的一部分包含在了CD中(译注:示例程序请在MSDN中寻找),你可以在你自己的应用程序中使用这个DLL;同样,你亦可以依你所愿地使用并构建它的源码。在本文末尾,你会找到PEFILE.DLL的函数导出列表和一个如何使用它们的说明。我觉得你会发现这些函数会让你从容应付PE文件格式的。  介绍  Windows操作系统家族最近增加的Windows NT为开发环境和应用程序本身带来了很大的改变,这之中一个最为重大的当属PE文件格式了。新的PE文件格式主要来自于UNIX操作系统所通用的COFF规范,同时为了保证与旧版本MS-DOS及Windows操作系统的兼容,PE文件格式也保留了MS-DOS中那熟悉的MZ头部。
  
  在本文之中,PE文件格式是以自顶而下的顺序解释的。在你从头开始研究文件内容的过程之中,本文会具体讨论PE文件的每一个组成部分。
  
  许多单独的文件成分定义都来自于Microsoft Win32 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文件格式被组织为一个线性的数据流,它由一个MS-DOS头部开始,接着是一个是模式的程序残余以及一个PE文件标志,这之后紧接着PE文件头和可选头部。这些之后是所有的段头部,段头部之后跟随着所有的段实体。文件的结束处是一些其它的区域,其中是一些混杂的信息,包括重分配信息、符号表信息、行号信息以及字串表数据。我将所有这些成分列于图1。
  图1.PE文件映像结构
  

  从MS-DOS文件头结构开始,我将按照PE文件格式各成分的出现顺序依次对其进行讨论,并且讨论的大部分是以示例代码为基础来示范如何获得文件的信息的。所有的源码均摘自PEFILE.DLL模块的PEFILE.C文件。
  
  这些示例都利用了Windows NT最酷的特色之一——内存映射文件,这一特色答应用户使用一个简单的指针来存取文件中所包含的数据,因此所有的示例都使用了内存映射文件来存取PE文件中的数据。
  注重:请查阅本文末尾关于如何使用PEFILE.DLL的那一段。(未完待续)

来源:https://www.tulaoshi.com/n/20160219/1623510.html

延伸阅读
标签: 电脑入门
JPS即JPEG Stereo,是一种3d图像格式。JPS文件格式其实就是JPEG文件格式,只是它同时存储了左眼看到的图(在右边)及右眼看到的图(在左边)。 为形成立体视觉,左右差异不会很大。
标签: 电脑入门
CAJ全文浏览器是中国期刊网的专用全文格式阅读器,它支持中国期刊网的CAJ、NH、KDH和PDF格式文件。它可以在线阅读中国期刊网的原文,也可以阅读下载到本地硬盘的中国期刊网全文。它的打印效果可以达到与原版显示一致的程度。
标签: 电脑入门
XTF格式(eXtended Triton Format)用来存储多种类型的设备数据,包括声纳、导航、遥测及测深信息。这种数据格式保留了原有设备的数据格式,更方便将来数据的扩展。 XTF文件由许多数据包组成,每个数据包前面都有关于数据类型和大小的说明。如果处理软件读取时,不需要或不能读取某个数据包,则根据数量大小直接跳过去即可。 所有XTF文件都是由...
标签: 电脑入门
PFL文件格式是一种视频动画文件格式。PFL格式文件可以通过MusicFriend软件来制作。它最高支持15帧/秒的视频采样。 PFL格式文件是PhotoFiltre studio(一款功能强大、容易上手的图像编辑软件)的插件文件,类似滤镜的特效,在滤镜菜单中可以找到。
标签: 电脑入门
ico是Icon file的缩写,是Windows的图标文件格式的一种,可以存储单个图案、多尺寸、多色板的图标文件。图标是具有明确指代含义的计算机图形。其中桌面图标是软件标识,界面中的图标是功能标识。图标有一套标准的大小和属性格式,且通常是小尺寸的。每个图标都含有多张相同显示内容的图片,每一张图片具有不同的尺寸和发色数。一个图标就是一套...

经验教程

775

收藏

85
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部