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 getSignhook 与监控:
# 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 脚本精确打击。
总结
- objection = Frida 常用能力的命令行封装,侦察阶段效率翻倍
- 三把斧:search classes 找类、watch class 看调用、heap execute 借对象调方法
- spawn 模式 + startup-command 抓启动期调用
- 观察用 objection,改逻辑用 Frida 脚本,分工明确
交流微信:run1255