通过代码生成防止作弊



这种反作弊技术是否适用于使用私人服务器(公开未知的可执行文件)的多人游戏:

当客户端启动游戏时,它将每天自动更新自己(使用启动器)。服务器也会自我更新。除非有真正的补丁,否则更新仅包括游戏对象内存布局、网络代码和着色器的更改。这是使用一个自动生成和随机化(C++)类的自动化系统来完成的。也许它还可以在层次结构中添加假对象,使识别对象变得更加困难。

通过这种方式,我希望比破解者更快地更新游戏,并将反向工程、更新和发布/更新一个新的作弊。

这会起作用吗?或者黑客能以某种方式绕过这种机制吗?他们会每天做这项工作吗?还是会在某个时候实现自动化?我能做些什么来改进这个系统?

从长远来看,随机化内存布局似乎没有帮助,因为通过在可执行文件中执行函数调用并从代码中提取指针偏移量,可以或多或少地容易地提取布局。因此,为了有效地防止这种情况,调用的结构和代码本身也需要随机化。

有什么好方法可以做到这一点吗?这对自动破解有效吗?

客户端技术军备竞赛是一种完全错误的方式。你永远不会比一群有太多空闲时间的孩子更好或更快。你无法与一群没有成本(除了不做功课)的攻击者竞争,而你的行为会耗费你的时间和金钱。这是一场你会输掉的比赛,无论是在经济上还是在最终结果上。

有两种方法可以作弊

  1. 获取他人没有的信息(例如透过墙壁查看)
  2. 其他人必须手动完成的游戏自动化("农业")

有两种方法可以阻止人们这样做:

  1. 停止向客户提供该信息。将其保存在服务器上
  2. 不要在游戏中出现不好玩的部分。人们只会自动化无聊的部分,他们不会为了无聊而玩游戏。让它变得有趣,没有人会浪费时间尝试自动化。如果你的游戏突然出现自动化,好好想想如何改进你的游戏,而不是在技术上与机器人作战

记住一句老话:"客户掌握在敌人手中。"

我不知道这样的系统是否能成功避免作弊,但我会担心生产和维护这样的系统。例如,你说

这是使用一个自动生成和随机化(C++)类。也许它还可以向层次结构,使识别对象更加困难。

  • 你说的随机分组是什么意思?这绝非小事
  • 假物体最终会被发现(死代码)

无论如何,我怀疑您是否能够对代码的关键部分执行某种有效的模糊处理,而不会出现严重的缺陷,例如性能下降或完全错误的计算(例如浮点演算)。如果您有两种不同的机制来计算相同的值,那么对于同一组输入,您最终会得到不同的结果。

最新更新