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

我正在开发一个Android应用程序,我打算发布它(付费应用程序)。 我听说盗版Android应用程序非常容易(比iPhone更容易)。 我想知道从你的经验或你知道什么,可以如何增加我的应用程序的安全? 我知道我永远无法获得100%的安全,但我想让人们更难以盗版或非法分发任何想法,经验,评论,你可以分享? 这将不胜感激最好的问候

我发布了一个免费的反恶意软件的Android应用程序,并确保没有人入侵它是成功的关键。 Android Market上的应用程序最大的威胁包括泄漏的源代码,复制/分发的付费应用程序和重新键入。 我将在下面解释和解决这些问题。

首先, 本文介绍如何通过解压缩编译代码和查看源代码来对Android应用程序进行逆向工程。 你将无法阻止这发生在你的应用程序。 期。 有意愿的人可以随时查看你的源代码,如果他们得到你的apk的副本(很容易在固定电话上使用)。 好消息是,你可以混淆你的代码中的重要部分,使得逆向工程更难。 Proguard是Android提供的一个工具,可以让你在打包时混淆(更难读)代码。 但是,为了防止读取重要的代码,您需要将所有易受攻击的方法或variables移动到不是ActivityServiceBroadcastReceiver 。 有关完整的事实,请阅读文档。

为了保护您的应用程序非法复制和分发,Google Play提供了一些许可选项 。 不幸的是,LVL也不完全安全。 在这里可以find关于如何破解它(Google Play前)的详细操作方法。

最后,上面链接的文章以及众多的学术文章和在线博客描述了一旦源代码(甚至混淆的源代码)泄漏,一旦只能添加一些自己的恶意代码,辞去应用程序,在Android Market上发布。 这里的好消息是,除非你的android授权密码很容易被猜出,否则攻击者将无法发布具有相同授权密钥的应用程序。 这不仅可以保护您免受责难,而且还会使恶意应用程序无法访问通过原始应用程序(例如SharedPreferences )提供的数据。

总之,真正保护您的应用程序免受盗版的最好方法是正确configuration和使用ProguardGoogle Play许可证 ,并使用非常安全的许可证密钥为您签名。

您可以添加篡改检查结合混淆来提醒用户/禁用function/报告给服务器,如果该应用程序已被盗版。 我使用DexGuard来加强混淆。

篡改检查

  • 安装程序应用程序 – 使用包pipe理器来确保安装应用程序是播放/亚马逊应用程序商店
  • 仿真器检查 – 检查系统属性是否显示应用程序在仿真器上运行的信息,该信息可能表明攻击/篡改
  • 可debugging的检查 – 使用包pipe理器检查可debugging标志,这应该在产品中closures,因此可能表示攻击/篡改
  • 签署证书检查 – 使用软件包pipe理器来validation应用程序是否与您的开发人员证书一起签名(如果有人解压并重新打包/退出应用程序,这将被打破)

更新:由于回答了这个问题,我写了一篇关于篡改检测的更详细的文章 。

看看谷歌播放许可框架。

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

这是你最好的select。

Google Play许可是一项基于networking的服务,可让应用程序查询可信的Google Play许可服务器,以确定应用程序是否授权给当前设备用户。 许可服务基于Google Play许可服务器的能力来确定给定的用户是否被授权使用给定的应用程序。 如果用户是该应用程序的logging购买者,Google Play会认为该用户是被许可的。