2012-09-26 55 views
4

我知道如果开发者在Google Android Market发布付费应用程序。很快,付费应用程序将通过其他Android Market免费发布。当涉及中国市场时,这种盗版问题尤其如此。例如,Where's My Water (Chinese)可以在应用程序内购买防止软件盗版

我想知道,可以在应用程序内购买防止这种盗版问题?

购买附加项目通过应用内购买

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

验证使用保密密钥

  1. 所以,验证总是会做,当用户倾向于使用其他项目。即使用户将密钥分发给其他人,也不会起作用。由于密钥仅对该特定用户有效。

我想知道,这是正在实施的常见做法之一,以对抗Android应用程序盗版问题?因为我没有看到有关这种技术的很多讨论。我不确定是否有遗漏我错过了?

回答

4

类似的东西:)

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

对于已经在应用程序中添加/启用的功能,您需要将它们购买的物品列表保存到某个位置,以便您的应用程序知道要启用的功能。如果您只是将其保存到文件/共享/首选项/数据库,则可以简单地编辑这些文件(当然是在根设备上)并添加他们想要的任何项目。因此,您需要混淆项目缓存,以便更改难度。这样做的一种方法是在磁盘上加密并在您的应用程序中解密。如果您对所有设备使用相同的密钥,只需将文件/数据库复制到其他设备即可启用这些功能,而无需付费。这就是为什么你需要从特定设备的某个特定项(MAC地址,ANDROID_ID等)中派生出密钥。如果可以使用Google帐户来派生密钥,但您需要与AccountManager核实,该用户实际上是否在其设备上注册了此帐户(这需要额外的权限)。

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

2

一般而言,应用内购买更能够抵御盗版。购买发生在游戏内部的事实使得盗版者更难以用其他黑客部分替换软件的一部分。此外,应用程序内购买灵活性较低,并允许您使用冗余的保护方法。

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

  • 验证使用自己的服务器通过TLS/SSL
  • 获取密钥,这将是有效的一个交易只
  • 使用事务的密钥和忘了它imediatly

这将是更难以破解。

祝你好运,让我知道你是否需要任何帮助。