抓包 Hook 工具Objection

2023-12-02 17:01
文章标签 工具 抓包 hook objection

本文主要是介绍抓包 Hook 工具Objection,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Objection简介

Objection 是一个基于 Frida 开发的命令行工具,它可以很方便的 Hook Java 函数和类,并输出参数,调用栈,返回值。支持Hook Android和IOS
因为 Objection 是基于 Frida 的所以必须先安装 Frida 然后才能安装 Objection
为什么有了frida,还需要Objection呢,因为frida hook需要写JavaScript脚本代码,Objection就很方便把frida很多脚本都封装了,直接使用一条命令,就可以使用frida 进行hook,简化了很多hook写通用代码的过程

Frida安装

参考《一次不成功的抓包,踩坑过程》
一共需要这几步:

  1. 安装Python
  2. 安装ADB
  3. 安装Frida
  4. 安装Frida-tools
  5. 安装Frida-server
  6. 设置Frida的端口转发
  7. 验证frida-ps -U

Objection安装

#安装命令
pip3 install objection

安装完成之后,在cmd命令行直接输入objection,出现下面的提示,即安装成功

Checking for a newer version of objection...
Usage: objection [OPTIONS] COMMAND [ARGS]..._   _         _   ____| |_|_|___ ___| |_|_|___ ___| . | . | | -_|  _|  _| | . |   ||___|___| |___|___|_| |_|___|_|_||___|(object)inject(ion)Runtime Mobile Explorationby: @leonjza from @sensepostBy default, communications will happen over USB, unless the --network optionis provided.Options:-N, --network            Connect using a network connection instead of USB.-h, --host TEXT          [default: 127.0.0.1]-p, --port INTEGER       [default: 27042]-ah, --api-host TEXT     [default: 127.0.0.1]-ap, --api-port INTEGER  [default: 8888]-g, --gadget TEXT        Name of the Frida Gadget/Process to connect to.[default: Gadget]-S, --serial TEXT        A device serial to connect to.-d, --debug              Enable debug mode with verbose output. (Includesagent source map in stack traces)--help                   Show this message and exit.
Commands:api          Start the objection API server in headless mode.device-type  Get information about an attached device.explore      Start the objection exploration REPL.patchapk     Patch an APK with the frida-gadget.so.patchipa     Patch an IPA with the FridaGadget dylib.run          Run a single objection command.signapk      Zipalign and sign an APK with the objection key.version      Prints the current version and exists.

Objection 命令集合

Objection启动脚本

#列出手机里安装的所有应用
frida-ps -U
#使用objection注入“xxx”应用
objection -g com.piaoyou.piaoxing explore
#启动objection,同时执行--startup-command指定的命令
objection -g com.piaoyou.piaoxing explore --startup-command "android hooking watch class_method java.io.File.$init  --dump-args"
objection -g com.piaoyou.piaoxing explore -s "android hooking watch class_method java.io.File.$init --dump-args --dump-return"
#启动objection,同时执行-c指定的文件,文件里包含多条objection命令,文件中一行就是一条objection命令
objection -g com.piaoyou.piaoxing explore -c "d:/hook/objection-command.txt"
#启动objection,同时执行-S指定的文件,文件里包含的是frida脚本
objection -g com.piaoyou.piaoxing explore -S "d:/hook/frida-hook.js"

Objection内置命令

进入Objection命令行之后,可以执行下面的命令

#查看内存中加载的库
memory list modules
#查看库的导出函数
memory list exports libssl.so
#将结果保存到json文件中
memory list exports libart.so --json /root/libart.json  
#搜索是否存在着该类的实例
android heap search instances java.net.HttpURLConnection
#调用实例的方法,0x2526是上一个命令输出的实例的hashcode
android heap execute 0x2526 getPreferenceScreenResId
#在实例上执行js代码,输入以下命令后,会进入一个迷你编辑器环境,输入console.log("evaluate result:"+clazz.getPreferenceScreenResId())这串脚本,按ESC退出编辑器,然后按回车,即会开始执行这串脚本,输出结果
android heap evaluate 0x2526
#列出内存中所有的类
android hooking list classes
#内存中搜索所有的类
android hooking search classes RealCall
#内存中搜索所有的方法
android hooking search methods display
#列出类的所有方法
android hooking list class_methods com.android.org.conscrypt.OpenSSLSocketImpl
#直接生成hook代码,参数没有填上,还是需要自己后续补充
android hooking generate simple com.android.org.conscrypt.OpenSSLSocketImpl
#hook类的所有方法,在使用jobs list命令可以看到objection为我们创建的Hooks数,也就是将com.android.org.conscrypt.OpenSSLSocketImpl类下的所有方法都hook了
android hooking watch com.android.org.conscrypt.OpenSSLSocketImpl
#hook方法的参数、返回值和调用栈
android hooking watch class_method android.bluetooth.BluetoothDevice.getName --dump-args --dump-return --dump-backtrace#直接将SSL pinning给disable掉
android sslpinning disable
#用File类的构造器
android hooking watch class_method java.io.File.$init --dump-args
#查看内存中加载的os库
memory list modules
#查看库的导出函数
memory list exports libssl.so
#将结果保存到json文件中
memory list exports libart.so --json /root/libart.json  
#导入外部js脚本并执行,frida_hook.js需要上传到pwd输出的目录,或者其他目录
import frida_hook.js#直接启动activity
android intent launch_activity com.android.settings.DisplaySettings
#查看当前可用的activity
android hooking list activities

