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

加壳的原理是通过机密原应用的安装包中的dex文件,大致操作如下:

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

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

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

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

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

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

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

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

加壳也只是提高被逆向的门槛,同时应用加壳还要留意平台兼容性等问题。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,860评论 25 709
  • 1、网络请求——裸奔的数据 无论是网页还是APP,都不可避免与后台服务进行访问,可能从服务器获取数据或者提交数据到...
    dfqin阅读 10,072评论 0 16
  • salen小伦阅读 163评论 0 0
  • 一直都知道钱老是个特别牛逼的人,人称行走的百度(好吧,我自己说的)。博闻强记,著述颇丰,偏向于搞研究而不是文学创作...
    希以昂格厄阅读 767评论 4 6
  • 芦叶满汀洲,寒沙带浅流。二十年重过南楼。柳下系船犹未稳,能几日,又中秋。黄鹤断矶头,故人曾到否?旧江山浑是新愁。欲...
    一隅生阅读 890评论 5 3