您的位置:首页 > 移动开发 > Android开发

Android应用安全风险与防范之加壳

2017-03-15 20:09 302 查看
加壳的原理是通过机密原应用的安装包中的dex文件,大致操作如下:

1.要进行加壳的原应用安装包、做壳的安装包;

2.对原应用安装包进行拆解获取各个部分,并且对dex文件进行算法加密;

3.将加密原dex和壳Apk中的dex进行组合,合并使之成为新的dex文件;

4.利用特制的打包工具合并生成加密后的Apk;

这种通过隐藏dex文件加壳的方式,最终是利用ClassLoader在内存中解密并进行动态加载运行。而如果是修改dex文件的加壳方式,其主要是抽取DexCode中的字节码指令后用零去填充,或者修改方法属性等操作,其修复时机是运行在内存中做相应的修正工作。

通过加壳操作得到的安装包如果不进行脱壳操作,逆向人员就无法拿到真正的dex文件,也就无从分析。

这里我们看一下一个使用360加固的一个应用结构在没有脱壳之前的安装包结构。



只有寥寥几个类,而真正的安装包中的dex文件则被藏起来了,这进一步加大了逆向的难度。关于加壳,市面上有很多成熟的企业加固方案可以使用,如果不是专门研究这方面的开发者去自行开发一套加壳方案还是有所难度的。

加壳也只是提高被逆向的门槛,同时应用加壳还要留意平台兼容性等问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  加壳 加密 逆向