【发布时间】:2010-08-17 17:28:15
【问题描述】:
我想通过另一个进程扫描当前正在运行的本机应用程序的整个堆。
例如,我想知道这个进程内存中所有 ASCII 序列“test”的实例后面是什么(在这种情况下,我会扫描“test”并继续阅读它)。
我尝试用谷歌搜索更多信息,但没有找到太多信息:我发现 ReadProcessMemory 看起来很有趣,但我怎么知道进程分配的内存地址?
【问题讨论】:
我想通过另一个进程扫描当前正在运行的本机应用程序的整个堆。
例如,我想知道这个进程内存中所有 ASCII 序列“test”的实例后面是什么(在这种情况下,我会扫描“test”并继续阅读它)。
我尝试用谷歌搜索更多信息,但没有找到太多信息:我发现 ReadProcessMemory 看起来很有趣,但我怎么知道进程分配的内存地址?
【问题讨论】:
如果您发现您正在其他进程中访问大量内存,请考虑使用CreateRemoveThread (sample code)。这将允许您将自己的 DLL 注入其他进程并直接在那里运行代码。在其他进程中运行代码后,您将能够正常访问内存,而无需使用ReadProcessMemory。 (您仍然需要VirtualQuery 来确定进程的内存布局。)
【讨论】: