可以通过应用内购买防止软件盗版

时间:2012-09-26 10:27:37

标签: android in-app-purchase

我意识到开发者是否会在Google Android电子市场中发布付费应用。很快,付费应用将通过其他Android电子市场免费分发。当进入中国市场时,这种盗版问题尤为突出。例如,Where's My Water (Chinese)

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

通过应用内购买购买其他商品

  1. 用户通过应用内购买购买其他商品。
  2. 一个密钥,写入用户首选项。在应用内购买期间,基于所使用的用户Google帐户生成密钥。我们不使用硬件ID的原因是,我们希望同一个用户能够享受应用内购买项目,即使他正在使用其他设备。
  3. 使用密钥进行验证

    1. 因此,当用户倾向于使用其他项目时,将始终进行验证。即使用户将秘密密钥分发给其他人,也无法正常工作。由于密钥仅对该特定用户有效。
    2. 我很想知道,这是否正在实施,以对抗Android应用盗版问题?因为我没有看到很多关于这种技术的讨论。我不确定是否有任何陷阱错过了?

2 个答案:

答案 0 :(得分:4)

像这样的东西:)

这在很大程度上取决于应用程序内购买的类型:如果是从服务器下载的内容(图像,视频等),您可以在服务器上进行检查,除非有人攻击您的服务器,否则它将是几乎不可能作弊。

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

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

答案 1 :(得分:2)

一般来说,应用内购买可以更好地防范盗版。购买发生在游戏内部的事实使得盗版者更难以用其他黑客部分替换部分软件。此外,应用内购买的灵活性较低,允许您使用冗余的保护方法。

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

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

这将很难被黑客攻击。

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