Swift:防止游戏玩家地址跟踪

时间:2016-09-04 14:22:27

标签: swift memory-address

我正在开发一个简单的游戏,但是使用GamePlayer(在Cydia上,cheat-engine之类),我能够找到,跟踪和修改我的分数。

我想知道如何防止这种欺骗......我试图在它改变时创建一个新的元素实例,例如:

score = Int(score + 1)

我还尝试将var重置为nil并重新分配:

let tmp = score + 1
score = nil
score = tmp

但它不起作用...... 我的第一个问题是:是否可以在swift中更改变量的地址?它会阻止地址跟踪吗?

我的第二个问题是:另一件可行的方法,即对我的分数进行编码,但这是值得的吗?

1 个答案:

答案 0 :(得分:0)

您可以将score变量放在struct中并使用写时复制。然后,当您更改值时,您将获得score的新副本。这里描述了可能性以及写时复制的工作原理:copy-on-write

与解决方案相比,您实际上是否加密了它有优缺点的数字。只是其中一些来自我的头脑(我很好奇你的观点是什么)

  • 加密需要更多的CPU功率,因此需要更多的电池。虽然我们可以假设,在iOS级别深度实现了写时复制,但它已经得到了很好的优化。
  • 写时复制解决方案的安全性较低,因为人们可能会在开始时找到正确的地址并且可以跟踪它(现在,我想到了,不是真的......)
  • 写入时复制会增加源代码的复杂性,因为您需要在每次更改时触发它。