第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/.SecretActivity

APK 自动注入 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-bridgeJava Hook 核心桥接活跃维护
httptoolkit/frida-interception-and-unpinningSSL/TLS 全面绕过活跃维护,推荐
iddoeldor/frida-snippets常用代码片段集合社区维护
m0bilesecurity/RMS-Runtime-Mobile-Security可视化 Frida 工具活跃
ChiChou/bagbakiOS App 脱壳活跃
federicodotta/BridaBurp Suite 集成活跃
AeonLucid/AndroidNativeEmuAndroid Native 库模拟v0.0.4

Frida CodeShare 热门脚本

脚本说明
Universal Android SSL Pinning Bypass通用 SSL pinning 绕过(55万+ 浏览)
frida-multiple-unpinning多种 pinning 实现绕过
fridantirootRoot 检测绕过
Multi-Purpose Bypass ToolSSL + 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 explore

Android 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 gadget

10.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 兼容性备注
frida17.9.11-核心框架
frida-tools13.6.117.9.xCLI 工具集(含 frida-strace)
objection1.12.417.x运行时探索工具
r2frida6.1.417.9.xRadare2 集成
fridump3latest17.x内存 dump
Bridalatest17.xBurp Suite 集成

Python 客户端安装

# 推荐安装组合
pip install frida==17.9.11 frida-tools==13.6.1 objection
 
# 验证
frida --version     # 17.9.11
objection version   # 1.12.4