1

在 Windows 中,假设我使用 DLL 注入进入另一个进程。我还对我注入的进程的内存进行了一些屏幕截图,并知道我想要提取的数据的位置。假设在 0xaaaaaaaa 的另一个进程中存在包含某个值的数据。如何从该过程中获取此值,以便可以在我的注入应用程序中使用它?由于我被注入到进程中,我可以只使用 memcpy 之类的东西吗?

memcpy(value, 0xaaaaaaaa, 10);

我假设它可能比这更复杂?

编辑:对于下面的回复,我看不到 WM_COPYDATA 如何帮助我,因为它可以将数据发送到另一个应用程序,而不是从现有应用程序中检索数据。

4

4 回答 4

3

在 Windows 中,每个进程都寻址自己的内存。这意味着你不能做像 memcpy 这样的事情,它有两个指向两个不同进程的内存的指针。

您可以考虑任何进程间通信选项:内存映射文件、套接字、命名管道、事件窗口消息。

这是有关IPC的更多信息

于 2009-11-20T15:17:48.543 回答
3

您应该能够使用ReadProcessMemory函数。

另请参阅如何编写 Perl、Python 或 Ruby 程序来更改 Windows 上另一个进程的内存?

于 2009-11-20T19:24:05.533 回答
1

试试 WM_COPYDATA 并从 MSDN 获得相关帮助。

于 2009-11-20T15:23:03.460 回答
1

Windows 支持以下 IPC 机制:

剪贴板
COM
数据复制
DDE
文件映射
邮槽
管道
RPC
Windows 套接字

更多细节在这里进程间通信

在你的情况下,我会使用WM_COPYDATA 消息

于 2009-11-20T15:27:36.883 回答