抓包 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按照24个实用大方向精选的上千种工具库汇总整理

《Python按照24个实用大方向精选的上千种工具库汇总整理》本文整理了Python生态中近千个库,涵盖数据处理、图像处理、网络开发、Web框架、人工智能、科学计算、GUI工具、测试框架、环境管理等多... 目录1、数据处理文本处理特殊文本处理html/XML 解析文件处理配置文件处理文档相关日志管理日期和

使用Python开发一个Ditto剪贴板数据导出工具

《使用Python开发一个Ditto剪贴板数据导出工具》在日常工作中,我们经常需要处理大量的剪贴板数据,下面将介绍如何使用Python的wxPython库开发一个图形化工具,实现从Ditto数据库中读... 目录前言运行结果项目需求分析技术选型核心功能实现1. Ditto数据库结构分析2. 数据库自动定位3

基于Python实现简易视频剪辑工具

《基于Python实现简易视频剪辑工具》这篇文章主要为大家详细介绍了如何用Python打造一个功能完备的简易视频剪辑工具,包括视频文件导入与格式转换,基础剪辑操作,音频处理等功能,感兴趣的小伙伴可以了... 目录一、技术选型与环境搭建二、核心功能模块实现1. 视频基础操作2. 音频处理3. 特效与转场三、高

基于Python开发一个图像水印批量添加工具

《基于Python开发一个图像水印批量添加工具》在当今数字化内容爆炸式增长的时代,图像版权保护已成为创作者和企业的核心需求,本方案将详细介绍一个基于PythonPIL库的工业级图像水印解决方案,有需要... 目录一、系统架构设计1.1 整体处理流程1.2 类结构设计(扩展版本)二、核心算法深入解析2.1 自

Python办公自动化实战之打造智能邮件发送工具

《Python办公自动化实战之打造智能邮件发送工具》在数字化办公场景中,邮件自动化是提升工作效率的关键技能,本文将演示如何使用Python的smtplib和email库构建一个支持图文混排,多附件,多... 目录前言一、基础配置:搭建邮件发送框架1.1 邮箱服务准备1.2 核心库导入1.3 基础发送函数二、

基于Python实现一个图片拆分工具

《基于Python实现一个图片拆分工具》这篇文章主要为大家详细介绍了如何基于Python实现一个图片拆分工具,可以根据需要的行数和列数进行拆分,感兴趣的小伙伴可以跟随小编一起学习一下... 简单介绍先自己选择输入的图片,默认是输出到项目文件夹中,可以自己选择其他的文件夹,选择需要拆分的行数和列数,可以通过

Python使用pip工具实现包自动更新的多种方法

《Python使用pip工具实现包自动更新的多种方法》本文深入探讨了使用Python的pip工具实现包自动更新的各种方法和技术,我们将从基础概念开始,逐步介绍手动更新方法、自动化脚本编写、结合CI/C... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

Python使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

sqlite3 命令行工具使用指南

《sqlite3命令行工具使用指南》本文系统介绍sqlite3CLI的启动、数据库操作、元数据查询、数据导入导出及输出格式化命令,涵盖文件管理、备份恢复、性能统计等实用功能,并说明命令分类、SQL语... 目录一、启动与退出二、数据库与文件操作三、元数据查询四、数据操作与导入导出五、查询输出格式化六、实用功