Windows:直接读取另一个进程的内存

5

我需要在Windows中扫描另一个进程的内存。ReadProcessMemory函数可以胜任,但它每次都将目标进程的内存复制到我的缓冲区之一..有没有办法访问另一个进程的内存而不必每次都将其复制到我的进程内存中? 如果有的话,我就可以使用指针来访问另一个进程的内存。


5
你可以将扫描代码inject到其他进程中,并使用跨进程通信将扫描结果传递给控制进程。 - krlmlr
1
@StoryTeller:不一定。它可以被映射到您的虚拟地址空间中以供只读访问,就像您可以使用文件映射一样。原则上是可实现的,但我怀疑是否有相应的API。 - Yakov Galka
1
@JohnnyPauling:我怀疑复制内存总是会增加开销。 - krlmlr
4
让我们退一步,你认为扫描另一个进程的内存是解决问题的方法吗?你应该使用应用程序提供的任何接口,其他任何操作都只是不被支持的黑客行为。 - Raymond Chen
3
调试器使用ReadProcessMemory()函数。他们最小化需要读取的内存量;他们只读取将要显示的内容(在内存视图窗口或监视窗口中)。 - MikeB
显示剩余6条评论
1个回答

3

调试器使用ReadProcessMemory,因此如果您正在实现类似于调试器的功能,那么这是正确的方法。

如果您正在实现其他东西,那么您可能会陷入困境,您应该给我们一个更高层次的视角来解决您要解决的问题。


我不知道调试器使用ReadProcessMemory,它们是一次读取小块内存还是将整个进程的内存读入一个缓冲区? - Johnny Pauling
3
他们只读取所需部分。调试器很少需要一次性访问整个进程的内存。 - Raymond Chen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接