百趣云 百趣云的博客

objection 快速上手:不写代码的 Frida 逆向工作流

objection 是什么:Frida 的"免编程外壳"

objection 把 Frida 最常用的逆向能力封装成交互式命令:内存搜类、hook 方法、dump 内存、绕过 root 检测——全部一行命令搞定,不用写 JavaScript。它不是替代 Frida 脚本,而是侦察阶段的效率工具:先用 objection 快速摸清 App 结构,确定关键类和方法,再写精准的 Frida 脚本。

pip install objection
objection -g com.target.app explore        # attach 已运行的 App
objection -g com.target.app explore -s "startup"  # spawn 模式

核心命令速查(按使用频率排序)

侦察类结构

# 列出内存中加载的所有类(支持模糊匹配)
android hooking search classes sign
android hooking search classes com.target.app.crypto

# 看某个类的所有方法(含签名)
android hooking list class_methods com.target.app.crypto.SignUtils

# 搜方法名
android hooking search methods getSign

hook 与监控

# hook 一个类的所有方法(重载全覆盖)
android hooking watch class com.target.app.crypto.SignUtils

# hook 单个方法,带参数/返回值/调用栈
android hooking watch class_method com.target.app.crypto.SignUtils.getSign \
    --dump-args --dump-return --dump-backtrace

# 监控当前 Activity(看用户在哪个页面触发了什么)
android hooking get current_activity

内存与数据

# 搜内存里的实例(找已经创建的 SignUtils 对象)
android heap search instances com.target.app.crypto.SignUtils

# 对堆上实例直接调方法(借 App 的手算签名!)
android heap execute 0x1234 getSign "test_input"

精髓一:heap execute 是被低估的神技

android heap execute 直接调用内存中已存在对象的方法——这意味着:

  • 签名函数是实例方法?搜到实例直接调,不用管构造
  • 想测试某个方法的边界行为?heap 里拿真实对象喂参数
  • 配合 --dump-return,这就是一个免开发的 RPC 调用器

实战案例:某 App 的签名类需要 Context 初始化,自己构造很麻烦。用 heap search instances 找到 App 自己创建的实例,heap execute 直接调它的 sign 方法——App 环境、初始化状态全是现成的。

精髓二:启动期监控的正确姿势

很多关键调用(密钥初始化、设备指纹采集)发生在 App 启动瞬间,attach 模式会错过。objection 的 spawn 模式配合启动命令:

objection -g com.target.app explore -q \
    --startup-command "android hooking watch class com.target.app.SecuritySdk" \
    --startup-command "android hooking watch class_method com.target.app.App.onCreate"

-q 安静模式 + --startup-command 在 App 启动前就挂好 hook,启动期的调用一个不漏。

精髓三:内置的绕过命令

android root disable          # 绕过常见 root 检测
android sslpinning disable    # 绕过 SSL Pinning(覆盖主流实现)
android ui FLAG_SECURE false  # 绕过截屏保护

android sslpinning disable 覆盖了 OkHttp CertificatePinner、TrustManager、WebView 等主流 pinning 实现,抓包前先来一发。但它不是万能的——自定义 pinning(比如 SO 层校验)还得手写 Frida 脚本。

什么时候该离开 objection

objection 的能力边界:

  • 复杂的参数构造(嵌套对象、自定义类型)→ 写 Frida 脚本
  • 需要改逻辑而不只是观察(改参数、改返回)→ 写 Frida 脚本
  • native 层 hook(SO 函数)→ objection 支持弱,直接 Frida

把它定位成"侦察兵":摸结构、找入口、验证猜想,确认目标后转 Frida 脚本精确打击。

总结

  1. objection = Frida 常用能力的命令行封装,侦察阶段效率翻倍
  2. 三把斧:search classes 找类、watch class 看调用、heap execute 借对象调方法
  3. spawn 模式 + startup-command 抓启动期调用
  4. 观察用 objection,改逻辑用 Frida 脚本,分工明确

交流微信:run1255

By 百趣云 阅读量:2 On