何为1代壳
1代壳dex文件加载时落地
2代壳dex文件加载时不落地
解决方式,内存dump即可
1.先上两个基于frida 脱壳的工具
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