曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 6598|回复: 0
打印 上一主题 下一主题

PE格式简介及相关术语

[复制链接]

4917

主题

5879

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34382
跳转到指定楼层
楼主
发表于 2010-12-4 23:24:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
PE (Portable Executable) 是 Windows 的可执行文件格式,它使用一个平面地址空间存放所有数据和代码。整个文件内容被分割为不同的 section ,这些 section 中包含代码或数据,且每个 section 都有各自的属性(仅包含代码,仅包含数据,可读可写或只读)。

每个 section 都有其名字,常见的命名有 .rdata, .data, .idata, .text, .rsrc 等,其含义如下:
.rdata运行时只读数据段
.data初始化数据段
.idata包括外来的 DLL 中的函数及数据信息,也称为数据表
.text代码段,期间内容全部为指令代码
.rsrc包含全部的资源,如图标,菜单,位图等


PE 格式的一个特点就是磁盘上的数据结构与内存中的结构一致。加载一个可执行到内存主要就是将一个 PE 文件的某一部分映射到内存的地址空间中。这样,磁盘中的结构和内存中的结构就一一对应起来。

PE 文件结构大致如下图所示:


磁盘到内存映射如下所示:


相关术语:
      程序入口点(Entry Point):PE 文件执行时的入口点,即程序执行时的第一行代码。在用 LordPE 查看时,如可以看到一个程序的入口点为 000013A0,映像基地址为 40000000;同时,如果在 ollydbg 调试器里设置“第一次暂停在 WinMain“(调试选项-->事件-->设置第一次暂停于..),那么当加载可执行文件时,程序会停在 winMain 的第一条指令地址处(push ebp),这条地址就是 400013A0 。
      基地址:当可执行文件被加载到内存中时,被映射的初始地址即为基地址。
      虚拟地址:在保护模式下,程序所访问的地址都是虚拟地址。如上面的 400013A0 就是虚拟地址。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2024-5-8 23:38 , Processed in 0.061896 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表