Objection 源码

Objection是开源的,代码在github上,如果要看每一个命令的具体含义,可以把代码clone到本地,用IDEA或者其他开发工具打开,可以看到详细的操作说明
仓库地址

这篇关于抓包 Hook 工具Objection的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/446125

相关文章

Python使用pynput模拟实现键盘自动输入工具

《Python使用pynput模拟实现键盘自动输入工具》在日常办公和软件开发中,我们经常需要处理大量重复的文本输入工作,所以本文就来和大家介绍一款使用Python的PyQt5库结合pynput键盘控制... 目录概述:当自动化遇上可视化功能全景图核心功能矩阵技术栈深度效果展示使用教程四步操作指南核心代码解析

如何基于Python开发一个微信自动化工具

《如何基于Python开发一个微信自动化工具》在当今数字化办公场景中,自动化工具已成为提升工作效率的利器,本文将深入剖析一个基于Python的微信自动化工具开发全过程,有需要的小伙伴可以了解下... 目录概述功能全景1. 核心功能模块2. 特色功能效果展示1. 主界面概览2. 定时任务配置3. 操作日志演示

使用Python和Tkinter实现html标签去除工具

《使用Python和Tkinter实现html标签去除工具》本文介绍用Python和Tkinter开发的HTML标签去除工具,支持去除HTML标签、转义实体并输出纯文本,提供图形界面操作及复制功能,需... 目录html 标签去除工具功能介绍创作过程1. 技术选型2. 核心实现逻辑3. 用户体验增强如何运行

Python使用Turtle实现精确计时工具

《Python使用Turtle实现精确计时工具》这篇文章主要为大家详细介绍了Python如何使用Turtle实现精确计时工具,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下... 目录功能特点使用方法程序架构设计代码详解窗口和画笔创建时间和状态显示更新计时器控制逻辑计时器重置功能事件

利用Python实现Excel文件智能合并工具

《利用Python实现Excel文件智能合并工具》有时候,我们需要将多个Excel文件按照特定顺序合并成一个文件,这样可以更方便地进行后续的数据处理和分析,下面我们看看如何使用Python实现Exce... 目录运行结果为什么需要这个工具技术实现工具的核心功能代码解析使用示例工具优化与扩展有时候,我们需要将

Python+PyQt5实现文件夹结构映射工具

《Python+PyQt5实现文件夹结构映射工具》在日常工作中,我们经常需要对文件夹结构进行复制和备份,本文将带来一款基于PyQt5开发的文件夹结构映射工具,感兴趣的小伙伴可以跟随小编一起学习一下... 目录概述功能亮点展示效果软件使用步骤代码解析1. 主窗口设计(FolderCopyApp)2. 拖拽路径

MySQL Workbench工具导出导入数据库方式

《MySQLWorkbench工具导出导入数据库方式》:本文主要介绍MySQLWorkbench工具导出导入数据库方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录mysql Workbench工具导出导入数据库第一步 www.chinasem.cn数据库导出第二步

Spring Validation中9个数据校验工具使用指南

《SpringValidation中9个数据校验工具使用指南》SpringValidation作为Spring生态系统的重要组成部分,提供了一套强大而灵活的数据校验机制,本文给大家介绍了Spring... 目录1. Bean Validation基础注解常用注解示例在控制器中应用2. 自定义约束验证器定义自

Linux系统调试之ltrace工具使用与调试过程

《Linux系统调试之ltrace工具使用与调试过程》:本文主要介绍Linux系统调试之ltrace工具使用与调试过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、ltrace 定义与作用二、ltrace 工作原理1. 劫持进程的 PLT/GOT 表2. 重定

使用Java编写一个字符脱敏工具类

《使用Java编写一个字符脱敏工具类》这篇文章主要为大家详细介绍了如何使用Java编写一个字符脱敏工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、字符脱敏工具类2、测试工具类3、测试结果1、字符脱敏工具类import lombok.extern.slf4j.Slf4j