【发布时间】:2012-11-19 21:46:09
【问题描述】:
最近我整理了一个 C# 类,它可以使用 API 调用等在另一个进程内存中读取和写入字节,我相信你们都见过。
然而,我的问题与如何有效地扫描另一个进程的内存有关?我知道在达到 Int32.MaxValue 之前测试每组 4 个字节的基本方法,但我发现它(正如你想象的那样)非常耗费时间和资源。
根据我的阅读,有一种方法可以通过执行“HeapWalk”来确定进程的分配地址。谁能向我提供一些代码示例和/或有关此的信息,以及最好的解决方法是什么?
【问题讨论】:
-
您到底在扫描什么?似乎您应该在进程之间传递消息,而不是侵入它们的内存。
-
只是一个整数?重要吗..?
-
我会看看这个应用程序,它是开源的,并且完全符合您的要求。 cheatengine.org
-
是的,我看过源代码。我正在尝试在 C# 中实现它?
-
投票结束过于广泛:如果问题是关于“在字节数组/流中查找字节模式(也称为搜索子字符串)” - 大量文献可以更快地做到这一点。问题也可能是关于“如何遍历进程堆的结构”或“如何快速从其他进程读取大量数据”或如何处理检查 X64 进程的完整地址空间”或“如何查找分配区域过程”...考虑澄清/提出单独的问题...