我知道重定位表存在于图像未在其首选地址加载时的情况,但如果图像未在其首选地址加载,是否不需要相对于实际加载地址重新定位所有内容?这不是 RVA 的全部意义吗?是什么使在重定位表中有条目的地址不同?
(我的第一个问题,如果我犯了错误,请指出错误。谢谢。)
我知道重定位表存在于图像未在其首选地址加载时的情况,但如果图像未在其首选地址加载,是否不需要相对于实际加载地址重新定位所有内容?这不是 RVA 的全部意义吗?是什么使在重定位表中有条目的地址不同?
(我的第一个问题,如果我犯了错误,请指出错误。谢谢。)
相对虚拟地址 = RVA 它在地址空间内是相对的
jmp here+78 总是从这里跳+78
现在跳转 402078 将始终尝试跳转到 402078
这只会在 402078 的首选加载地址是 400000 并且二进制文件时成功
加载 400000
如果它以 600000 加载,则该地址空间中不存在 402078,将导致访问冲突
这里需要重定位表
加载二进制文件时加载器将检查首选地址并在加载时将 402078 修补为 602078