PE文件格式详解

PE 视频学习笔记 PE 视频学习 1.认识PE 首先,先介绍什么是可执行文件(executable file):可以由操作系统进行加载执行的文件 而 PE(Portable Executable) 就是windows操作系统的可执行文件结构,一种可移植的可执行文件,即可在任何windows平台上运行 另外 **ELF(Executable and Linking Format)**是Linux系统的可执行文件结构 1.1PE文件格式的运用 病毒与反病毒 外挂与反外挂 加壳与脱壳 无源码修改功能、软件汉化。。。等 1. 阅读详情

摘要

本文描述了Windows系统的PE文件格式。

PE文件格式简介

PE(Portable Executable)文件格式是一种Windows操作系统下的可执行文件格式。PE文件格式是由Microsoft基于COFF(Common Object File Format)格式所定义的,它规定了Windows可执行文件(.exe)和动态链接库(.dll)的结构,包括文件头、节表、导入和导出表、资源表、重定位表等。PE格式被广泛应用于Windows操作系统及Windows软件开发中,它的特点是文件结构清晰、易于扩展、安全性高等。

PE文件格式分为PE32和PE32+,Windows 32位系统采用的是PE32,Windows 64位系统采用的是PE32+。PE32和PE32+之间的区别如下:

1. PE32+将PE32中的32位RVA字段和尺寸相关字段扩展成了64位。

2. 在PE32+中使用了新的数据结构,其中重要的变化是IMAGE_OPTIONAL_HEADER结构的扩展,以包括更多的字段和属性。

3. PE32+中使用了更多的CPU指令集,包括SSE2、SSE3和AVX等指令,以提高程序的性能和处理能力。

本文以PE32文件格式和x86机器模型作为示例进行讲解。

PE文件主要由若干节(Section)构成,节是PE文件格式的核心概念。

PE文件中节与CPU架构中的段(Segment)的概念相对应。加载器将不同内存访问属性的节被加载进内存后,由CPU的LDTR和GDTR指示的段描述表来描述。程序运行时,CPU通过的各种段选择子(如CS、DS、SS、ES、FS、GS等)来选择对应的段(如:代码段.text、数据段.data)的段描述符,通过前端总线(FSB)来访问段内的代码或数据。

COFF文件结构图

Windows系统中的VC编译出来的目标文件格式采用的COFF文件格式,其结构如下:

COFF(Common Object File Format)文件格式起源于UNIX系统,最早是由AT&T Bell Laboratories和Microsoft合作开发出来的。这种文件格式最初用于存储编译后的目标文件和共享库,并被广泛应用于UNIX系统中。COFF文件格式在1985年被POSIX标准所接受,并逐渐成为了一种通用的目标文件格式。

在后来的Windows平台中,微软对COFF进行了一些修改和扩展,并将其用作PE(Portable Executable)文件的基础格式。PE文件包含了Windows中可执行文件和动态链接库的细节信息,并成为了Windows系统中的主要二进制文件格式。在Windows上,COFF和PE同宗同源,联系紧密,可统称为COFF/PE格式。

PE文件结构图

PE文件结构定义

PE文件结构的定义在winnt.h头文件中,winnt.h典型路径为:

C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\um\winnt.h

PE文件格式 PE即Portable Executable,是Windows OS下使用的可执行文件格式PE文件是指32位的可执行文件,亦称为PE32。64位的可执行文件称为PE+或PE32+,是PE文件的一种扩展形式。PE文件种类如下表:PE文件基本结构:从DOS头至节区头是PE头部分,下面的节区合称PE体。文件的内容一般分为代码(.text)、数据(.data)、资源(.rsrc)节,分别保存。VA&am... 阅读详情

相关推荐

PE文件格式总结 - DOS文件头、PE文件头、节表和表详解

PE文件格式总结 - DOS文件头、PE文件头、节表和表详解

dvlinker的技术专栏 1万+

PE文件格式详解(上)

PE文件格式详解(上)作者:MSDN译者:李马 (http://home.nuc.edu.cn/~titilima) 摘要    Windows NT 3.1引入了一种名为PE文件格式的新可执行文件格式PE文件格式的规范包含在了MSDN的CD中(Specs and Strategy, Specifications, Windows NT File Format Specifications)

1461

RT-Thread Studio与CubeMX联合编程(超级详细)

RT-Thread Studio与CubeMX联合编程 本文章参考以下文章: https://blog.csdn.net/qq_40824852/article/details/122596043 https://zhuanlan.zhihu.com/p/395106066 https://blog.csdn.net/m0_37697335/article/details/108890584 一、简介 经过上次对RT-Thread Studio的初步尝试,发现RT-Thread Studio中存在官方支

zhuzhu的博客 3万+

PE文件格式(一)

PE文件是Windows操作系统下使用的可执行文件文件格式PE文件是指32位的可执行文件,也叫PE32。64位的可执行文件称为PE+或者PE32+,是PE文件的一种扩展形式(不是PE64)。对应的结构体名字:IMAGE_OPTIONAL_HEADER32 STRUCT由于可选头字段数目多达32个,这里没有对全部字段的定义进行列举,只列举了几个相对重要的一些字段(12个)。所有含代码的节的总大小所有含已初始化数据的节的总大小所有含未初始化数据的节的大小程序执行入口RVA。

周星星的博客 9327

最详细PE文件格式讲解!!!!!

每个PE文件都是以一个DOS程序开始的,有了它,一旦程序在DOS下执行,DOS就能执行识别出这是一个有效的执行体,然后运行紧随MZ header的DOS stub(DOS块)。e_lfanew 字段是真正的PE文件头的相对偏移(RVA),指向真正的PE头的文件偏移位置,占用4字节,位于文件开始偏移3ch字节处。当PE文件通过加载器载入内存后,内存中的版本称为模块(Module),映射文件的起始地址称为模块句柄(hModule),可以通过模块句柄访问内存中的其他数据结构。基地址的值是由PE文件本身设定的。

SXXYNHHXX的博客 4097

【转帖】PE文件格式详解

PE文件格式详解(上)作者:MSDN译者:李马 (http://home.nuc.edu.cn/~titilima) 摘要    Windows NT 3.1引入了一种名为PE文件格式的新可执行文件格式PE文件格式的规范包含在了MSDN的CD中(Specs and Strategy, Specifications, Windows NT File Format Specifications)

floweronwarmbed的专栏 705

1-PE文件格式详解

WindowsPE文件结构详解

weixin_40332490的博客 1199
上一篇: MASM入门教程
下一篇: ELF文件格式详解
ADM实验室
博客等级 码龄20年 156粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ADM实验室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值