从其他进程读写

时间:2012-01-01 17:58:50

标签: c# windows

我希望能够从另一个进程的内存中读取和写入。我从Readprocessmemory()调用了函数WriteProcessmemory()Kernel32.dll,并使用GetProcessByName()函数来查找过程。这成功了。

我看到了readprocessmemory()函数的示例,并在我从kernel32.dll调用它之后声明它,但我不明白它是如何工作的 - 我如何使用该函数从另一个进程读取?我很感激一个例子。

1 个答案:

答案 0 :(得分:1)

为了将内存读写到另一个进程,您需要使用kernel32提供的ReadProcessMemory和WriteProcessMemory函数。如果您使用的是C#,则需要使用PInvoke将这些功能导入当前进程。

更一般地说,你需要做的是:

  • 确定您想要阅读/注入的过程
  • 调用OpenProcess()以获取进程的句柄。你想要发送GENERIC_READ | GENERIC_WRITE作为此标志,你将获得一个你需要检查的HPROCESS不是NULL。
  • 决定在外部进程中要读取的位置(这是外部进程指针)。您还需要确定要读取的字节数。
  • 在当前进程中分配许多字节以保存读取结果。
  • 调用ReadProcessMemory传入您打开的HPROCESS,在另一个进程中读取的外部进程指针,指向本地缓冲区的指针以及从外部进程读取到本地的字节数缓冲液中。

完成此操作后,您可以查看本地缓冲区,您将看到以前在外部进程中的数据,生活将会很好。