【问题标题】:What is the Entry Point RVA in a .Net PE file?.Net PE 文件中的入口点 RVA 是什么?
【发布时间】:2011-05-23 18:37:21
【问题描述】:

Microsoft's documentation 用于 PE 可选标头标准字段(第 25.2.3.1 节)中的“入口点 RVA”字段,说明该字段应为:

入口点的 RVA,需要指向字节 0xFF 0x25,后跟 RVA 在标记为 EXE 的执行/读取或 DLL 的 0 的部分中

这是什么意思?我检查了一个由 c# 编译器生成的 PE 文件,发现一个 RVA 指向所描述的字节 0xFF 0x25,但接下来的四个字节是 0x00402000,超出了相对虚拟内存的范围,不是我知道的有效 RVA .我知道有一个重定位(第 25.3.2 节)指向这个类型为“IMAGE_REL_BASED_HIGHLOW”的值,但我也不知道这意味着什么。我也知道它应该调用第 25.3.1 节中描述的 mscoree.dll 的“_CorExeMain”(我正在使用可执行文件),但我不明白如何。

【问题讨论】:

    标签: .net portable-executable


    【解决方案1】:

    0xFF 0x25 字节编码跳转 dword ptr 指令。 0x402000 值(在这种情况下)是任何 .NET exe 导入的一个本机函数(即来自 mscoree.dll 的 _CorExeMain)在导入地址表 (IAT) 中的偏移量。当然,跳转到这个地址会启动进程的 CLR。​​

    【讨论】:

    • 实际上,这有点误导。 0x402000 不是偏移量,它是指向 _CorExeMain 的指针的绝对地址。
    猜你喜欢
    • 1970-01-01
    • 2013-11-05
    • 1970-01-01
    • 2015-11-15
    • 1970-01-01
    • 2016-02-16
    • 1970-01-01
    • 2021-10-30
    • 1970-01-01
    相关资源
    最近更新 更多