从其他进程读写

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

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

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

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

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

一旦完成,你可以看看你的本地缓冲区,你会看到过去在外部进程的数据,生活会很好。