2010-08-18 26 views
1

我的應用程序創建一個暫停的進程,通過VirtualQueryEx()獲取進程的信息,但使用EnumProcessModules()獲取進程的模塊信息失敗。如何枚舉進程的模塊?

上述任務僅在調試器中未創建進程並創建斷點(因此程序在執行調用之前運行)時完成。

我想寫一個非常體面的反彙編程序,因此我需要運行一個目標進程掛起,但EnumProcessModules()不能在掛起的進程上工作。

是否有替代方案?

回答

1

我在幾年前處理過這樣的事情。如果我沒有記錯,我最終做的是創建暫停的任務,然後GetThreadContext,設置其陷阱標誌SetThreadContext,恢復線程(運行一條指令),然後使用EnumProcessModules

當然,也許還有其他方法可以解決這個問題,但至少在內存服務的時候,這就是我當時想到的,我似乎記得它的工作。

+0

我恢復線程後,程序正常執行,不僅一條指令。陷阱標誌被設置爲0x100。 – qwerty101 2010-08-19 13:06:41