首页 文章

.Net PE文件中的入口点RVA是什么?

提问于
浏览
3

Microsoft's documentation对于PE可选标头标准字段(第25.2.3.1节)中的"Entry Point RVA"字段,该字段应为:

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

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

1 回答

  • 1

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

相关问题