0

好的,(对我来说)这是一个相当复杂的问题,让我的菜鸟大脑受伤。

在我的游戏中,有一系列特殊动作(连击)。我打算将其中大部分用于应用程序购买。此外,关闭广告将是应用内购买。

有人向我建议,玩家还应该能够通过扩展游戏来获得连击。也许可以购买在游戏中赚取“积分”,他可以使用。

无论哪种方式,在我看来,存储组合对玩家可用这一事实的唯一方法是将指标存储在“共享偏好”中。

我担心的是共享偏好对用户干扰的脆弱性。据我了解,“共享首选项”只是一个可供任何 root 用户使用的 .xml 文件。如何阻止用户简单地访问 .xml 并将数据更改为“combo1 = true”或 credits = “1,000,000”或“ads = off”?

在我写这篇文章的时候,我意识到我可以使用用户无法猜到的代码,而不是使用像“true”或“off”这样明显的词。那会安全吗?

但是学分呢?当值可以是任何值时,如何存储用户无法猜测的值。

我想我可以使用从值和游戏代码中的等式派生的代码来处理值。所以在游戏中有一个方程

代码 =((学分/2)*10)+1)。

这意味着如果 credits 是 1000,那么存储在 sharedprefs 中的值必须是 50011000。所以除非用户知道等式,否则他们将无法在 .xml 中输入有效值

这些想法有意义吗?他们会工作吗?有没有更好、更成熟的方法来做到这一点?

很抱歉成为这样的菜鸟。

4

2 回答 2

0

像这样共享首选项以保存数据根本不是一个好选择。如果用户从设置中清除数据,他的所有信用都将消失,甚至他的购买历史记录都将消失,您应该有远程服务来执行此操作。所以请使用远程服务器来保存该数据。

于 2013-11-21T11:40:57.180 回答
0

使用具有唯一校验和算法的数字签名或代码,该算法必须经过验证才能被接受。

这会将问题更改为对程序进行逆向工程以发现密钥或禁用检查。

即使这样也不是真正的安全,而只是让它变得更难。

于 2012-09-13T10:50:30.923 回答