4

我意识到如果开发人员在 Google Android Market 中发布付费应用程序。很快,付费应用程序将通过其他 Android 市场免费分发。当涉及到中国市场时,盗版问题尤其明显。例如,我的水在哪里(中文)

我想知道,应用内购买可以防止此类盗版问题吗?

通过应用内购买购买额外物品

  1. 用户通过应用内购买购买额外的物品。
  2. 一个秘密密钥,被写入用户偏好。密钥是在应用内购买期间根据用户使用的 Google 帐户生成的。我们不使用硬件 ID 的原因是,我们希望同一用户能够享受应用内购买项目,即使他正在使用其他设备。

使用密钥进行验证

  1. 因此,当用户倾向于使用附加项目时,将始终进行验证。即使用户将密钥分发给其他人,它也不起作用。因为密钥仅对该特定用户有效。

我想知道,这是为打击 Android 应用盗版问题而实施的一种常见做法吗?因为我没有看到太多关于这种技术的讨论。不确定我是否错过了任何陷阱?

4

2 回答 2

4

类似的东西:)

这在很大程度上取决于应用内购买的类型:如果是他们从您的服务器下载的内容(图像、视频等),您可以在服务器上进行检查,除非有人入侵您的服务器,否则几乎不可能欺骗。

要添加/启用应用程序中已有的功能,您需要将他们购买的商品列表保存在某处,以便您的应用程序知道要启用哪些功能。如果您只是将其保存到文件/共享/首选项/DB,则有人可以简单地编辑它们(当然是在根设备上)并添加他们想要的任何项目。因此,您需要混淆您的项目缓存,使其更难修改。一种方法是在磁盘上对其进行加密并在您的应用程序中解密。如果您对所有设备使用相同的密钥,只需将文件/数据库复制到另一台设备即可启用这些功能而无需付费。这就是为什么您需要从特定设备的特定内容(MAC 地址、ANDROID_ID 等)中派生密钥的原因。如果可以使用 Google 帐户导出密钥,

至于使用硬件 ID,物品/订阅与用户 Google 帐户相关联,因此您可以在任何设备上使用 RESTORE_TRANSACTIONS 来获取购买的物品。使用硬件 ID 来混淆项目缓存不是问题,因为它仅用于在磁盘上存储东西,而不是获取购买状态,因此不会阻止用户在多个设备上使用应用程序。

于 2012-09-27T02:45:44.127 回答
2

一般来说,应用内购买更能防止盗版。购买发生在游戏内部的事实使得盗版者更难用其他被黑的部分替换软件的部分。此外,应用内购买不太灵活,允许您使用冗余的保护方法。

您描述的方法可能没问题,具体取决于您隐藏密钥的程度。确实,密钥不能与其他人一起使用,但同一帐户可以一遍又一遍地使用它。我们的建议是遵循这个过程:

  • 通过 TLS/SSL 使用您自己的服务器进行身份验证
  • 获取仅对一次交易有效的密钥
  • 使用密钥进行交易并立即忘记

这将更难破解。

祝你好运,如果您需要帮助,请告诉我。

于 2012-09-26T20:36:53.623 回答