检测进程内存是否被操作?

时间:2011-09-08 02:38:37

标签: c++ memory memory-management

我想知道如何监视另一个应用程序的进程内存并查看它是否被第三方操纵。例如在特定进程上调用ReadProcessMemory,WriteProcessMemory时。例如,nProtect GameGuard可以检测游戏进程内存的操作时间。

1 个答案:

答案 0 :(得分:2)

真正的答案可能是非常长的,所以这里有一些简短的提示。

首先,您需要一些系统范围的钩子来连接这些函数,以及它们的低层构建块(Zw ...,Nt ......,甚至是系统调用)。这应该由内核驱动程序完成。

其次,您需要一种方法来安装此驱动程序,并随意删除它。这可以通过服务来完成。

第三,你需要一种在内核驱动程序和游戏之间进行通信的方法。在初始化阶段,游戏将安装驱动程序,并告诉它游戏正在运行的进程ID。然后,驱动程序将阻止从其他进程对该特定进程的所有访问。

第四,你需要保持一份白名单。防病毒等应用程序确实需要偷看并捅你的游戏。您的内核驱动程序必须允许这些检查通过。这就是nProtect和类似技术失败的地方。他们只是与其他软件保持冲突。

第五,也许是时候考虑其他方法来保护你的游戏了。 David Aucsmith撰写的“防篡改软件:实施”一文值得一读。