官方文档: https://github.com/sensepost/objection


# Objection 太强了,告别敲代码的方式,快速动态 trace ,时间就是生命,用上就会戒不掉,且支持 iosandroid

  1. # 安装

    ps : python >= 3.4 且安装了 frida , 参考

    pip3 install Objection
    • 直接终端输入 objection ,输出如下内容就成功了

  2. # 食用方法

    • 进入交互式界面

      objection -g apkname explore

    • 不知道指令直接按空格键, objection 很人性化,只要按空格键就会弹出提示,然后按上下键选择需要使用的指令

      ​ 看上图提示已经很明显了,指令和含义都很清晰

      !		  执行操作系统命令
      pwd	       打印当前工作目录
      cd		   切换到指定目录
      ls		   列出当前工作目录文件
      rm 		   删除远程设备的文件
      exit	   退出
      env		   打印有关环境的信息
      android	    android特有的命令
      ios		   ios特有的命令
      commands	处理当前会话中运行的命令
      file	   操作远程设备的文件
      frida	   获取frida的环境信息
      import	   从一个完整的路径导入fridascript脚本并运行 
      jobs	   操作objection的任务列表
      memory	   处理当前进程内存信息
      ping	   检测当前注入状态
      plugin	    使用插件,例如:frida-dexdump、wallbreaker
      reconnect 	重新连接当前设备
      sqlite 	    使用sql指令
      ui		   通用用户界面指令
  3. # 常用指令简介

    • 从当前设备下载文件 (不加 ouput 路径,下载到用户目录下)

      file download [filename] [outputfile]
    • 列出所有的 activityservices

      android hooking list activities/services
    • 列出内存中所有的类

      android hooking list classes
    • 搜索内存中已加载的类中包含特定关键词的类

      android hooking search classes [class_name]
    • 搜索内存中已加载的方法中包含特定关键词的方法

      android hooking search methods [method_name]
    • 堆内存中搜索指定类的实例,可以获取该类的实例 id

      android heap search instances search instances com.xx.xx.class
    • 直接执行指定实例下的方法

      android heap execute [ins_id] [func_name]
    • 尝试关闭 root 检测

      android root disable
    • 尝试模拟 root 环境

      android root simulate
    • 启动指定 activity

      android intent launch_activity [activity_class]
    • 启动指定 services

      android intent launch_service [services_class]
    • 关闭 app ssl 校验

      android sslpinning disable
    • 查看任务列表

      jobs list
    • 关闭任务

      jobs kill [task_id]
    • Spawn 方式 Hook , 用于 hook 启动阶段的操作,启动 objection 的时候就要设置

      objection -g packageName explore --startup-command '[obejection_command]'
    • hooking 指定方法,如果重载会 hook 所有方法,这时我们可以添加参数辅助分析

      --dump-args : 打印参数

      --dump-backtrace : 打印调用栈

      --dump-return : 打印返回值

      android hooking watch class_method com.xxx.xxx --dump-args --dump-backtrace --dump-return
    • hooking 指定类,方便我们动态 trace 关键函数

      android hooking watch class com.xxx.xxx
    • 设置返回值 (只支持 bool 类型)

      android hooking set return_value  com.xxx.xxx.methodName false
  4. # 实战演练

    • 之前研究过的一个 app ,当时定位了好久,敲 frida 代码,一个函数一个函数 hook ,属实有些慢。。。现在直接 objection 上,直接配合静态分析, hook 整个类,下面 4 个重载的 a 函数。

    • 使用 jobs list 可以看到当前任务列表有一个任务, id892906

    • 滑动 app 页面触发加密函数,发现控制台 a 函数被调用,说明刚才滑动页面的网络请求,调用了类中的 a 函数

    • 下面使用 jobs kill 892906 删除当前任务 ,再 hook a函数 ,因为 a 有重载,所以一并打印参数和返回值

    • 然后滑动页面,查看 hook 结果,调用栈很清晰, return 的值就是加密结果

    • 查看堆栈,通过静态分析,使用之前套路定位到生成加密参数的位置,参数和返回值一目了然

    本文主要介绍 objection ,静态分析主要是使用 jadx ,不做详细介绍

    文章写的比较乱,刚开始学习使用 objection ,很多不熟悉的地方和理解不清晰的功能,希望大佬们带带弟弟。

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

渣渣文 微信支付

微信支付

渣渣文 支付宝

支付宝