基于Frida的工具介绍——Objection

Objection 介绍

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

1.1 安装Objection

pip install objection

1.2 启动Objection

  • 保证Frida server开启

  • 命令行输出

    objection -g packageName explore
    

    即可进入objection提供的交互界面,类似于Frida的cli交互环境,我们下面的操作都是基于这个交互界面。

1.3 Hook Java方法

android hooking watch class_method com.xxx.xxx.methodName --dump-args --dump-backtrace --dump-return

有时候我们会遇到内部类或者匿名内部类的Hook,不用担心,假设类为com.test.a,内部类为b,完整路径即为com.test.a$b,如果为匿名内部类,可以查看其smali代码,往往命名为com.test.a$1这种形式。

1.4 Hook Java类

android hooking watch class com.xxx.xxx

对类的Hook不提供完整的调用栈打印等功能(存疑)

1.5 Spawn方式Hook

从Objection的使用操作中我们可以发现,Obejction采用Attach附加模式进行Hook,这可能会让我们错过较早的Hook时机,可以通过如下的代码启动Objection,引号中的objection命令会在启动时就注入App。

objection -g packageName explore --startup-command 'android hooking watch xxx' 

1.6 免Root运行Frida

Frida提供了免root的Hook方案,即手动注入frida-gadget库, Objection对其进行了封装,但实际没啥用(搞逆向的怎么会没一台root机器)。除此之外,Objection提供了对IOS的Hook,以及对sslunpinng的处理,Hook剪切板/Root检测等,但实际使用中用处不大,一般会选择其他专门的工具,此处不提。

详情参考Objection github目录下objection—console—helpfiles

1.7 Objection的缺陷

  • 缺少对Native层的支持
  • 对象类型数据的打印有问题,比如Byte array和Json,会显示成[object, object]
  • 对Spawn方式启动的支持不够顺畅

1.8 退出Objection

在交互界环境中输入exit

你可能感兴趣的:(FRIDA)