“相对虚拟地址”,相对于什么?

时间:2011-10-21 11:50:34

标签: windows reverse-engineering file-format portable-executable

我刚刚读过它们在磁盘上的文件,RVA和VA加载到内存后的指令偏移量。我还读到,如果一个PE文件完全像在磁盘中一样加载到内存中,那么RVA将与文件偏移量相同(并且发生这种情况会非常不寻常)。

我怀疑 - 在正常情况下,这些RVA相对于什么?特定PE数据结构的开始?

编辑:通过PE数据结构我的意思是 - PE头,DOS头,DOS存根,PE文件头,图像可选头,节表和数据目录。

1 个答案:

答案 0 :(得分:11)

RVA是加载到内存后的相对于图像基址的地址。

MS PE/COFF specification说:

  

相对虚拟地址。在图像文件中,将项目的地址加载到内存后,从中减去图像文件的基地址。项目的RVA几乎总是与它在磁盘上的文件位置(文件指针)不同。