相对虚拟地址(RVA,Relative Virtual Address):RVA只是内存中的一个简单相对于PE文件装入地址的偏移位置,它是一个“相对地址”,或称“偏移量”。例如,假设一个PE文件从地址400000h处装入,并且它的代码节开始于401000h,代码节的RVA将是:目标地址401000h - 装入地址400000h = RVA 1000h。

PE文件中出现RVA的概念是因为PE的内存映像和磁盘文件映像是不同的,同一数据相对于文件头的偏移量在内存中和在磁盘文件中可能是不同的,为了提高效率,PE文件头中使用的都是内存映像中的偏移量,也就是RVA。RVA仅仅是对于处于节中的数据而言的,对于文件头和节表来说无所谓 RVA和文件偏移,因为它们在被映射到内存中后不管是大小还是偏移都不会有任何改变。

装载基址(Image Base):PE文件装入内存的 基地址。默认情况下,EXE文件的基址为0x00400000,DLL文件的基址为0x10000000。

虚拟地址(VA,Virtual Address):实际的内存地址。虚拟地址(VA) = 基地址(Image Base) + 相对虚拟地址(RVA)。

文件偏移地址(FileOffset、RAW Offset):当PE文件存储在磁盘上时,某个数据的位置相对于文件头的偏移量,成为文件偏移地址(FileOffset)或物理地址(RAW Offset)。文件偏移地址从PE文件的第一个字节开始计数,起始值为0。用十六进制工具打开文件所显示的地址就是文件偏移地址。

图:PE文件磁盘与内存映像结构图

相对虚拟地址,虚拟地址,文件偏移地址相关推荐

  1. 【PE结构】由浅入深PE基础学习-菜鸟手动查询导出表、相对虚拟地址(RVA)与文件偏移地址转换(FOA)...

    0 前言 此篇文章想写如何通过工具手查导出表.PE文件代码编程过程中的原理.文笔不是很好,内容也是查阅了很多的资料后整合出来的.希望借此加深对PE文件格式的理解,也希望可以对看雪论坛有所贡献.因为了解 ...

  2. 由浅入深PE基础学习-菜鸟手动查询导出表、相对虚拟地址(RVA)与文件偏移地址转换(FOA)...

    0 前言 此篇文章想写如何通过工具手查导出表.PE文件代码编程过程中的原理.文笔不是很好,内容也是查阅了很多的资料后整合出来的.希望借此加深对PE文件格式的理解,也希望可以对看雪论坛有所贡献.因为了解 ...

  3. 实现虚拟内存地址到文件偏移地址的转换

    写在前面:这是一次实践作业,用c来写似乎好写一点,但我比较熟悉python,也找到了python相关的库,就用python来实现下,用一晚上把前天写的代码变成了图形化界面,自学过程中,学到了许多东西, ...

  4. 理解PE文件相对虚拟地址(RVA)到文件偏移的转换

    关于PE文件格式的详细描述在网络上可以找到一大堆,最近有空,我也来研究一把.读了很多参考资料,应该说都讲得非常清晰,尤其是看雪学院的iamgufeng翻译的那篇文章,读来受益非浅. 根据我这个菜鸟的阅 ...

  5. 理解文件偏移相对内存偏移节偏移

    问题背景 解决方法 总结 阅读之前注意: 本文阅读建议用时:5min 本文阅读结构如下表: 项目 下属项目 测试用例数量 问题背景 无 0 解决方法 无 0 总结 无 0 问题背景 拜读<0da ...

  6. RvaToFileOffset 内存偏移转成文件偏移(滴水课后作业)

    题目说明 将内存偏移RVA转成文件偏移FOA的函数; 思路是遍历节表,比较节内存偏移VirtualAddress和RVA,确定RVA所在的节之后,计算RVA距离所在节首地址的偏移offset,然后返回 ...

  7. 给定地址段为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为____到____

    此题解题背景默认为8080型CPU,地址总线为16根.(8080-16,8086-20,8088-20,80286-24,80386-32) 16根地址总线寻址能力:(2 ** 16) / 1024 ...

  8. 基于8086CPU微处理器的汇编学习之段地址与偏移地址的分析

    人的记忆总是不靠谱的,早在几年前就看过汇编语言,由于没有总结下来资料,所以忘记了很多,所以重新梳理下汇编方面的知识,与君共勉. ------------------------------------ ...

  9. eclipse中检查项目生成.class文件的地址

    1.项目右键选择properties-->Java Build path-->Source,可以看到下图 在上图中可以看到最下面的一个红圈中就是项目生成.class文件的地址.

最新文章

  1. 谷歌将AutoML应用于Transformer架构,翻译结果飙升,已开源
  2. 第二次作业+105032014001
  3. cpuz北桥频率和内存频率_内存频率怎样计算,一分钟教会你
  4. linux下卸载mysql(rpm)
  5. iOS10 权限访问崩溃
  6. Asp.Net Core中的静态文件-12
  7. [转载]vs2008下安装boost
  8. nested exception is java.lang.UnsatisfiedLinkError: no jacob-1.19-x64 in java.library.path
  9. ubuntu14安卓phalcon
  10. 53、Docker镜像仓库(搭建私有的镜像仓库(浏览器可以访问))
  11. xshell如何上传文件
  12. java混淆工具zelix比较_常用的5款java混淆器
  13. python图片识别文字开源库Easyocr使用
  14. 用canvas实现一个简易的涂鸦画板
  15. win10升级助手_不用QQ也能电脑远程,win10这隐藏功能太良心了!真后悔发现太晚...
  16. 哈工大ltp词性标注列表和ICTCLAS词性列表
  17. 使用华为nexus6p进行拍并照裁剪图片和从相册裁剪图片
  18. java回车监听_java学习:给登入界面添加键盘监听,按回车键登入
  19. stc单片机如何用C程序将IO口设为强推挽输出!!!
  20. 将生成的高光谱数据(hdr文件)加载到dataloader出现的问题解决

热门文章

  1. 最全的模具中英文对照专业术语
  2. 微信朋友圈自动刷评论
  3. python迭代器和生成器的作用_python迭代器与生成器的详细介绍
  4. UG SolidWorks CATIA proe 三维
  5. 数据传输通信协议总结
  6. 【Matlab学习手记】椭圆拟合
  7. ctf练习之Easy upload
  8. 常见标点符号的英文表达
  9. 泰坦尼克号—数据分析(单因素、多因素分析)
  10. 马云大量转卖滴滴股权!什么情况?饿了么全归阿里?