c++ - 检测进程内存是否被操纵?

标签 c++ memory memory-management

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

最佳答案

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

首先,您需要对这些函数及其低级构建 block (Zw...、Nt...,甚至系统调用)进行一些系统范围的 Hook 。这应该由内核驱动程序完成。

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

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

第四,你需要维护一个白名单。诸如杀毒软件之类的应用程序确实需要窥视您的游戏。您的内核驱动程序必须允许这些检查通过。这就是 nProtect 和类似技术失败的地方。它们只会与其他软件发生冲突。

第五,也许是时候考虑其他方法来保护您的游戏了。 David Aucsmith 的论文“Tamper Resistant Software: An Implementation”值得一读。

关于c++ - 检测进程内存是否被操纵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7342571/

相关文章:

c++ - 减少大型陌生代码库的内存占用

c++ - Windows网络包修改

C++ 模板继承

c++ - 使用原始指针或智能指针在 C++ 中组合?

c++ - post请求中的二进制数据

linux - 如何将 "memory priority"分配给 linux 进程?

c++ - 我应该多认真对待 Valgrind 和小内存泄漏(比方说 < 100 字节)?

c++ - 使用不带括号的 sizeof

ios - iOS 应用内部尺寸?

python - 在 Ubuntu12.04 中使用 Python3 的 lxml 内存泄漏