第10章 工具生态
10.1 Objection
Objection 是基于 Frida 的运行时移动探索工具包,提供一键操作。当前版本 1.12.4 兼容 Frida 17.x。
安装
pip3 install objection基本使用
# 连接到运行中的应用
objection -g com.target.app explore
# Spawn 模式
objection -g com.target.app explore --startup-command "android sslpinning disable"
# 断开后重连(1.12.4 新增)
# reconnect / reconnect_spawn 命令常用命令
# === SSL Pinning 绕过(一键!)===
android sslpinning disable
# === Root 检测绕过 ===
android root disable
# === 类/方法探索 ===
android hooking list activities
android hooking list classes
android hooking search classes password
android hooking search methods encrypt
# === Hook 方法 ===
android hooking watch class_method com.target.Class.method \
--dump-args --dump-return
# === Hook 整个类 ===
android hooking watch class com.target.Class
# === 内存操作 ===
memory dump all /tmp/dump.bin
memory list modules
memory search "password"
# === 文件系统 ===
ls /data/data/com.target.app/
file download /data/data/com.target.app/databases/app.db /tmp/app.db
# === Keystore ===
android keystore list
# === Intent ===
android intent launch_activity com.target.app/.SecretActivityAPK 自动注入 Gadget(非 Root)
# 自动完成: 反编译 → 注入 gadget → 重打包 → 签名
objection patchapk --source target.apk
# 指定 gadget 版本(与 frida 客户端匹配)
objection patchapk --source target.apk --gadget-version 17.9.11
# 指定架构
objection patchapk --source target.apk --architecture arm64-v8a
# Android 14/15 注意事项:
# - 需要使用 apksigner 而非 jarsigner(v2/v3 签名要求)
# - 部分应用可能需要禁用 v4 签名检查10.2 r2frida
r2frida 将 Radare2 的逆向工程能力与 Frida 的动态 instrumentation 结合。当前版本 6.1.4 兼容 Frida 17.9.x 和 Radare2 6.1.4。
安装
r2pm -ci r2frida基本使用
# 附加到 Android 应用
r2 frida://spawn/usb//com.target.app
# 附加到本地进程
r2 frida://attach/local//Calculator常用命令
# 列出模块
\il
# 列出模块导出
\iE libtarget.so
# 搜索内存中的字符串
\/ password
# Hook 函数(设置断点)
\di0 0x12345
# 追踪函数调用
\dtf write 4
# 执行 Frida JavaScript
\. script.js
# 加载 ESM 脚本(6.1.4 新增支持)
\. ./agent.mjs
# 运行时反汇编
pd 20 @ sym.target_function
# 读取内存
px 64 @ 0xdeadbeef
# 在目标进程中执行 C 代码
\dc int val = 42; printf("%d\n", val);
# Android Java 操作
\. Java.perform(function() { ... })
# 加载架构/平台特定的 agent 脚本
# 6.1.4 支持从 home 和 system 目录自动加载r2frida 优势
- 在同一会话中结合静态分析 (r2) 和动态 hook (frida)
- 二进制修补 + instrumentation 工作流
- 支持 Dalvik、Java、ObjC、Swift
- ESM 模块支持,便于组织大型 agent 脚本
10.3 frida-interception-and-unpinning
GitHub: httptoolkit/frida-interception-and-unpinning
全面的 SSL/TLS 拦截和绕过工具包,适用于 Android 14/15:
- 自动流量重定向到代理
- 系统证书注入
- 主流库 pinning 绕过(OkHttp、Volley、Flutter、Conscrypt 等)
- 混淆实现的回退自动修补(自动检测未处理的验证失败并生成 patch)
- Root 检测绕过
- HTTP/3 阻断强制 HTTP/2 回退
- 证书透明度(CT)验证绕过
使用
# 克隆
git clone https://github.com/httptoolkit/frida-interception-and-unpinning
# 使用
frida -U -f com.target.app \
-l frida-interception-and-unpinning/frida-script.js
# 配合 HTTP Toolkit 使用(推荐,自动配置代理)
# 下载 HTTP Toolkit 后一键拦截10.4 frida-strace(17.8.0+ 新增)
Frida 17.8.0 引入的官方系统调用追踪工具,基于 eBPF 实现:
# 安装(随 frida-tools 一起安装)
pip install frida-tools==13.6.1
# 追踪 Android 应用系统调用
frida-strace -U -f com.target.app
# 追踪 iOS 应用
frida-strace -U -f com.example.ios.app
# 多进程追踪
frida-strace -U -n com.target.app -n com.target.service
# 适用场景:
# - 检测 RASP 机制使用了哪些系统调用
# - 分析反调试技术(ptrace, prctl, kill)
# - 监控文件访问模式
# - 排查权限拒绝问题10.5 Fridump(内存 Dump)
# 安装
pip3 install fridump3
# 使用 - dump 进程内存
fridump3 -U com.target.app -o /tmp/dump/
# 搜索 dump 中的字符串
grep -r "password" /tmp/dump/10.6 Brida(Burp Suite 集成)
Burp Suite 插件,使用 Frida 操作移动应用加密/编码:
- 在 Burp 中直接调用 Frida 脚本解密请求/响应
- 自定义编码器/解码器
- 支持请求签名重放
10.7 常用 Frida 脚本仓库
| 仓库 | 说明 | 状态 |
|---|---|---|
frida/frida-java-bridge | Java Hook 核心桥接 | 活跃维护 |
httptoolkit/frida-interception-and-unpinning | SSL/TLS 全面绕过 | 活跃维护,推荐 |
iddoeldor/frida-snippets | 常用代码片段集合 | 社区维护 |
m0bilesecurity/RMS-Runtime-Mobile-Security | 可视化 Frida 工具 | 活跃 |
ChiChou/bagbak | iOS App 脱壳 | 活跃 |
federicodotta/Brida | Burp Suite 集成 | 活跃 |
AeonLucid/AndroidNativeEmu | Android Native 库模拟 | v0.0.4 |
Frida CodeShare 热门脚本
| 脚本 | 说明 |
|---|---|
| Universal Android SSL Pinning Bypass | 通用 SSL pinning 绕过(55万+ 浏览) |
| frida-multiple-unpinning | 多种 pinning 实现绕过 |
| fridantiroot | Root 检测绕过 |
| Multi-Purpose Bypass Tool | SSL + Root + 模拟器检测综合绕过 |
10.8 工作流示例
完整的 Android 安全测试流程(Frida 17.9.11)
# 1. 部署 frida-server
adb push frida-server-17.9.11-android-arm64 /data/local/tmp/frida-server
adb shell "su -c 'chmod 755 /data/local/tmp/frida-server'"
# 使用隐蔽模式(重命名 + 自定义端口)
adb shell "su -c 'mv /data/local/tmp/frida-server /data/local/tmp/hluda-server'"
adb shell "su -c '/data/local/tmp/hluda-server -l localabstract:my-frida -D &'"
# 2. 确认连接
frida-ps -Uai | grep target
# 3. 系统调用分析(17.8.0+ 新功能)
frida-strace -U -f com.target.app
# 观察反调试/反 hook 使用了哪些系统调用
# 4. 快速 SSL 绕过 + 探索(用 objection)
objection -g com.target.app explore
> android sslpinning disable
> android root disable
> android hooking list activities
> android hooking search classes crypto
# 5. 深度分析(用 frida + 自定义脚本)
frida -U -f com.target.app -l ssl_bypass.js -l crypto_monitor.js
# 6. Native 层分析(用 r2frida)
r2 frida://spawn/usb//com.target.app
> \il # 列出模块
> \iE libnative.so # 列出导出
> \. hook_native.js # 加载 hook
# 7. 非 Root 场景(用 objection 注入 gadget)
objection patchapk --source target.apk --gadget-version 17.9.11
adb install target.objection.apk
objection -g Gadget exploreAndroid 14/15 强化应用测试流程
# 对于使用了 Play Integrity + 强证书绑定的应用:
# 1. 环境准备
# - Magisk + Shamiko(隐藏 root 状态)
# - LSPosed + Hide My Applist(隐藏已安装工具)
# - frida-server 重命名 + abstract socket
# 2. 绕过检测链
frida -U -f com.target.app \
-l anti-detection.js \ # 线程名/内存映射/端口隐藏
-l ssl_bypass.js \ # SSL pinning 绕过
-l integrity_bypass.js # Play Integrity hook
# 3. 如果 spawn 模式被检测
# 改用 gadget 注入(最隐蔽)
objection patchapk --source target.apk --gadget-version 17.9.11
# 或使用 LSPosed 模块注入 Frida gadget10.9 与 Android 性能分析结合
Frida 可用于辅助 Perfetto/systrace 性能分析:
// 在关键函数执行时添加 atrace 标记
Java.perform(function() {
var Trace = Java.use('android.os.Trace');
var MyRenderer = Java.use('com.example.app.MyRenderer');
MyRenderer.render.implementation = function() {
Trace.beginSection('MyRenderer.render');
var result = this.render();
Trace.endSection();
return result;
};
});这样可以在 Perfetto trace 中看到自定义标记,精确定位性能瓶颈。
10.10 版本兼容性矩阵
| 工具 | 版本 | Frida 兼容性 | 备注 |
|---|---|---|---|
| frida | 17.9.11 | - | 核心框架 |
| frida-tools | 13.6.1 | 17.9.x | CLI 工具集(含 frida-strace) |
| objection | 1.12.4 | 17.x | 运行时探索工具 |
| r2frida | 6.1.4 | 17.9.x | Radare2 集成 |
| fridump3 | latest | 17.x | 内存 dump |
| Brida | latest | 17.x | Burp Suite 集成 |
Python 客户端安装
# 推荐安装组合
pip install frida==17.9.11 frida-tools==13.6.1 objection
# 验证
frida --version # 17.9.11
objection version # 1.12.4