前言
对于当前的APP来说,基本都采用了加壳这一方式来对APP进行加固,这也是在算法分析上需要过的第一个点。在挖洞过程中,主要还是针对业务层逻辑进行分析处理,寻找漏洞点。因此本篇利用某园这一APP,侧重点在于对脱壳原理的介绍和一些脱壳工具的分享和使用。
脱壳原理介绍
首先说一下壳的历史发展。第一代壳是对Dex加密,会进行Dex字符串加密,资源加密,对抗反编译,反调试,自定义DexClassLoader。
第二代壳是Dex抽取与So加固,对抗第一代壳常见的脱壳法,Dex Method代码抽取到外部(通常企业版),Dex动态加载,So加密。
第三代壳是Dex动态解密与So混淆,Dex Method代码动态解密,So代码膨胀混淆,对抗之前出现的所有脱壳法。
然后现在出现了第四代加壳技术,就是vmp壳。
而我们脱壳就是要对内存中处于解密状态的dex的dump。这就需要准确定位内存中解密后的dex文件的起始位置和大小。
常见壳的识别
对于市面上常见的壳,基本都可以通过其基本命名去判断。
娜迦: libchaosvmp.so , libddog.solibfdog.so
爱加密:libexec.so, libexecmain.so
梆梆: libsecexe.so, libsecmain.so , libDexHelper.so
360:libprotectClass.so, libjiagu.so
通付盾:libegis.so
网秦:libnqshield.so
百度:libbaiduprotect.so
腾讯:lejiagu
另外还可以使用工具如PKiD,APKDetecter等等。
Youpk
首先介绍一下Youpk这一工具,项目地址:https://github.com/Youlor/Youpk
这也是笔者常用的方法,因为手头上的测试机正好是pixel 1代,刚好适配。可以在分析的时候就把脱壳这件事做了,pixel+Youpk,站着就把钱赚了(手动狗头)。可能唯一不足的地方就是需要刷机,不过作者已经提供了一键刷机的方法,因此问题也不大。使用方法也很简单。首先在手机上启动某园APP,然后
adb shell "echo cn.domo.domo >> /data/local/tmp/unpacker.config"
之后查看日志信息等待unpack end即可。


然后将文件pull出来直接导入jadx(jadx支持多dex分析,免去了修复的麻烦)即可进行java层分析。
FRIDA-DEXDump
这是hluwa大佬的作品,项目地址:https://github.com/hluwa/FRIDA-DEXDump
只需要frida环境即可使用。可以运行frida-dexdump或者python3 main.py进行脱壳。

BlackDex
这是一个最近出来的工具,是最最最支持傻瓜式操作的,项目地址:https://github.com/CodingGay/BlackDex
官方介绍:BlackDex是一个运行在Android手机上的脱壳工具,支持5.0~12,无需依赖任何环境任何手机都可以使用,包括模拟器。只需几秒,即可对已安装包括未安装的APK进行脱壳。项目包括32位和64位,Google 已经在2019年9月强制所有新上架 Google Play 的应用提供 64 位版本,64取代32是趋势。不过国内的apk,还有很大一部分都是32位。因此如果其中一个版本没有显示你想脱壳的apk就选择另一个版本。笔者使用的一加9+balckdex 32位进行测试。只需5秒,就出结果了。

并且blackdex还支持深度脱壳,但是还是不太稳定,期待后续吧。
总结
本篇文章主要注重了脱壳这一过程,没有很深入的介绍脱壳中的技术点,毕竟表哥们还要把更多的精力放在后续的挖洞上,有更多关于脱壳的想法以及一些骚操作大家可以在评论区积极讨论。下一篇就将进行脱壳后的签名算法分析。