PE文件格式学习心得【1】

原创 2012年03月26日 10:23:03

PE文件是Protable Executable File Format(可移至的执行体),是目前Windows平台上的主流可执行文件格式。

PE可以简单理解为一个结构,这个结构用来告诉Windows加载器如何去加载这个文件。PE会告诉它其资源、导入表等信息。而这些信息对应在PE文件的不同成员变量。暂时理解PE文件,通过其几个主要的结构来学习。

先给张有总结性的网上大量流传的PE文件格式图:


我觉得,还有必要加深理解几个和地址有关的定义:基地址、相对虚拟地址、文件偏移地址。

基地址吧,PE文件被加载进入内存后,其映射文件的起始位置就是基地址,其实我们的模块句柄也是这个值。用VC的默认选项编译的EXE基地址为00400000h,DLL基地址为10000000h。

相对虚拟地址,其作用吧,简单点说,避免在PE文件中有确定的内存地址。既是相对于文件载入点的大小吧,目标地址 - 装入地址 = RVA。内存的虚拟地址 = 基地址  + RVA。

文件偏移地址,既是物理地址吧,从0开始计数,用UE等打开看到的地址就是这个。


然后开始学PE文件的格式了。差点忘了说,这些结构名有些许出入,大多是32位和64位的差异。可以到我们的系统盘(C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include里面的winnt.h头文件)的里面找找看。

首先是被称为DOS头部的结构,这个,其实现在没太大价值的感觉。只用知道在3ch位置,记录着PE文件头的文件偏移地址(用4个Bytes)即可。由于Intel是小端规则,所以需要留意“B0000000”代表“000000B0”地址。

然后就是我们的PE文件头了,IMAGE_NT_HEADER由三部分组成,上面也看到了。

Signature字段记录着“PE00”。用UE打开可以很明显看到。

IMAGE_FILE_HEADER结构的话,成为映射文件头结构吧。需要留意的可能是文件属性字段吧,普通的EXE文件的话则为010fh,DLL文件的话则为0210h。

IMAGE_OPTIONAL_HEADER结构,是对上面的一个补充。具体结构也上图吧。


以此类推,可以看出,上图大概可以帮我们理解PE文件格式了。然后输入表、输出表、块、基地址重定位等,都需要在此基础上理解了才能学好。所以,先消化这些。


PE文件格式概述

本章提要·           PE文件格式概述·           PE文件结构·           如何获取PE文件中的OEP·           如何获取PE文件中的资源·        ...
  • bairny
  • bairny
  • 2007年05月22日 11:00
  • 8351

PE文件格式详解(一)

转载地址点击打开链接
  • zhao0811112157
  • zhao0811112157
  • 2014年12月26日 21:53
  • 998

图解用工具对PE文件格式做初步研究

工具: PETool,MiniHex,PEViewer 以本机notepad.exe为研究对象。本机64位,该notepad.exe是64位应用程序。 1 用peviewer打开 PE文件大体包括四部...
  • bcbobo21cn
  • bcbobo21cn
  • 2016年05月05日 14:12
  • 1746

分析PE格式文件中的图标信息

 PE格式的资源段是比较复杂的,目前几种介绍PE格式的书籍在介绍到这部分时都是不够深入(本人认为写得比较好的有《Windows95系统程式设计奥秘》候捷译本),因此不得不拿起工具自已研究,分析PE格式...
  • lbird
  • lbird
  • 2007年02月09日 11:23
  • 2086

PE文件格式[1]

Preface------- The PE ("portable executable") file format is the format of executablebinaries (DLLs...
  • cuit
  • cuit
  • 2012年12月26日 11:20
  • 572

PE文件格式详解(1)

作者:MSDN 译者:李马 (http://home.nuc.edu.cn/~titilima) 摘要 Windows NT 3.1引入了一种名为PE文件格式的新可执行文件格式。PE文件格式...
  • Matrix_Designer
  • Matrix_Designer
  • 2010年09月12日 19:55
  • 318

PE文件格式详解(1)

摘要  Windows NT 3.1引入了一种名为PE文件格式的新可执行文件格式。PE文件格式的规范包含在了MSDN的CD中(Specs and Strategy, Specifications, W...
  • titilima
  • titilima
  • 2003年12月25日 10:32
  • 2869

解读PE/COFF文件格式

Windows平台内开发操作系统,在用Cygwin版的GCC编译源文件是遇到这样一个问题,如果使用gcc –c bootpack.c会生成bootpack.o文件,使用HEX编辑器打开改文件你会看到这...
  • tyrone1979
  • tyrone1979
  • 2006年08月04日 08:18
  • 6587

PE文件和COFF文件格式分析——签名、COFF文件头和可选文件头1

本文将讨论PE文件中非常重要的一部分信息。(转载请指明来源于breakSoftware的CSDN博客)         首先说一下VC中对应的数据结构。“签名、COFF文件头和可选文件头”这三部分信...
  • breaksoftware
  • breaksoftware
  • 2012年07月19日 19:20
  • 4124

PE文件格式系列(一)——探究PE文件常见Section作用

最近由于各种原因想要研究一下PE文件,要彻底研究PE和COFF文件格式当然是非研究微软自己的技术白皮书——《Microsoft Portable Executable and Common Objec...
  • guoduhua
  • guoduhua
  • 2016年12月17日 13:53
  • 252
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PE文件格式学习心得【1】
举报原因:
原因补充:

(最多只允许输入30个字)