2012-04-10 60 views
1

我正在讀取PE文件的導入表,並且我能夠從IMAGE_IMPORT_DESCRIPTOR結構中獲取它從中導入的DLL的名稱,但找不到DLL路徑在哪裏。 我如何閱讀它們?從PE導入表中獲取DLL的完整路徑

+0

是否可以在運行時執行此操作?這會容易很多。 – 2012-04-10 16:38:10

+0

不......我恐怕在exe開始運行之前我需要知道這一點。 :/ – Idov 2012-04-10 16:50:33

+1

您必須手動執行此操作嗎?如果它只是你想要的路徑,你可以通過運行'depends'命令行來實現:http://www.dependencywalker.com/help/html/hidr_command_line_help.htm – 2012-04-10 16:58:23

回答

4

您必須等到運行時才能獲取導入的DLL的路徑。這是因爲答案取決於加載庫時的運行時環境。

例如,兩個不同的程序可能有兩個不同的DLL搜索路徑。因此,這兩個程序的導入DLL的路徑可能會有所不同。

+0

嗯......因爲我之前需要這些信息在執行過程中,我可以自己搜索這些路徑作爲文件名,就像windows一樣。對? :) – Idov 2012-04-10 17:26:32

+0

在理論上是的,但要得到一個完全匹配的Windows算法將是非常困難的。 – 2012-04-10 17:34:29

1

你不能這樣做,系統將在運行時從適當的位置加載相應的dll。在這一點之前找出路徑是不可能的。

1

PE Images只包含從屬路徑的名稱(和擴展名)。