首页
社区
课程
招聘
[原创]RVA计算FOA
发表于: 2021-1-6 15:26 5018

[原创]RVA计算FOA

2021-1-6 15:26
5018

前言

该文章描述了RVA和FOA之间的相互转换。第一部分会有基本的概念补充,第二部分讲解如何计算RVA计算FOA。

作者:天象独行

RVA是指“相对虚拟内存地址”。FOA是指“文件偏移地址”。详细如下图:

首先我来看图中“红色方框”中的内容。它表示PE文件在硬盘中的状态。接下来我们来看看当中的标志“A”。它表示的是文件头到“.rsrc节”的距离。我们将这个距离称为“文件偏移地址”即FOA。我们很容易通过这个偏移地址来计算出“.rsrc节”的地址。

下面我们再来看看图中右边的蓝色方框。它表示的是文件加载到内存当中状态(注释:我们将加载至内存当中的文件称之为“模块”)我们来看图中标识的”A’”。它表示PE文件头至“.rsrc节”的距离,这样的距离我们称之为“相对虚拟内存地址”即RVA。(注释:PE结构内容请参考如下网址文章:http://www.nvnv.xyz/newsinfo/2368194.html

 

 

 

       文件放入到内存之后为什么会产生这样的变化呢?这里大家可以理解为在文件中PE结构的对齐值为200h(200指的是十六进制)。然后在通常情况下来在内存当中的文件的对齐为1000h。为什么需要对齐呢?一定程度上是为了更加快速的计算定位地址。在这个变化的过程中,是通过在节区后面添加0补充来将200h增加到1000h的对齐。

       首先我们来看一下下面这张图:


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 2
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//