基于Frida的脱壳工具
参考dstmath的frida-unpack https://github.com/dstmath/frida-unpack
xiaokanghub的Frida-Android-unpack https://github.com/xiaokanghub/Frida-Android-unpack
对脚本功能做了优化,适配了更多平台,加强了对于各安卓版本的通用性
目前测试过Android4.4(貌似frida对Android4.4兼容并不好) Android5.1 Android6.0 Android7.1
一、frida环境搭建
前面文档有写过
二、原理说明
利用frida hook libart.so中的OpenMemory或OpenCommon(Android N以后)方法,拿到内存中dex的地址,计算出dex文件的大小,从内存中将dex导出。
三、脚本用法
在手机上启动frida server端 执行 frida -U -f com.xxx.xxx -l dumpDex.js --no-pause 脱壳后的dex保存在/data/data/应用包名/目录下
四、适用环境
普通加固可以脱壳,对于类抽取等加固脱出的只是个空壳,需要做指令Dump以及Patch到脱出的Dex文件中
五、导出DEX文件
从
dex保存在/data/data/应用包名/目录下
导出dex文件
C:\Users\Administrator>adb shell
shell@shamu:/ $ su
root@shamu:/ # cd /data/data/
在data/data/目录下 # 包名
root@shamu:/ # cd /data/data/com.wanda.kuaiyihua/
在data/data/目录下 # 包名
root@shamu:/data/data/com.wanda.kuaiyihua # ls
# 创建文件wanda
root@shamu:/data/data/com.wanda.kuaiyihua # mkdir /sdcard/Download/wanda
# 移动dex 到 wanda 目录下
root@shamu:/data/data/com.wanda.kuaiyihua # mv *.dex /sdcard/Download/wanda
# 从wada文件中导出dex 到 本地目录D:\wada 下
C:\Users\Administrator>adb pull /sdcard/Download/wanda D:\wada
adb查看app包名
adb shell dumpsys window w |findstr \/ |findstr name=
六、参考链接
https://www.frida.re/docs/home/