基于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:UsersAdministrator>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:UsersAdministrator>adb pull /sdcard/Download/wanda D:wada

adb查看app包名

adb shell dumpsys window w |findstr / |findstr name=

六、参考链接

https://www.frida.re/docs/home/

https://github.com/dstmath/frida-unpack

https://github.com/xiaokanghub/Frida-Android-unpack

原文地址:https://www.cnblogs.com/gqv2009/p/14603178.html