2011-05-23 80 views
2

Microsoft's documentation在PE可選頭標準字段的「入口點RVA」字段(部分25.2.3.1)規定的字段應該是:.Net PE文件中的入口點RVA是什麼?

入口點的

RVA,需要指向字節0xFF的0x25隨後在部分RVA標記執行/讀取的EXE或0的DLL

這是什麼意思?我檢查了一個由c#編譯器生成的PE文件,發現RVA指向描述的字節0xFF 0x25,但接下來的四個字節是0x00402000,在相對虛擬內存範圍之外,不是有效的RVA,我可以告訴。我知道有一個重定位(第25.3.2節),指向這個類型爲「IMAGE_REL_BASED_HIGHLOW」的值,但我不知道這意味着什麼。我也明白它應該調用第25.3.1節中描述的mscoree.dll的「_CorExeMain」(我正在使用可執行文件),但我不明白。

回答

1

0xFF 0x25字節對跳轉dword ptr指令進行編碼。 0x402000值(在這種情況下)是任何.NET EXE導入的本地函數的導入地址表(IAT)的偏移量,即來自mscoree.dll的_CorExeMain。當然,跳到這個地址開始CLR的過程。

+0

其實,這有點誤導。 0x402000不是偏移量,它是_CorExeMain指針的絕對地址。 – 2011-05-23 20:34:12