android 一二壳的脱取方式及原理分析

何为1,2代壳

1代壳dex文件加载时落地
2代壳dex文件加载时不落地

解决方式,内存dump即可

1.先上两个基于frida 脱壳的工具

葫芦娃的dexDump
yang大佬的dump_dex

2.这两种有什么区别呢

hluwa的是基于加载后的dex文件解析的
yang的是app在启动时,找到的hook点去脱壳的

3.hluwa dexDump原理分析,执行顺序

1.找到内存里有 “64 65 78 0a 30 ?? ?? 00"的文件
2.循环遍历,再验证这个dex是不是我们的dex文件
3.验证的过程有
1.dex文件头大小 >= 60;一般来说是70
2.读取前4个字节是否是"dex\n”
3.0x20 位置的数据是文件的大小,再对此时我们使用的文件的大小作比对
4.验证map_offet的大小和此时我们使用的文件的大小作比对
5.stringd_ids的偏移位置是不是112
4.使用map去获取dex的大小,因为map是位于dex文件末尾
先取到map的offset,根据offset+大小,获取到map结尾的位置,再减去起始位置,即可得到dex的大小
参考文章

参考源码

4.yang的dex解析

1.先拿到libart,因为需要根据libart拿到_ZN3art11ClassLinker11DefineClassEPNS_6ThreadEPKcmNS_6HandleINS_6mirror11ClassLoaderEEERKNS_7DexFileERKNS9_8ClassDefE
2.拿到地址开始dumpdex

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页