怎样防止Android app二次打包?
事实证明,安卓系统的开放性、免费性等,深的开发者和用户的青睐,随着其在市场中不断地普及,人们也慢慢的习惯了安卓应用这种免费的午餐,但却忽视在其免费性的背后隐藏着巨大的安全隐患,较典型常见的就是Android APP二次打包”。这里,所谓的二次打包则是盗版正规Android APP,破解后植入恶意代码重新打包。
更重要的是,二次打包的安卓app,无论从性能、用户体验、外观或者是其它方面都跟正规APP一模一样,但是在它的背后却悄悄运行着可怕的程序,会在不知不觉中浪费你手机的电量、流量、偷窥隐私等行为。那么如何预防Android app二次打包?对此,天津app开发-文率科技有如下的建议,或许对广大的安卓开发者有所帮助。
一、混淆代码
Java作为一种跨平台的、解释型语言,想要被反编译很容易,一般情况,Java源代会被编译成中间“字节码”存储于class文件中。因此,为了很好地保护Java源代码,开发者会对编译好的class文件进行混淆处理。所谓的混淆也就是对发布出去的程序进行重新组织和处理,使得处理后的代码与处理前的代码功能完全相同,更重要的是混淆后的代码很难被反编译,即便反编译成功也很识别出程序的真正语义。
二、整体Dex加固
Dex加固是对Dex文件进行加壳防护,防止被静态反编译工具破解而泄露源码,较开始出现的是整体加固技术方案。整体加固技术包括:替换application/classes.dex、解密/动态加载原classes.dex、调用原application相关方法、将原application对象/名称设置到系统内部相关变量。其中较关键的就是解密/动态加载原classes.dex,通过加密编译好的较终ex源码文件,可以很好地隐藏源码并防止直接性的反编译。
三、用dex2jar反编译出java源代码
首先,我们需要重新操作apk文件,其实apk文件就是一种压缩包,所以我们把后缀名改成rar,直接用解压缩工具打开。这时或许有人会问,为什么不直接解压缩?因为其他文件在apktool那一步已经反编译出来了,我们需要的仅仅是class文件,这是java代码编译后生成的文件,用dex2jar这个工具就可以反编译出原代码了。把这个class文件解压出来,放在dex2jar的同级目录下,命令成功完成后就会在同级目录下生成jar文件了。
四、用gui查看代码
通过gui打开jar文件,不仅能看到java代码,这里所有的引入的包代码都会有,那么如何寻找我们要的主程序代码?这就需要依赖manifest文件,熟悉android的朋友应该都知道,在manifest文件中有两个信息比较重要。1)包名,也就是主程序的路径,在manifest的较开始一行;2)入口activity,这个不难,只要找到有launcher标识的activity就是入口activity。
五、重新打包,签名,运行
在开始工作之前,较重要的就是修改代码二次打包,其实这里你可以什么代码先都别改,只重新打包一次,看看程序是否能够正常运行,如果不能,看看程序是哪一步阻止了运行,这也方便你后期定位签名验证的位置。目前我见过的签名验证有以下几种:
1、接抛出异常,禁止运行
2、出提示框提示用户,提示框消失后,退出程序
3、务器交互传递签名信息,如果不正确则服务器不返回数据
六、绕过程序防二次打包机制
首先,天津app开发建议大家先全局搜一下signatures这个字符串,因为程序要获取app的签名就要通过packageInfo.signatures这种方式,如果在这里我们不让程序获取到真正的签名,而是直接返回给它那个“正确”的签名,岂不是瞒天过海,一步搞定。当然了,你必须要有原来那个程序的“正确”签名,不过这个简单,android系统并不阻止你去获取其他程序的签名,所以我们可以写个小的test程序,然后安装原来的apk,去获取一次正确的签名,记录下来即可。
只要能够掌握上述天津app开发分享的这几点,相信你的Android app应用的安全性一定会得到非常大的提高,起码可以经得起攻击了,而不是原来的不堪一击。
相关阅读推荐
安卓应用下载分析
昨天天津app开发——文率科技的小编分析了IOS的《APP STORE应用下载...
为什么Android开发最抢手?
近几年,移动互联网开发行业最火爆的就是安卓开发,它目前在市场中拥有非常高的占有率...
详解:谷歌Android Q新特性
谷歌在美国当地时间3月13日正式式推送了Android Q的首个Beta版本,新...
不要频繁卸载手机软件,尤其是安卓用户!
移动互联网的快速发展,app应用的不断普及,在各个方面都给人们带来了或多或少的便...
最新资讯
Android APP开发资讯文章推荐阅读
浅谈目前Android app开发所存在的优缺点
移动互联网的发展,促使app应用发展走向顶峰,目前...
为什么Android开发最抢手?
近几年,移动互联网开发行业最火爆的就是安卓开发,它...
不要频繁卸载手机软件,尤其是安卓用户!
移动互联网的快速发展,app应用的不断普及,在各个...
详解:谷歌Android Q新特性
谷歌在美国当地时间3月13日正式式推送了Andro...
高级Android开发进阶需掌握技术
Android开发已经凉凉了吗?最近这几年,总有人...
Android APP开发中社交媒体营销有哪些优点
短短几年的发展,社交媒体已经发展成为企业可用的最强...
安卓开发为什么选择用Java语言
最近几年,安卓应用开发一直处于长期增长的状态,安卓...
安卓应用下载分析
昨天天津app开发——文率科技的小编分析了IOS的...
APP开发需要注意的五大要点
移动互联网的发展使得APP在我们生活中扮演的作用越...
有效提升工作效率的App应用推荐
很多的人都认为在这个世界上存在有很多不公平的事情,...