2010-12-10 41 views
0


有沒有辦法讀取另一個進程內存,就好像它的內存是C++/Windows中的進程內存的一部分(不使用「ReadProcessMemory」)?統一2個空間內存

「CreateRemoteThread」怎麼樣?我希望能夠讀取其他進程的內存,但不僅僅是在我的遠程線程和我的應用程序本身。這會做這份工作嗎?

+0

ReadProcessMemory有什麼問題? – Puppy 2010-12-10 21:02:08

+0

我正在尋找更快的方式... – Idov 2010-12-10 21:14:32

回答

1

MSDN has a sample that explains how to use CreateFileMapping to share memory between two processes.

基本上,你創建使用的頁面文件作爲後備存儲一個明確的名稱文件映射,然後用相同名稱的第二個進程打開該文件映射。要在兩個過程中映射相同的地址,您必須傳遞先前商定的內存範圍並將其傳遞給MapViewOfFileEx。請記住,您不能保證任何內存地址在兩個進程之間一般都沒有使用,所以您可能不希望您的設計基於兩個進程之間的相同地址。

1

你可能想要嘗試的一件事是創建一個臨時文件,然後從兩個進程映射文件。這應該讓你共享內存頁面。

+0

其實創建一個文件?但我需要實時更新... – Idov 2010-12-10 21:15:09

+0

如果您從兩個進程映射相同的文件,則直接共享內存,而磁盤文件僅用於交換空間。它可以實時更新,不需要明確的讀或寫系統調用。 – 2010-12-11 00:39:58