前言
今天拿到了新玩具JEB 3.17.1,想测试一下,顺便学习学习Android逆向,于是找了一个apk准备试试水,看看能不能搞到VIP。
初步分析
拖入jeb查看
嗯。。google一下
几维安全的壳,虚拟化很烦,也没什么好的脱壳工具,于是切换思路
从本质上来说,虚拟化就是自己实现了一套基本的cpu指令,通过自己的解释器解释给机器。因此想要在虚拟化之后仍然能让机器运行,当然还得还原代码给机器,只不过可能在内存中释放,加大了静态分析的难度。
那么直接让apk运行起来,我们去dump虚拟机自解密出来的dex不就好了么。
frida dump dex
frida 是一款基于 python+javascript 的 hook 框架,可运行在 android、ios、linux、win等各个平台,主要使用的动态二进制插桩技术。
总之frida是非常强大的,可以实现很多奇妙操作。
安装
pip3 install frida
frida-server
到上面链接里找到对应手机架构,与frida版本相同的frida-server
移动frida-server到安卓的/data/local/tmp目录
./adb push frida-server /data/local/tmp
./adb kill-server && ./adb server && ./adb shell # 这里我用了mumu模拟器,其他虚拟机连接adb方法请自行查询
cd /data/local/tmp
chmod 777 frida-server
./frida-server #开始你的炸弹秀
frida脚本
其原理就是在内存中检索dex035头并获取dex长度,然后提取出来。当然,这样做会将内存中所有的dex包都提取出来,具体哪个才是我们需要的得根据包名判断并静态分析查看。
python3 ./main.py
这里我成功提取到了无壳dex,包名都比较清晰
抓包分析
既然壳不好脱而且脱下来的又不容易修复,就考虑先看看封包里有没有VIP数据
使用HttpCanary对apk进行抓包
抓到了一个登陆验证包