2011-11-18 94 views
1

有沒有辦法讀取另一個進程的導入表?
功能ImageNtHeader在這裏不會幫助我,因爲它只適用於我的過程而不適用於其他過程。
我知道我可以讀取整個文件並解析它的PE頭,但是如果文件很大,恐怕會花費很多時間。讀取正在運行的進程的導入表

有沒有辦法直接使用進程的內存來做,而不是從文件中讀取?
任何其他容易和漂亮的方式做到這將是偉大的,以及:)

+3

當文件中有完全相同的信息時,嘗試訪問另一個進程的內存時有零點。無論如何它有95%的可能性在文件系統緩存中,所以你實際上是從內存中讀取的。 –

+0

使用Dll-injection遠程調用ImageNtHeader。這是我能想到在不實際訪問文件的情況下閱讀「IMAGE_NT_HEADERS」的最好方法。 – JosephH

回答

0

只是使用PSAPI或toolhlp32找到流程模塊,您有興趣的內存地址。一旦你有,你可以使用ReadProcessMemory GET所需的信息。否則只是假裝成一個調試器並附加到目標進程,以便你可以完全訪問它的內存,那麼你可以使用windows PE宏。

+0

好的,但如果我打開其他進程作爲調試器。我可以使用哪些函數來讀取它的PE頭。我只發現當前進程的函數... – Idov

+0

@Idov:如果你有完整的內存讀取權限,只要將你想要檢查的exe或dll的'HMODULE'傳遞給你就可以使用'ImageNtHeader'至。如果你缺乏內存讀取權限,那麼你需要使用'ReadProcessMemory' – Necrolis

相關問題