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