iPhone:如何基于更改设备的日期来修复作弊?有没有可以从中获取时间的服务器?

问题描述 投票:5回答:7

我有一款随着时间的推移分发游戏货币的iPhone游戏,有人发现你可以更改设备上的日期以尽早获得奖励。

我发现Smurf村有一个类似的问题,他们以某种方式检测到了篡改。有谁知道他们是怎么做到的?我唯一能想到的是从外部服务器获取时间,这需要设备在线,但它总比我想的要好......有谁知道我在哪里可以找到一个只告诉你时间的服务器?

iphone datetime time nsdate ipod
7个回答
4
投票

您可以使用告诉您时间的NTP服务器。

直到有人使用代理服务器来确定你要连接的NTP服务器,然后欺骗NTP响应......正如其他人所提到的,响应很容易解析,因此很容易伪造。

更好的解决方案是使用Google App Engine(免费)之类的东西,向您的应用发送某种加密响应,这种响应可以归结为服务器时间。如果客户端时间偏离太多,应用程序将只使用服务器时间进行计算。然后,即使他们拦截了请求,他们也不会轻易地发回正确的响应。

但基本上在任何网络游戏中,你必须始终假设客户端在撒谎。防止问题的唯一真正方法是让一切都通过服务器,因此客户无法决定它突然变得富有并且让任何其他客户同意它是如此......


1
投票

您可以简单地使用其中一个通过互联网提供的时间服务器。这是非常简单的协议,您将毫无问题地解析回复。


1
投票

您可以使用任何NTP服务器(请参阅http://www.ntp.org/)。

此外,您可以通过存储应用程序运行的最新日期来实现一些简单的验证,并检查日期永远不会返回。


0
投票

如果您绝对无法检查远程ntp服务器,那么将提供至少一层保护的一种方法

检查时间和时区如果您发现时间的变化并未归因于时区变化大于DST的变化,请暂停分配资金


0
投票

如果在线,您应该使用加密协议检查NTP服务器,或者最好是您自己的时间戳服务器。

离线时,您可以不添加货币,或者添加货币时间戳并检查作弊(每次启动应用程序时,时间戳会非单调地变化以允许旅行和时钟漂移)。那么你可以以某种方式去除任何不义之财:虚拟谷仓着火,游戏中的所有东西突然花费更多,银行转账费用大于转账金额等。


0
投票

iPhone:打开游戏让它加载使用所有能量然后转到:*设置*一般*日期和时间关闭自动设置1小时前进(或更多取决于等待时间IE能量充满3小时前进3小时)重新打开游戏,不适合每场比赛


0
投票

如果仔细查看HTTP请求和响应的标题,您会发现确定从服务器到客户端的时钟偏移所需的时间信息几乎总是可用的。

为了跟踪断开操作中的绝对时间,您可以使用系统MONOTONIC时钟,在iOS上它是kernel interface的一部分。您还需要从sysctl保存启动UUID和启动时间,以便捕获系统重新启动。

© www.soinside.com 2019 - 2024. All rights reserved.