使用Frida+FRIDA-DEXDump脱360壳

这孤单的滋味,我慢慢体会


我使用的python版本是3.9

pip安装模块:

1
2
pip install frida
pip install frida-tools

不翻墙的话安装会比较慢,可以使用离线安装方式

直接安装 frida-tools 模块,默认自动会安装 frida 模块

安装好后,在系统 cmd 执行 frida --version 命令,如果有版本信息就是安装成功了

如果出现报错,或者是 failed to create process ,如下

打开 python 路径下的 scripts 文件夹,找到 frida-script.py 文件

直接将第一行删除(因为我们的用户名是中文,乱码导致报错)

删除后运行正常

然后下载 ADB 工具

1
2
3
Windows版本:https://dl.google.com/android/repository/platform-tools-latest-windows.zip 
Mac版本:https://dl.google.com/android/repository/platform-tools-latest-windows.zip
Linux版本:https://dl.google.com/android/repository/platform-tools-latest-linux.zip

将文件下载下来,解压缩到自定义目录,并将目录添加到系统环境变量

然后 cmd 运行 adb --version

显示版本信息就代表安装成功

ADB基础命令

Android开启调试模式等..

1
2
3
4
5
adb连接命令:adb connect ip:port
adb断开命令:adb disconnect ip:port

从手机中拉取信息放到本地电脑:adb pull <手机路径> <PC路径>
从本地推送信息到手机上去:adb push <PC路径> <手机路径>

使用 adb devices 命令列出当前和计算机连接的Android设备或者模拟器

device 是设备连接状态

设备连接状态结果可能有四种:

  • offline 连接异常

  • device 连接正常

  • unknown 没有识别设备

  • unauthorized 未经授权

unauthorized 是因为Android端还未接受RSA密钥,接收后状态就为 device ,如下

查看设备连接状态:adb get-state

这条命令只会显示当前设备的状态

进入Android的shell模式命令:adb shell

下载跟电脑版本一样的Android端 frida

项目地址:https://github.com/frida/frida/releases/

把文件下载下来解压,然后使用adb push命令将文件上传到安卓 /data/local/tmp 目录下

1
adb push C:\\Users\\梅川库子\\desktop\\frida-server-15.1.2-android-x86_64 /data/local/tmp

然后进入Android的 /data/local/tmp 目录给 frida 文件加上 777 权限

后面启动 frida 需要 root 权限,得先获取手机的 root 权限

我这里使用的mumu模拟器的adb,默认就是root权限(mumu模拟器默认端口7555)

然后运行 frida

运行了之后使用 frida-ps -U 查看Android进程,如果有,则代表 Frida 已经连接成功

然后我们把app运行起来,通过 frida-ps -U 找到进程

使用 FRIDA-DEXDump 工具来脱壳

项目地址:https://github.com/hluwa/FRIDA-DEXDump

脚本参数:-n 指定进程名称;-p 指定pid

如果app处于手机顶层状态,直接运行 python main.py 即可脱壳

adb 命令查看Activity信息:adb shell dumpsys activity top | find "ACTIVITY"

使用 Jadx 工具打开 dump 下来的 dex 文件

如果没找到,就把app卸载重新安装,然后再重新尝试

项目地址:https://github.com/skylot/jadx/releases