-
-
[原创]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期)
赞赏
他的文章
- [分享]应急响应工具-日志分析 4913
- [原创]MEMZ彩虹病毒分析 15715
- [原创]恶意程序分析-去除恶意程序混淆-学习记录 13181
- [原创]Ret2libc 学习记录笔记 15594
- [原创]基本语句逆向分析 12255
看原图
赞赏
雪币:
留言: