objection 常见食用方法

objection是一个基于Frida开发的命令行工具,它可以很方便的Hook Java函数和类,并输出参数,调用栈,返回值。

安装 Objection

因为 objection 是基于 Frida 的所以必须先安装 Frida 然后才能安装 objection

1
pip install objection

启动 Objection

例子 (这是一个自定义端口加载模式其中):

1
objection -N -h 192.168.31.221 -p 9898 -g com.xxx.xxx explore


各种模式的含义可以在 objection --help 中查看

操作快捷键

  • 空格 可以快速智能化提示可以输入代码
  • 箭头右 可以快速选择之前输入过的命令

常用命令

  • memory list modules 查看当前程序调用的所有so
  • memory list modules --json test.json 查看到其所有so 并保存位json (终端所在目录)
  • frida-ps -U |grep xxx 筛选过滤
  • memory search 内存搜索
  • android hooking list activities 打印所有 activities (页面)
  • android intent launch_activity com.android.settings.DisplaySettings 强行启动指定activities 可以强行启懂页面
  • android hooking list classes 打印所有 classes
  • android hooking search classes *** 筛选指定类
  • android hooking list class_methods sun.util.locale.LanguageTag 打印方法体
  • android hooking watch class_method com.xxx.xxx --dump-args --dump-return 快速hook(来看是否代码走到这里)

使用场景

快速hook密钥位置

有的情况下, 我们可以快速测试和hook来查看关键key(较为简单的app)使用objection 来实现,这样连代码都不用写就可以完成需求。 比如我们用jadx观察可疑点,然后上hook

1
android hooking watch class_method xxx.xxx.xxx --dump-args --dump-backtrace --dump-return  // 注意这里是直接hook类,她会打印内中所有函数

主动调用加密函数(没有其他参数的情况下)

不用各种附加进程等等,直接调用可疑函数位置就可以得到结果

  1. 寻找该函数内存位置, 并复制找到的内存地址

    1
    android heap search instances com.xxx.xxx.MainaActivity
  2. 先hook上可疑函数

    1
    android hooking watch class_method xxx.xxx.xxx.xxx --dump-args --dump-backtrace --dump-return
  3. 主动调用该函数

    1
    android heap execute 0x200a7a a // 0x200a7a 是内存地址 后面的 a 调用这个类的a函数