`
deepfuture
  • 浏览: 4420366 次
  • 性别: Icon_minigender_1
  • 来自: 湛江
博客专栏
073ec2a9-85b7-3ebf-a3bb-c6361e6c6f64
SQLite源码剖析
浏览量:80200
1591c4b8-62f1-3d3e-9551-25c77465da96
WIN32汇编语言学习应用...
浏览量:70582
F5390db6-59dd-338f-ba18-4e93943ff06a
神奇的perl
浏览量:103747
Dac44363-8a80-3836-99aa-f7b7780fa6e2
lucene等搜索引擎解析...
浏览量:286937
Ec49a563-4109-3c69-9c83-8f6d068ba113
深入lucene3.5源码...
浏览量:15083
9b99bfc2-19c2-3346-9100-7f8879c731ce
VB.NET并行与分布式编...
浏览量:67979
B1db2af3-06b3-35bb-ac08-59ff2d1324b4
silverlight 5...
浏览量:32365
4a56b548-ab3d-35af-a984-e0781d142c23
算法下午茶系列
浏览量:46128
社区版块
存档分类
最新评论

PE文件格式一览

阅读更多

PE 的意思就是 Portable Executable(可移植的执行体)。它是 Win32环境自身所带的执行体文件格式。它的一些特性继承自Unix Coff (commonobject file format)文件格式。"portable executable"(可移植的执行体)意味着此文件格式是跨win32平台的 : 即使Windows运行在非IntelCPU上,任何win32平台的PE装载器都能识别和使用该文件格式。当然,移植到不同的CPUPE执行体必然得有一些改变。所有 win32执行体 (除了VxD16位的Dll)都使用PE文件格式,包括NT的内核模式驱动程序(kernelmode drivers)。因而研究PE文件格式给了我们洞悉Windows结构的良机。

本教程就让我们浏览一下PE文件格式的概要。

DOS MZheader
DOSstub
PEheader
Section table
Section1
Section2
Section...
Sectionn

上图是 PE文件结构的总体层次分布。所有 PE文件(甚至32位的 DLLs) 必须以一个简单的 DOS MZheader 开始。我们通常对此结构没有太大兴趣。有了它,一旦程序在DOS下执行,DOS就能识别出这是有效的执行体,然后运行紧随 MZ header 之后的 DOS stubDOSstub实际上是个有效的 EXE,在不支持PE文件格式的操作系统中,它将简单显示一个错误提示,类似于字符串 "This program requires Windows"或者程序员可根据自己的意图实现完整的 DOS代码。通常我们也不对 DOS stub 太感兴趣:因为大多数情况下它是由汇编器/编译器自动生成。通常,它简单调用中断21h服务9来显示字符串"This program cannot run in DOSmode"

紧接着 DOS stub 的是PEheader

PEheader PE相关结构 IMAGE_NT_HEADERS 的简称,其中包含了许多PE装载器用到的重要域。当我们更加深入研究PE文件格式后,将对这些重要域耳目能详。执行体在支持PE文件结构的操作系统中执行时,PE装载器将从DOS MZ header中找到 PEheader 的起始偏移量。因而跳过了 DOS stub 直接定位到真正的文件头 PEheader

PE文件的真正内容划分成块,称之为sections(节)。每节是一块拥有共同属性的数据,比如代码/数据、读/写等。我们可以把PE文件想象成一逻辑磁盘,PEheader 是磁盘的boot扇区,而sections就是各种文件,每种文件自然就有不同属性如只读、系统、隐藏、文档等等。 值得我们注意的是 ---- 节的划分是基于各组数据的共同属性: 而不是逻辑概念。重要的不是数据/代码是如何使用的,如果PE文件中的数据/代码拥有相同属性,它们就能被归入同一节中。不必关心节中类似于"data", "code"或其他的逻辑概念:如果数据和代码拥有相同属性,它们就可以被归入同一个节中。(译者注:节名称仅仅是个区别不同节的符号而已,类似"data", "code"的命名只为了便于识别,惟有节的属性设置决定了节的特性和功能)如果某块数据想付为只读属性,就可以将该块数据放入置为只读的节中,当PE装载器映射节内容时,它会检查相关节属性并置对应内存块为指定属性。

如果我们将PE文件格式视为一逻辑磁盘,PEheaderboot扇区而sections是各种文件,但我们仍缺乏足够信息来定位磁盘上的不同文件,譬如,什么是PE文件格式中等价于目录的东东?别急,那就是 PE header 接下来的数组结构 sectiontable(节表)。 每个结构包含对应节的属性、文件偏移量、虚拟偏移量等。如果PE文件里有5个节,那么此结构数组内就有5个成员。因此,我们便可以把节表视为逻辑磁盘中的根目录,每个数组成员等价于根目录中目录项。

以上就是PE文件格式的物理分布,下面将总结一下装载一PE文件的主要步骤:

  1. PE文件被执行,PE装载器检查 DOS MZ header 里的 PE header 偏移量。如果找到,则跳转到 PEheader
  2. PE装载器检查 PE header 的有效性。如果有效,就跳转到PEheader的尾部。
  3. 紧跟 PE header 的是节表。PE装载器读取其中的节信息,并采用文件映射方法将这些节映射到内存,同时付上节表里指定的节属性。
  4. PE文件映射入内存后,PE装载器将处理PE文件中类似 import table(引入表)逻辑部分。
分享到:
评论

相关推荐

    易语言源码全面解读PE格式PE文件格式一览.7z

    通过解压“易语言源码全面解读PE格式PE文件格式一览.7z”文件,你可以深入学习PE格式以及易语言如何在其中实现其特性。这个文档很可能详细阐述了这些概念,并通过实例帮助读者理解PE文件的内部结构。对于想要深入...

    pe格式详解PE文件格式一览

    ### PE格式详解:PE文件格式概览 #### 引言 PE(Portable Executable)文件格式,作为Windows操作系统中执行体文件的标准格式,承载着所有32位执行体(除VxD和16位的DLL外)的组织与运行机制。PE格式不仅体现了跨...

    PE文件格式教程

    PE文件格式一览 检查PE文件有效性 节表引入表引出表等等 好东西跟大家分享

    【软件加密_技术内幕】

    [Trial version] PE文件格式一览.html [Trial version] 1.2 PE文件结构 [Trial version] 1. 检验PE文件的有效性.html [Trial version] 2. File Header (文件头).html [Trial version] 3. Optional Header....

    软件加密解密技术内幕测试第1版CHM读本.rar

     PE文件格式一览  手工构造一个超微型的 PE 文件  Win32调试API  传递给异常处理例程的参数  如何通过崩溃地址找到出错的代码行  利用SEH改变程序流程以达到反跟踪的目的  完全用VB进行ASM编程的示例 ...

    关闭所有信息框-易语言

    此外,提供的压缩包中的文件"全面解读PE格式PE文件格式一览.doc"可能是关于可执行文件(.exe)格式的文档,PE(Portable Executable)是Windows平台上的标准文件格式。虽然这与"关闭所有信息框"的主题直接关联不大,...

    仙采招[XXXX]3号仙居县自来水厂PE100给水管材及管件.docx

    合同基本条款、投标文件格式及相关附件,如投标函、开标一览表、资格证明文件等,为供应商提供了详细的投标指南。 附件中的技能参数比较表,让供应商有机会展示其产品的具体性能优势,如耐腐蚀性、耐久性等。售后...

    技术文件编号编写规范借鉴.pdf

    7. **指导性技术文件编号**:如《产品目录》、《总成检查基准书》等,一般采用"JSB—WI—□ □ □"的格式。 8. **记录表单编号**:与文件控制程序中的四阶表单记录编号方式一致,保证整个文件系统的统一性。 9. **...

    总包工程承包人供应材料设备一览表.pdf

    根据提供的文件内容,可以提炼出以下知识点: 1. 工程材料与设备分类 文档内容中出现了多种不同类型的材料和设备的标识,例如C10、C15等,这些可能代表不同强度等级的混凝土。同时,还有如SBS、SBSA等标识,可能指...

    CAD2005快捷键一览表.pdf

    - PE 或 *PEDIT:编辑多段线。 - ED 或 *DDEDIT:编辑文本内容。 4. 视窗缩放: - P 或 *PAN:平移视图。 - Z + 空格 + 空格:实时缩放。 - Z:局部放大。 - Z + P:返回上一视图。 - Z + E:显示整个图形。...

    CAD快捷键一览.pdf

    - **PE**: 编辑多段线。 - **PL**: 绘制多线。 - **POL**: 绘制多边形。 - **PR**: 打印对象。 - **RE**: 重生成图形。 - **RO**: 旋转对象。 - **SC**: 缩放对象。 - **SL**: 斜拉线。 - **SN**: 设置捕捉模式。 - ...

    解读电气系统图(自己整理的-带电气系统图字母代表一览表).doc

    "电气系统图字母代表一览表" 电气系统图字母代表是一种通用的标记系统,用于表示电气系统中的各种组件和线路。这些字母代表可以帮助电气工程师和技术人员快速识别和理解电气系统的设计和布局。 从提供的文件中,...

    不同行业估值方法汇总.zip

    以下是对这份压缩包文件中可能涉及的知识点的详细阐述: 1. **PE倍数法**:也称为市盈率估值法,是最常见的股票估值方法之一。它通过比较公司的市盈率(股价/每股收益)与同行业的平均市盈率或历史水平,来判断公司...

    蓝牙指令表

    **1.1 指令格式** AT指令通常由“AT”开头,后跟具体的命令字符串,命令字符串可以带有参数。例如,“AT+COMMAND=PARAMETER”形式。某些命令可能需要等待模块响应,这些命令被称为“查询”命令;而有些命令则无需...

    AutoCAD常用命令快捷键

    - W或*WBLOCK(定义块文件):将选定对象保存为外部块文件。 - DIV或*DIVIDE(等分):等分线段、圆或圆弧。 - H或*BHATCH(填充):填充图案或颜色。 3. 修改命令快捷键: - CO或*COPY(复制):复制对象。 -...

    光盘启动盘制作完全手册1.08

    《各类光盘一览》 二十九.虚拟软盘 by lyh728 三十.刻录各种启动光盘的经验小结 三十一.制做大于2.88MB的软盘映像及从光盘启动该映像的方法 三十二.DiskEmu内部命令的简要说明 三十三.实战Windows2000自动集成安装...

    工程竣工资料表格模板.docx

    18. **管道焊缝分布单线图**、**PE管电熔连接质量检查记录**、**PE管热熔连接质量检查记录**、**全自动热熔焊接打印数据粘贴表**、**钢制管道焊接检查记录**、**焊缝返修检查记录**、**焊口无损检测情况统计表**、**...

    IB(NA)-0300479CHN JET-G、JET-G-N1用户手册参数篇.pdf

    根据提供的文件信息,以下是与三菱电机AC伺服系统MR-JET-G用户手册参数篇相关的内容知识点: 1. 安全注意事项:在使用MR-JET-G系列伺服放大器和伺服电机前,用户必须仔细阅读和了解所有的使用说明书、附带资料及...

    软件与服务行业周报:计算机板块进入又一轮进攻阶段.pdf

    根据提供的文件内容,以下是详细的知识点解析: 1. 计算机板块行情分析: 本周计算机板块表现良好,自年初以来涨幅排在第三位,达到9.74%。然而,与创业板整体上涨3.64%的表现相比,计算机板块的表现稍逊一筹,上涨...

Global site tag (gtag.js) - Google Analytics