一二三代壳和加壳技术分类识别

本文围绕Android加壳技术展开,介绍了动态加载这一基础,阐述了ClassLoader修正的两种手段。回顾了壳的发展历程,列举了加固厂商特征。还讲述了加壳技术的发展、识别方法,以及针对不同类型壳的解决方案,如Dex整体加壳、函数抽取、VMP和Dex2C等。

参考: https://www.jb51.net/article/133834.htm

1. 动态加载

动态加载是Dex加壳、插件化、热更新的基础
比如阿里的AndFix和HotFix,腾讯的tinker、美团的Robust等热修复框架的基础

什么是动态加载? 为什么要动态加载?

动态加载就是用到的时候再去加载,也叫懒加载,也就意味着用不到的时候不会去加载。

2. ClassLoader修正

动态加载的dex不具备生命周期特征,App中的Activity、Service等组件无法正常工作,只能完成一半函数的调用;
需要对ClassLoader进行修正,App才能够正常运行,两种修正手段;

解决手段1:反射替换成DexClassLoader

修改系统组件类的ClassLoader(mClassLoader),通过反射的方式进行替换,替换成DexClassLoader.

解决手段2:插入DexClassLoader

在PathClassLoader和BootClassLoader中间插入DexClassLoader(双亲委派)

3. 壳史

第一代壳 Dex加密

Dex字符串加密资源加密对抗反编译反调试自定义DexClassLoader

第二代壳 Dex抽取与So加固

对抗第一代壳常见的脱壳法Dex Method代码抽取到外部(通常企业版)Dex动态加载So加密

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值