5

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

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

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

这会奏效还是黑客可以以某种方式绕过这种机制?他们会每天做这项工作,还是可以在某个时候将其自动化?我可以做些什么来改进这个系统?

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

有没有好的方法来做到这一点?这对自动破解有效吗?

4

2 回答 2

8

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

人们可以通过两种方式作弊

  1. 获取其他人没有的信息(例如穿墙看)
  2. 自动化其他人必须手动完成的游戏玩法(“耕种”)

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

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

记住那句老话:“客户在敌人手中。”

于 2015-02-06T13:40:54.207 回答
4

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

这是使用自动生成和随机化 (C++) 类的自动化系统完成的。也许它还可以将假对象添加到层次结构中,以使识别对象更加困难。

  • 随机化一个类是什么意思?这远非微不足道。
  • 最终会发现假对象(死代码)

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

于 2015-02-06T14:04:35.670 回答