游戏客户端的基本保护

时间:2016-02-10 19:28:51

标签: c++ security design-patterns dll-injection

我目前有一款多人游戏,玩家开始使用内存编辑取消攻击动画,使攻击数据包速度更快,或者使攻击速度比正常速度快得多。

是的,更好的设计是理想的,但可能需要一段时间。我想得到一个可以快速完成的临时修复。

想法:

  • 检查上一次攻击数据包之间的时间差,忽略一切太快。 (对于服务器)
  • 使用EnumWindows检查窗口类,如果检测到已知的内存编辑器则停止游戏。每次攻击时都会执行EnumWindows。 (对于客户)
  • 使用ReadProcessMemory读取正在运行的进程并查找已知内存编辑器的签名。

问题确实是,如果以下任何一项可行,以及如何完成:

  • Detour ReadProcessMemoryOpenProcess并在被叫时退出? (虽然我认为这不会起作用,因为这些函数被内存编辑器调用而不是我的游戏)。
  • ReadProcessMemory在我自己(游戏)上并检查他们正在改变的地址。检查值是否在正常范围内,然后退出。
  • 有什么建议吗?

我知道这样做是徒劳的,因为知道他们所做的事情的骗子仍然可以解决这一问题。但我的游戏只有大约600名活跃玩家,我相信他们只是scriptkiddies。我认为这种简单的对策应该足够像我这样的小游戏。但当然,设计将得到纠正。

1 个答案:

答案 0 :(得分:0)

绕过ReadProcessMemory或OpenProcess并在调用时退出?

这些没有在您的进程中被调用,因此在本地挂接它们不会做任何事情。您需要挂接每个正在运行的进程,不建议这样做。

在我的自已(游戏)上读取ProcessMemory,并检查它们正在更改的地址。检查值是否不在正常范围内,然后退出。

您不需要ReadProcessMemory,您就在自己的进程中。只需正常检查该值即可。

如果您不希望客户端操作这些值,则应在服务器上计算这些值,然后将这些信息复制到客户端并覆盖它们。

您还可以将防调试库添加到客户端,以防止大多数人操纵您的进程。 Here是一个不错的人