2012-05-22 46 views
0

我使用NtQueryInformationProcess()檢索另一個進程的命令行(通過由NtQueryInformationProcess()返回的PEB的RTL_USER_PROCESS_PARAMETERS)在Windows 7NtQueryInformationProcess似乎返回錯誤的命令行

這通常工作得很好,但是當同一個可執行文件的多個實例將啓動,命令行字符串對於所有實例都是相同的:它始終是第一個已啓動的實例的命令行。儘管GetCommandLine()爲每個進程返回正確的命令行。

有人可以確認或僞造嗎?

回答

1

您可能會丟失的是PEB中的每個指針只與PEB進程的地址空間相關,而不是調用NtQueryInformationProcess並檢索PEB的進程。您必須使用ReadProcessMemory來指針。否則,由於進程可能類似地進行佈局,您最終將讀取NtQueryInformationProcess調用者的命令行,而不是PEB進程的命令行。

我可以確認,使用NtQueryInformationProcess和ReadProcessMemory爲指針間接的每個級別,您可以正確地獲得所有進程的命令行。有關源代碼示例,請參見https://stackoverflow.com/a/13408150/1236546

相關問題