Swift:防止玩家地址跟踪

标签 swift memory-address

我正在用 swift 开发一个简单的游戏,但使用 GamePlayer(在 Cydia 上,一个类似 Cheat Engine 的游戏),我能够定位、跟踪和修改我的分数。

我想知道如何防止这种作弊...我尝试在元素发生变化时创建一个新实例,例如:

score = Int(score + 1)

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

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

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

我的第二个问题是:另一件事可以工作,对我的分数进行编码,但是值得吗?

最佳答案

您可以将 score 变量放入 struct 中并使用写入时复制。然后,当您更改值时,您将获得分数的新副本。此处通过示例描述了可能性以及写时复制的工作原理:copy-on-write

与实际加密数字的解决方案相比,它有优点也有缺点。只是我的一些想法(我很好奇你的观点是什么)

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

关于Swift:防止玩家地址跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39317913/

相关文章:

arrays - Swift 3 使用集合和维护顺序从一个数组中删除存在于另一个数组中的对象

c - 如何在 C 中获取结构的起始地址和结束地址?

macos - calloc 或 malloc 可以用于在 OSX 中仅分配物理内存吗?

c++ - operator(&) 返回的地址是虚拟的吗?

c++ - 内存地址会改变吗?如何动态找到它们?

iOS 位置管理器 - isAuthorizedForPreciseLocation 似乎不存在

ios - Swift - UITabBarController 作为 ChildViewController 不工作

ios - 创建XMPPRoom时如何设置和获取roomName(组名)?

java - 如何按内存位置对集合中的对象进行排序?

Swift - 单击操作时关闭行