如何保护我的应用程序免受盗版

时间:2012-03-26 00:01:22

标签: android security piracy-prevention

我正在开发一个Android应用程序,我打算发布它(付费应用程序)。我听说盗版Android应用程序非常容易(比iphone容易得多)。我想知道你的经验或你知道什么,如何提高我的应用程序的安全性?我知道我永远无法100%获得安全保障,但我想让人们更难盗版或非法分发 您可以分享任何想法,经验和评论吗?

3 个答案:

答案 0 :(得分:67)

我发布了针对Android的免费反恶意软件应用程序,并确保没有人攻击它对其成功至关重要。 Android Market上的应用程序最大的威胁包括泄露的源代码,复制/分发的付费应用程序以及重新键入。我解释下面的每一个方法以及解决它们的方法。

首先,this paper描述了如何通过解压缩已编译的代码并查看源代码来反向设计Android应用程序。您将无法阻止此操作发生在您的应用中。期。有遗嘱的人可以随时查看您的源代码,如果他们获得了您的apk副本(在root手机上很容易获得)。好消息是,您可以对代码中的重要部分进行模糊处理,从而使逆向工程变得更加困难。 Proguard是Android提供的工具,可让您在打包过程中对代码进行模糊处理(更难以阅读)。但是,为了防止重要代码被读取,您需要将所有易受攻击的方法或变量移动到非ActivityServiceBroadcastReceiver的文件中。有关完整事实,请阅读文档。

为了保护非法复制和分发您的应用程序,Google Play提供了一些licensing options。不幸的是,LVL也不是完全安全的。有关如何破解它(Google Play前)的详细信息,请访问here

最后,上面链接的论文,以及众多学术文章和在线博客描述了,一旦源代码(甚至混淆的源代码)被泄露,曾经只能添加一些自己的恶意代码,辞职应用程序,并在Android Market上发布。这里的好消息是,除非您的Android许可证密钥密码很容易猜到,或者您将其发给其他人,否则攻击者将无法使用相同的许可证密钥发布应用程序。这不仅可以保护您免受责备,还可以使恶意应用程序无法访问原始应用程序中可用的数据(例如SharedPreferences)。

总而言之,真正保护您的应用程序免受盗版侵害的最佳方法是正确配置和使用 Proguard Google Play许可,并为您签署最终的apk一个非常安全的许可证密钥。

答案 1 :(得分:8)

如果应用程序已被盗版,您可以添加篡改检查并结合模糊处理来提醒用户/禁用功能/向服务器报告。我使用DexGuard进行强化混淆。

篡改检查

  • 安装程序应用程序 - 使用程序包管理器确保安装应用程序是play / amazon app store
  • 模拟器检查 - 检查系统属性是否有告诫标志应用程序正在模拟器上运行,dev外部可能表示攻击/篡改
  • 可调试检查 - 使用包管理器检查可调试标志,这应该在产品中关闭,因此可能表示攻击/篡改
  • 签署证书检查 - 使用包管理器验证应用程序是否已使用您的开发人员证书签名(如果有人解压缩并重新打包/重新签名应用程序,这将被破坏)

更新:自回答此问题以来,我在篡改检测方面写了更多detailed article

答案 2 :(得分:6)

看一下google play许可框架。

  

http://developer.android.com/guide/market/licensing/index.html

这是你最好的选择。

  

Google Play许可是一种基于网络的服务   应用程序查询受信任的Google Play许可服务器以确定   应用程序是否已获得当前设备用户的许可。该   许可服务基于Google Play的功能   许可服务器,以确定给定用户是否被许可使用   给定的应用程序。 Google Play认为用户需要获得许可   用户是该应用程序的记录购买者。