【问题标题】:Unifying 2 space memories统一2个空间记忆
【发布时间】:2010-12-10 20:57:31
【问题描述】:


有没有办法读取另一个进程内存,就好像它的内存是我在 C++/Windows 中的进程内存的一部分(不使用“ReadProcessMemory”)?

“CreateRemoteThread”怎么样?我希望能够读取其他进程的内存,但不仅仅是在我的远程线程和我的应用程序本身中。这样可以吗?

【问题讨论】:

  • ReadProcessMemory 出了什么问题?
  • 我正在寻找更快的方法...

标签: c++ memory process win32-process


【解决方案1】:

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

基本上,您使用页面文件作为后备存储创建具有显式名称的文件映射,然后在第二个进程中使用相同名称打开该文件映射。要在两个进程中映射相同的地址,您必须传递先前商定的内存范围并将其传递给MapViewOfFileEx。请记住,您不能保证通常在两个进程之间没有使用任何内存地址,因此您可能不希望将您的设计基于在两个进程之间具有相同的地址。

【讨论】:

    【解决方案2】:

    您可能想尝试的一件事是创建一个临时文件,然后从两个进程映射该文件。这应该会为您提供共享内存页面。

    【讨论】:

    • 如果从两个进程映射同一个文件,则内存直接共享,而磁盘文件仅用于交换空间。它会实时更新,无需显式读取或写入系统调用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-26
    • 2019-06-02
    相关资源
    最近更新 更多