,假设我已经使用DLL注入进入另一个进程。我已经在我注入的进程中完成了一些内存的屏幕截图,并且知道了我想要提取的数据的位置。假设在0xaaaaaaaa的另一个进程中有数据包含某个值。如何从该过程中获取此值,以便我可以在我的注入应用程序中使用它?由于我注入了这个过程,我可以使用像memcpy这样的东西吗?
memcpy(value, 0xaaaaaaaa, 10);
我认为它可能比这更多涉及?
编辑:对于下面的回复,我不知道WM_COPYDATA如何帮助我将数据发送到另一个应用程序,而不是从现有应用程序中检索数据。
答案 0 :(得分:3)
在Windows中,每个进程都会寻址自己的内存。这意味着你不能做像memcpy这样的东西有两个指针指向两个不同进程的内存。
您可以考虑进程间通信的任何选项:内存映射文件,套接字,命名管道,事件窗口消息。
以下是有关IPC
的更多信息答案 1 :(得分:3)
您应该可以使用ReadProcessMemory功能。
另见How to write a Perl, Python, or Ruby program to change the memory of another process on Windows?
答案 2 :(得分:1)
尝试WM_COPYDATA并从MSDN获取与其相关的帮助。
答案 3 :(得分:1)
Windows支持以下IPC机制:
剪贴板
COM
数据复制
DDE
文件映射
邮筒
管道
RPC
Windows套接字
此处有更多详情Interprocess Communications
在你的情况下,我会使用WM_COPYDATA Message