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文件则被藏起来了,这进一步加大了逆向的难度。关于加壳,市面上有很多成熟的企业加固方案可以使用,如果不是专门研究这方面的开发者去自行开发一套加壳方案还是有所难度的。
加壳也只是提高被逆向的门槛,同时应用加壳还要留意平台兼容性等问题。
1.要进行加壳的原应用安装包、做壳的安装包;
2.对原应用安装包进行拆解获取各个部分,并且对dex文件进行算法加密;
3.将加密原dex和壳Apk中的dex进行组合,合并使之成为新的dex文件;
4.利用特制的打包工具合并生成加密后的Apk;
这种通过隐藏dex文件加壳的方式,最终是利用ClassLoader在内存中解密并进行动态加载运行。而如果是修改dex文件的加壳方式,其主要是抽取DexCode中的字节码指令后用零去填充,或者修改方法属性等操作,其修复时机是运行在内存中做相应的修正工作。
通过加壳操作得到的安装包如果不进行脱壳操作,逆向人员就无法拿到真正的dex文件,也就无从分析。
这里我们看一下一个使用360加固的一个应用结构在没有脱壳之前的安装包结构。
只有寥寥几个类,而真正的安装包中的dex文件则被藏起来了,这进一步加大了逆向的难度。关于加壳,市面上有很多成熟的企业加固方案可以使用,如果不是专门研究这方面的开发者去自行开发一套加壳方案还是有所难度的。
加壳也只是提高被逆向的门槛,同时应用加壳还要留意平台兼容性等问题。
相关文章推荐
- Android应用安全风险与防范之加壳
- Android应用安全风险与防范之代码混淆
- Android应用安全风险与防范
- Android应用安全风险与防范
- Android 应用安全风险与防范
- Android应用安全风险与防范之代码混淆
- Android应用安全与防范之签名校验
- android 应用安全-无源码加壳优化
- Android应用安全与防范之数据保护和资源保护
- Android应用安全开发之防范无意识的数据泄露
- Android应用安全与防范之数据保护和资源保护
- Android应用安全之外部动态加载DEX文件风险
- Android应用安全与防范之签名校验
- Android应用安全防御
- android应用安全——代码安全(android代码混淆)
- 移动应用安全开发指南(Android)--完结篇
- Android APK安全: 代码混淆且加壳防止反编译
- Android属性allowBackup安全风险浅析
- Android中的UID、GID与应用安全
- Windows端Drozer使用(Android APP应用安全评估框架)