背景

我已经有一段时间困扰玩家在我的Android游戏中作弊了。对于严格的单人游戏而言,这不是什么大问题,但是由于我的游戏包含多人战斗和全局高分榜,因此正当玩家由于作弊而停止游戏。

他们如何作弊

作弊者针对root用户使用名为Gamecih的应用程序。 Gamecih允许用户暂停应用程序,更改变量值,然后继续使用该应用程序。因此,就我而言,他们只是暂停游戏,将“健康状况”更改为74万亿美元,然后将多人游戏中的所有人都丢掉。这是一个video,显示Gamecih如何用于在《水果忍者》(不是我的游戏)中作弊。

考虑的方法

  • 代码混淆。这是行不通的,因为混淆不会更改变量值,而只会更改变量名称。这意味着作弊者仍然可以找到与其当前健康状况具有相同值的变量,然后更改该变量。
  • 代码混淆+更改getter和setter的值。这样,健康实际上不会代表真正的健康值(value)。在getter方法中,我将执行类似return health * 10的操作;然后在 setter 中执行health = input/10;这当然可能更复杂。

  • 我想要的

    可以认为,考虑使用的方法nr 2是我应该使用的方法,但是再说一次,它并不能防止黑客入侵,而只是使其变得更加困难。理想情况下,我想检测人们何时使用Gamecih作弊,显示一个弹出窗口,“告诉您,您是讨厌的黑客”,然后关闭该应用程序。我不希望依赖于服务器的解决方案,因为我希望播放器也能在离线状态下播放。如果可能的话,我也想避免代码混淆。

    最佳答案

    您可以将生命周期存储在X个变量中,实际值将是它们的总和(始终是动态计算的)。您随机选择要更新的那个。最重要的是,您可以添加一些一致性检查,作弊者很难意识到要进行哪些更改以及如何进行更改。

    一致性检查可以是一个简单的规则,例如第1个,第2个和第3个变量按增长顺序排列,第4个最小。可能需要一些人才能使用此工具解决此问题。

    Yoy还可以发挥更大的创造力,并在其中添加一些加密方法(您提到的方式)。否则,除非有人拥有您的代码,否则它变得无可比拟。

    编辑:添加100个随机变量,这些变量始终随便使用随机名称(或数组中的位置,以使其更容易更改),然后为作弊者寻找合适的人提供好运。并使其具有动态性,因此每次它们都必须再次破解时。

    10-07 15:52