0.介绍
    PE是Windows操作系统性爱使用的可执行文件格式。它是微软在UNIX平台的COFF(Common Object File Format,通用对象格式)基础上而成的(在Windows开发环境中,PE格式也称为PE/COFF格式。)。最初(正如Portable这个单词所代表的那样)设计用来提高程序在不同操作系统上的移植性,但实际上这种文件格式仅使用在Windows系列的操作系统。
    PE文件是指32位的可执行文件,也称为PE32。64位的可执行文件称为PE+或PE32+,是PE(PE32)的一种扩展形式(注意不是PE64)
事实上,一个文件是否是PE文件与其扩展名无关,即表明PE文件可以是任何扩展名。
1.PE文件格式
    PE文件格式种类:
                   可执行系列:EXE/SCR
                   驱动程序系列:SYS/VXD
                   库系列:DLL/OCX/CPL/DRV
                   对象文件系列:OBJ
        注:严格来讲,OBJ(对象)文件之外的所有文件都是可执行的。DLL/SYS文件等虽然不能直接在Shell(Explorer.exe)中运行,但可以使用其他方法(调试器、服务等)执行。
2.基本结构
    从DOS头(DOS Header)到节区头(Section Header)是PE头部分,其下的节区合成PE体。文件中使用偏移(offset),内存中使用VA(Vitual Address,虚拟地址)来表示位置。文件加载到内存时,情况就会发生变化(节区的大小、位置等)。文件的内容一般可分为代码(.text)、数据(.data)、资源(.rsrc)节,分别保存。
        注:有不同种开发工具(VB/VC++/...)与编译选项,节区的名称、大小、个数、储存的内容都是不同的。它们根据不同的用途分类保存到不同的节中。
    各节区头定义了各节区在文件或内存中的大小、位置、属性等。
    PE头与各节区的尾部存在一个区域,称为NULL填充(NULL padding)。(PE文件中文件/内存中节区的起始位置应该在各文件/内存最小单位的倍数位置之上,空白区域将用NULL填充。)
3.VA&RVA
VA指的是进程虚拟内存的绝对地址,RVA(Relative Virtual Address,相对虚拟地址)指从某个基准位置(ImageBase)开始的相对地址。VA与RVA满足下面的换算关系。
RVA+ImageBase=VA
PE头内部大多都以RVA形式存在,原因在于,PE文件(主要是DLL)加载到进程虚拟内存的特定位置时,该位置可能已经加载了其他的PE文件(DLL)。此时必须通过重定位将其加载到其他空白的位置,若PE头信息使用的是VA,则无法正常访问。因此使用了RVA来定位信息,即使发生了成定位,只要相对于基准位置的相对地址没有变化,就能正常访问到指定信息,就不会出现任何问题。

PE文件格式详解(0)相关推荐

  1. 【破解教程】PE文件格式详解(上)

    PE文件格式详解(上) 摘要 Windows NT 3.1引入了一种名为PE文件格式的新可执行文件格式.PE文件格式的规范包含在了MSDN的CD中(Specs and Strategy, Specif ...

  2. PE 文件格式 详解 一

    内容引用自:看雪<逆向工程原理>,http://www.blogfshare.com/pe-header-one.html . 如有错误,欢迎留言. 1.  PE文件是windows操作系 ...

  3. PE文件格式详解(7)

    调试信息段,.debug 调试信息位于.debug段之中,同时PE文件格式也支持单独的调试文件(通常由.DBG扩展名标识)作为一种将调试信息集中的方法.调试段包含了调试信息,但是调试目录却位于早先提到 ...

  4. PE文件格式详解(3)

    PE可选头部 PE可执行文件中接下来的224个字节组成了PE可选头部.虽然它的名字是"可选头部",但是请确信:这个头部并非"可选",而是"必需&quo ...

  5. PE文件格式详解(手工实现一个可执行文件)

    [转载文章-看雪学院]非常经典 http://www.pediy.com/kssd/index.html 其实还是很多细节的地方没弄懂,保存下来,认真分析分析. [文章标题]: 手写可执行程序 [文章 ...

  6. [系统安全] PE文件格式详解1

    文章目录 PE文件概述 PE文件相关各类地址 MS-DOS头① DOS Stub② PE头③ Signature字段 IMAGE_FILE_HEADER结构体 IMAGE_OPTIONAL_HEADE ...

  7. PE文件格式详解(二)

    0x00 前言 上一篇讲到了PE文件头的中IMAGE_FILE_HEADER结构的第二个结构,今天从IMAGE_FILE_HEADER中第三个结构sizeOfOptionalHeader讲起.这个字段 ...

  8. PE文件格式详解(八)

    0x00 前言 前面了解了PE文件的输入和输出,今天来看看另一个重要的结构--资源.资源结构是很典型的树形结构,层层查找,最终找到资源位置. 0x01 资源结构介绍 Windows程序的各种界面成为资 ...

  9. PE文件详解(教程1-7)

    PE文件详解(教程1-7) ========================================= PE教程1: PE文件格式一览 PE 的意思就是 Portable Executable ...

  10. PE文件结构详解(二)可执行文件头

    by evil.eagle 转载请注明出处. http://blog.csdn.net/evileagle/article/details/11903197 在PE文件结构详解(一)基本概念里,解释了 ...

最新文章

  1. Nutanix CE on Lenovo W520 初探
  2. 为什么说,我们可能是宇宙中唯一的智慧生命?
  3. hive内部表与外部表区别
  4. linux系统下cpu如何测试,Linux 系统下如何查看CPU个数
  5. 计算机电路逻辑分析基础知识答案,计算机电路基础试卷及答案.pdf
  6. JSON JsonArray和JsonObject学习资料
  7. python使用proxy
  8. Qt creator5.7 OpenCV249之均值滤波(含源码下载)
  9. skcket编程实例
  10. php包含文件不存在,PHP包含文件错误,服务器有该文件,直接访问提示不存在
  11. 蔡司数码视疲劳测试软件_居家办公期间,频繁使用电子数码产品小心患上这种眼病...
  12. linux目录 31:1,Linux常用基础命令
  13. Java中定时任务的6种实现方式,你知道几种?
  14. phpspider PHP 爬虫
  15. 【转载】:马家寨:揭开陈圆圆携吴三桂后裔隐藏与繁衍真相
  16. 计算机主板手工,教你DIY一台笔记本(伪),简单粗暴成本低
  17. 抱明月而长终;知不可乎骤得
  18. 调用android的拍照或本地相册选取再实现相片上传服务器,Android调用系统相机、本地相册上传图片(头像上传(裁剪)、多张图片上传)...
  19. 使用nsis制作的安装包安装后,无法卸载干净的问题
  20. 猿创征文|收到谷歌开发者大会正式邀请(Java学生的自学之路)

热门文章

  1. 新冒险岛2010java_冒险岛3转问题及答案,2010-03-05更新
  2. 数据结构导论-不得不知的基础
  3. 记录一次成功的EC、BIOS降级操作
  4. INA217构成的专业级微型话筒(麦克风)前置放大典型电路图
  5. 【计算机网络学习笔记04】网络体系架构与网络协议
  6. ros2之tello无人机
  7. 基于MFC对话框的qq游戏连连看外挂
  8. HYSBZ 1406 密码箱
  9. 2018年,Windows Phone 8.1还能做什么
  10. 小甲鱼 OllyDbg 教程系列 (十四) : 模态对话框 和 非模态对话框 之 URlegal 和 movgear...