我认识的PE文件之相对虚拟地址 + 文件偏移地址

-------------------------------相对虚拟地址 --------------------------------------------------

在可执行文件中,有很多地方需要指明内存中的地址,例如:引用全局变量时,需要制定它的地址。PE文件的尽管有一个首选的载入地址,但是,它们可以再入到进程的空间的任何地方,所以不能依赖于PE的载入点,由于这个原因,必须有一个方法来指定地址而不依赖PE载入点的地址。

为了在PE文件中 避免所有的内存地址,出现了相对虚拟地址。其概念是:内存中的一个简单的相对于PE文件载入地址时的偏移位置。它是一个“相对”地址,或者称为:偏移量。例如,假设一个EXE文件从地址400000h处载入,并且它的代码区块位于401000h,代码区块的相对虚拟地址为:

目标地址401000h -  载入地址 40000000h = 相对虚拟地址 1000h

将一个虚拟地址转换成真实的地址,只是简单的翻转这个过车个:将实践的装入的地址加上相对虚拟地址  即可得到实际的内存地址,顺便说下,在PE里面,实际的内存地址被称作为虚拟地址,另外,也可以把虚拟地址想象为加上首选装入地址的相对虚拟地址。不要忘了,前面提到的装入地址等同于模块句柄。她们呢之间的关系如下:

虚拟地址 = 基地址 + 相对虚拟地址。

------------------------文件偏移地址 --------------------------------------------------

当PE文件存储在磁盘上时,某个数据的位置相对于头文件的偏移量,称为文件的偏移地址或者物理地址。文件偏移地址从PE文件的第一个直接开始计数,起始值为0。用16进制工具打开文件显示的地址就是文件偏移地址。


~~~~~~~~~~~~~~~~~~~~续~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值