我正在开发一个Android应用程序,我打算发布它(付费应用程序)。我听说盗版Android应用程序非常容易(比iphone容易得多)。我想知道你的经验或你知道什么,如何提高我的应用程序的安全性?我知道我永远无法100%获得安全保障,但我想让人们更难盗版或非法分发 您可以分享任何想法,经验和评论吗?
答案 0 :(得分:67)
我发布了针对Android的免费反恶意软件应用程序,并确保没有人攻击它对其成功至关重要。 Android Market上的应用程序最大的威胁包括泄露的源代码,复制/分发的付费应用程序以及重新键入。我解释下面的每一个方法以及解决它们的方法。
首先,this paper描述了如何通过解压缩已编译的代码并查看源代码来反向设计Android应用程序。您将无法阻止此操作发生在您的应用中。期。有遗嘱的人可以随时查看您的源代码,如果他们获得了您的apk副本(在root手机上很容易获得)。好消息是,您可以对代码中的重要部分进行模糊处理,从而使逆向工程变得更加困难。 Proguard是Android提供的工具,可让您在打包过程中对代码进行模糊处理(更难以阅读)。但是,为了防止重要代码被读取,您需要将所有易受攻击的方法或变量移动到非Activity
,Service
或BroadcastReceiver
的文件中。有关完整事实,请阅读文档。
为了保护非法复制和分发您的应用程序,Google Play提供了一些licensing options。不幸的是,LVL也不是完全安全的。有关如何破解它(Google Play前)的详细信息,请访问here。
最后,上面链接的论文,以及众多学术文章和在线博客描述了,一旦源代码(甚至混淆的源代码)被泄露,曾经只能添加一些自己的恶意代码,辞职应用程序,并在Android Market上发布。这里的好消息是,除非您的Android许可证密钥密码很容易猜到,或者您将其发给其他人,否则攻击者将无法使用相同的许可证密钥发布应用程序。这不仅可以保护您免受责备,还可以使恶意应用程序无法访问原始应用程序中可用的数据(例如SharedPreferences
)。
总而言之,真正保护您的应用程序免受盗版侵害的最佳方法是正确配置和使用 Proguard , Google Play许可,并为您签署最终的apk一个非常安全的许可证密钥。
答案 1 :(得分:8)
如果应用程序已被盗版,您可以添加篡改检查并结合模糊处理来提醒用户/禁用功能/向服务器报告。我使用DexGuard进行强化混淆。
篡改检查
更新:自回答此问题以来,我在篡改检测方面写了更多detailed article。
答案 2 :(得分:6)
看一下google play许可框架。
http://developer.android.com/guide/market/licensing/index.html
这是你最好的选择。
Google Play许可是一种基于网络的服务 应用程序查询受信任的Google Play许可服务器以确定 应用程序是否已获得当前设备用户的许可。该 许可服务基于Google Play的功能 许可服务器,以确定给定用户是否被许可使用 给定的应用程序。 Google Play认为用户需要获得许可 用户是该应用程序的记录购买者。