ImageBase:表示基准地址,表示PE文件(DLL文件为主)加载到进程的虚拟内存时的特定位置
VA,虚拟地址,也就是程序被加载到内存中的地址
RVA,以虚拟地址前边加上个“相对的”,也就是说它还是按虚拟地址来换算,只不过不是从0开始,而是把一个模块的基址作为参考点。
VA与RVA满足下面的换算关系:
RVA + ImageBase = VA
PE(Portable Executable)头部信息大多以RVA形式存在。原因在于,PE文件(主要是DLL(DLL,Dynamic Linked Library))加载到进程虚拟内存的特定位置时,该位置可能已经加载了其它PE文件(DLL)。此时必须通过重定位(Relocation)将其加载到其它空白的位置,若PE头信息使用的是VA,则无法正常访问。因此,使用RVA来定位信息,即使发生了重定位,只要相对于基准位置的相对地址没有变化,就能正常访问到指定信息,不会出现任何问题。
FA(File Address,文件地址):指的是可执行文件在存储设备(如硬盘)上的地址。它是文件在存储介质中的偏移量,用于标识文件中的特定位置。在分析可执行文件的结构或者进行文件操作时,需要使用 FA 来定位文件中的数据。与虚拟地址不同,FA 是基于文件系统的地址,而虚拟地址是在程序运行时操作系统为程序分配的内存地址。