一.前言
在NSSCTF练习安卓逆向,第一次遇到安卓脱壳题
大佬的题解只有一句话"frida-dexdump一把嗦"
听起来容易做起来难,还遇到了安卓虚拟机的玄学bug,折磨了我很久,好在最终使用真机成功dump并得到flag
题目来源:[网鼎杯 2020 青龙组]bang
如果直接用jadx打开会发现点击MainActivity没有反应
二.准备
1.安装AndroidStudio并将SDK目录添加至环境变量
这个操作主要是为了方便后续使用adb调试手机
2. 一台root的手机或者安卓虚拟机
建议用真机,虚拟机有可能会导致奇怪的bug
3. 安装firda-dexdump
安装frida工具
pip install frida
pip install frida-tools
pip install frida-dexdump
4. 下载firda-server并推送至手机运行
1. 查看手机架构
adb shell getprop ro.product.cpu.abi
2. 下载frida-server
项目地址:frida
根据手机或虚拟机架构下载对应安装包并解压
3. 推送frida-server至手机
adb push frida-server-16.0.19-android-arm64 /data/local/tmp
4. 运行frida-server
adb shell //进入shell
su //获取root权限
cd /data/local/tmp //进入tmp目录
chmod 777 frida-server-16.0.19-android-arm64 //给予可执行权限
./frida-server-16.0.19-android-arm64 //运行程序
注意这里运行之后并不会有回显,光标会卡在那
5. 使用frida-dexdump脱壳
使用frida-ps -Ua命令查看手机正在运行的程序以及PID和包名等信息
或者使用adb shell pm list package显示包名
脱壳命令
指定App的应用名称:frida-dexdump -U -n how_debug
指定App的应用进程ID:frida-dexdump -U -p 29575
指定App的应用包名:frida-dexdump -U -f com.example.how_debug
前两种方式需要提前运行程序,第三种不需要,frida-dexdump会自动运行程序,不过前提是知道包名(可以通过一些其他工具查看apk的包名)
frida-dexdump -U -f com.example.how_debug
然后运行该命令的文件夹便会输出脱壳后的文件
选中这些文件拖到jadx中打开
然后就可以找到MainActivity了
这题的逻辑也并不复杂,分别输入用户名:admin密码:pass71487
成功登录后会输出flag{borring_things}
三.参考文章
- Android Spider Frida-Dexdump 脱壳工具下载使用以及相关技术介绍
- adb shell 查看CPU架构
- 每天一个adb命令:pm 命令详解
- frida-dexdump 真机&模拟器 一键安装+执行