【问题标题】:Difference between offset and RVA偏移量和 RVA 之间的差异
【发布时间】:2012-03-08 07:06:41
【问题描述】:

相对虚拟地址和相对于文件基址的偏移量有什么区别??

【问题讨论】:

    标签: exe portable-executable


    【解决方案1】:

    RVA 是相对虚拟地址,即与首选基地址的距离。首选基地址在 PE 标头中说明,并且是在内存中加载可执行文件时映像在内存中的(首选)虚拟地址。

    文件偏移量是您必须从 PE 文件的开头读取才能到达文件中某处的字节数。所以,如果你有一个节,你会在节头中找到两件事:节的 RVA 和它在文件中的偏移量;您还会发现两种大小,一种是加载后该节将获得多少虚拟内存,另一种仅指示 PE 文件中节数据的大小。

    PE 中的许多引用都以 RVA 的形式给出。在这种情况下,您需要检查所有节标题(或具有某种映射)以获取引用的 PE 文件中的偏移量。

    【讨论】:

    • 还有其他方法可以将 rva 转换为偏移量吗?
    • 相对虚拟地址和虚拟地址有什么区别?
    • 要将 rva 转换为偏移量,您必须手头有 rva 遍历节标题,直到找到 rva 范围的节,如字段“virtual_address”和“virtual_size” ,包含您的 rva。
    • 嘿,dsign,只想再问你一件事,我不确定这件事,所以可能你能帮忙.. 当加载程序将程序加载到内存中执行时,每个程序是否开始虚拟地址为 0,还是从加载到 RAM 的物理地址开始?我希望你明白我想问什么..
    • 一个 rva 是相对于基地址的。基地址是映像的首选加载地址,在 PE 的可选标头中给出。检查此文件以获取 PE 修补示例:alcides-mp.com/wp-content/plugins/download-monitor/…
    猜你喜欢
    • 2013-11-27
    • 1970-01-01
    • 1970-01-01
    • 2017-07-09
    • 2019-03-04
    • 1970-01-01
    • 2022-09-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多