电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

PE结构详解(64位和32位的差别)VIP免费

PE结构详解(64位和32位的差别)_第1页
1/22
PE结构详解(64位和32位的差别)_第2页
2/22
PE结构详解(64位和32位的差别)_第3页
3/22
1 基本概念 下表描述了贯穿于本文中的一些概念: 名称 描述 地址 是“虚拟地址”而不是“物理地址”。为什么不是“物理地址”呢?因为数据在内存的位置经常在变,这样可以节省内存开支、避开错误的内存位置等的优势。同时用户并不需要知道具体的“真实地址”,因为系统自己会为程序准备好内存空间的(只要内存足够大) 镜像文件 包含以EXE 文件为代表的“可执行文件”、以DLL 文件为代表的“动态链接库”。为什么用“镜像”?这是因为他们常常被直接“复制”到内存,有“镜像”的某种意思。看来西方人挺有想象力的哦^0^ RVA 英文全称Relatively Virtual Address。偏移(又称“相对虚拟地址”)。相对镜像基址的偏移。 节 节是PE 文件中代码或数据的基本单元。原则上讲,节只分为“代码节”和“数据节”。 VA 英文全称Virtual Address。基址 2 概览 x86 都是32 位的,IA-64 都是64 位的。64 位Windows 需要做的只是修改 PE 格式的少数几个域。这种新的格式被称为PE32+。它并没有增加任何新域,仅从 PE 格式中删除了一个域。其余的改变就是简单地把某些域从 32 位扩展到 64 位。在大部分情况下,你都能写出同时适用于32 位和 64 位PE 文件的代码。 EXE 文件与 DLL 文件的区别完全是语义上的。它们使用的是相同的PE 格式。惟一的不同在于一个位,这个位用来指示文件应该作为EXE 还是DLL。甚至 DLL 文件的扩展名也完全也是人为的。你可以给 DLL 一个完全不同的扩展名,例如.OCX 控件和控制面板小程序(.CPL)都是DLL。 图1 解释了Microsoft PE 可执行文件格式: PE 文件总体上分为“头”和“节”。“头”是“节”的描述、简化、说明,“节”是“头”的具体化。 3 文件头 PE 文件的头分为DOS 头、NT 头、节头。注意,这是本人的分法,在此之前并没有这种分法。这样分法会更加合理,更易理解。因为这三个部分正好构成 SizeOfHeaders 所指的范围,所以将它们合为“头”。这里的3 个头与别的文章的头的定义会有所区别。 节头紧跟在 NT 头后面。 3.1 DOS 头(PE 文件签名的偏移地址就是大小) 用记事本打开任何一个镜像文件,其头2 个字节必为字符串“MZ”,这是Mark Zbikowski 的姓名缩写,他是最初的MS-DOS 设计者之一。然后是一些在 MS-DOS 下的一些参数,这些参数是在 MS-DOS 下运行该程序时要用到的。在这些参数的末尾也就是文件的偏移 0x3C(第 60 字节)处是...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

PE结构详解(64位和32位的差别)

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部