2012-07-21 74 views
3

規格從遠程進程PEB:Windows 7的64位時,Visual C++獲得在Win 7

目的:我想從一個示例程序遠程PEB(例如CALC.EXE)。我找到了proc ID,並且我已經開啓了處理所有權利的流程。現在我已經開始編寫一個類來使用PROCESS_BASIC_INFORMATION從進程中檢索PEB的位置。

問題:我發現了幾個帖子在別處,似乎表明NtQueryInformationProcess轉過身MS拉屎。一篇文章提出了一種動態運行時的方法 - 將NtQueryInformationProcess從ntdll.dll中鏈接出來。不過,我認爲這從長遠來看是不穩定的(MS可能會在明天刪除NtQueryInformationProcess)而沒有廣泛的錯誤處理。

這個想法稍後在this thread中實現,然後由Mike2343建議應該「使用其他方法」。

問題:什麼是另一種方法來找到不涉及NtQueryInformationProcess的遠程進程的PEB?

感謝任何花時間看這個的人。

+1

NtQueryInformationProcess是本機Windows API的一部分。這是沒有記錄,並強烈地從一個版本的Windows更改爲另一個。它被記錄在案的唯一原因是因爲他們被迫與司法部達成和解。依賴它是非常不明智的。您完全沒有提及*爲什麼*您需要PEB,因此您從記錄在PEB中的信息的備選方案中減少了自己的負擔。 – 2012-07-21 16:09:52

+0

我需要它進行所有事情的實驗,但我想一個特定的和典型的實例會有所幫助:PEBBaseAddress - > ImageBaseAddress - >返回PLoaded_Image結構 - >遠程導入地址 - > IAT和ILT。 – user850275 2012-07-21 16:32:13

+0

我想我可以從[GetModuleHandle](http://msdn.microsoft.com/en-us/library/ms683199%28VS.85%29.aspx)獲取圖像的基地址。雖然,我不確定32位和64位之間是否有差異。 – user850275 2012-07-21 17:29:51

回答

2

方法我最後使用:

我偷了非常all of this code和固定它爲64位。我花了大量時間圍繞着various文件,涉及到所有不同的headersstructs。我還遇到了一個關於PE32+ format的問題,jcopenha非常友好,可以解決我可能遇到的一些問題。考慮到這些問題後,我有一個功能正常的程序,能夠獲取可執行程序加載的所有DLL及其相應函數的列表及其相關地址。

回想起來,我認爲我沒有很好地處理我正在嘗試做的事情。我認爲我以爲我會在一個內存不足的過程中進行閱讀,並找到與PEB有關的結構或其他內容(後來我發現圖像頭和類似於PEB中信息的帳戶)。儘管這可能是可能的,但我現在有一個脫機的例子,它讀取exe文件併爲我工作。