【Frida】【Android】04_Objection安装和使用

🛫 系列文章导航

  • 【Frida】【Android】01_手把手教你环境搭建 https://blog.csdn.net/kinghzking/article/details/136986950
  • 【Frida】【Android】02_JAVA层HOOK https://blog.csdn.net/kinghzking/article/details/137008446
  • 【Frida】【Android】03_RPC https://blog.csdn.net/kinghzking/article/details/137050967
  • 【Frida】【Android】04_Objection安装和使用 https://blog.csdn.net/kinghzking/article/details/137071768
  • 【Frida】【Android】05_Objection实战 https://blog.csdn.net/kinghzking/article/details/137071826

▒ 目录 ▒

    • 🛫 系列文章导航
    • 🛫 导读
      • 需求
      • 开发环境
    • 1️⃣ Objection介绍
    • 2️⃣ 安装
      • 环境要求
      • 安装
      • 报错
    • 3️⃣ 使用
      • objection --help
      • 进入REPL界面
      • help命令
      • exit命令
      • frida命令
      • ui命令
      • intent命令
      • 内存漫游相关命令:hooking list / search
      • Hook命令:class_method
      • Hook命令:class
      • jobs命令
      • 主动调用命令:heap
      • memory命令
      • root命令
      • 关闭 ssl 效验命令
    • 🛬 文章小结
    • 📖 参考资料

🛫 导读

需求

开发环境

版本号描述
文章日期2024-03-27
操作系统Win11 - 22H222621.2715
node -vv20.10.0
npm -v10.2.3
夜神模拟器7.0.5.8
Android9
python3.9.9
frida16.2.1
frida-tools12.3.0
objection1.11.0

1️⃣ Objection介绍

Objection介绍如果说在Frida提供的各种API基础之上可以实现无数的具体功能,那么Objection就可以认为是一个将各种常用功能整合进工具中供我们直接在命令行中使用的利器,Objection甚至可以不写一行代码就能进行App的逆向分析。功能列表如下:

  • 支持 iOS 和 Android。
  • 检查容器文件系统并与之交互。
  • 绕过 SSL 固定。
  • 转储钥匙扣。
  • 执行与内存相关的任务,例如转储和修补。
  • 浏览和操作堆上的对象。
  • ……

据官方Wiki所描述的,Objection主要有三大组成部分。

  • 第一部分是指Objection重打包的相关组件。Objection可以将Frida运行时所需要的frida-gadget.so重打包进App中,从而完成Frida的无root调试。

  • 第二部分是指Objection本身。Objection是一个Python的pypi包,可以和包含frida-gadget.so这个so文件的App进行交互,运行Frida的Hook脚本,并分析Hook的结果。

  • 第三部分是指Objection从TypeScript项目编译而成的一个agent.js文件。该文件在App运行过程中插了Frida运行库,使得Objection支持的所有功能成为可能。

2️⃣ 安装

环境要求

  • Python的版本大于3.4
  • Python包管理软件pip的版本大于9.0
    • 使用pip --version查看版本
    • 使用pip install pip --upgrade升级pip
  • (可选的)virtualenv,版本大于15。

安装

使用pip命令安装Objection。官网的建议是直接执行以下命令:pip3 install -U objection

objection最新的release版本是1.11.0,已经2021年4月的版本了。不过依然兼容最新的frida,使用该版本可以使用最新的frida。

报错

您可能面临的最常见错误可能如下所示,这意味着您正在尝试使用 Python 2 而不是 Python 3 进行安装。请安装 Python 3.4以上版本解决该问题。

Collecting objectionCould not find a version that satisfies the requirement objection (from versions: )
No matching distribution found for objection

3️⃣ 使用

objection --help

我们先看下objection的帮助界面:
在这里插入图片描述

从图可知:

  • Objection默认通过USB连接设备,这里不必和Frida的命令行一样通过-U参数指定USB模式连接
  • 通过-g参数指定注入的进程,
  • 通过explore命令进入REPL模式(交互模式)。在进入REPL模式后便可以使用Objection进行Hook的常用命令。
  • 通过-N参数来指定网络中的设备并通过-h参数和-p参数来指定对应设备的IP和端口以进行连接,从而完成对网络设备的注入与Hook。
  • 通过patchapk命令将frida-gadget.so打包进App。

进入REPL界面

根据上面的说明,我们以Android系统的基本应用“设置”为例来介绍Objection的REPL模式常用命令。

  • 首先,我们启动夜神模拟器,并运行相应版本的frida-server。
  • 然后,我们通过frida-ps -Uai找到“设置”应用的App及其包名,具体操作如下:
    在这里插入图片描述
  • 最后,在找到设置的包名com.android.settings后,通过objection注入“设置”应用,注入成功后便进入了Objection的REPL界面,具体操作命令以及结果如下:
    objection -g com.android.settings explore
    在这里插入图片描述

help命令

不知道当前命令的效果是什么时,在当前命令前加help(比如help env)再回车之后就会出现当前命令的解释信息:
在这里插入图片描述

exit命令

退出objection
在这里插入图片描述

frida命令

查看Frida相关信息。
在这里插入图片描述

小编的环境中,一开始执行的时候,报了下面的错误:
在这里插入图片描述
找到该文件,将这行注释了就可以了:
在这里插入图片描述

ui命令

//截图
android ui screenshot [image.png]//设置FLAG_SECURE权限
android ui FLAG_SECURE false

intent命令

# 强制启动activity
android intent launch_activity com.example.androiddemo.Activity.FridaActivity1# 强制启动service
android intent launch_service

内存漫游相关命令:hooking list / search

Objection可以快速便捷地打印出内存中的各种类的相关信息,这对App快速定位有着无可比拟的优势,下面介绍几个常用命令。

  • 列出内存中的所有类
    android hooking list classes
    在这里插入图片描述
  • 在内存中所有已加载的类中搜索包含特定关键词的
    android hooking search classes
    在这里插入图片描述
  • 从内存中搜索所有包含关键词key的方法
    android hooking search methods <key>
    从上文中可以发现,内存中已加载的类高达上万个。它们的方法是类的个数的数倍,整个过程会相当耗时。
    在这里插入图片描述
  • 类方法
    搜索到我们感兴趣的类后,可以使用以下命令查看关心的类的所有方法
    android hooking list class_methods
    在这里插入图片描述
  • 列出进程所有的四大组件列表
    android hooking list activities
    android hooking list services
    android hooking list receivers
    android hooking list providers(命令有问题,待解决)
    在这里插入图片描述

Hook命令:class_method

命令格式:android hooking watch class_method <methodName>
这里选择Java中File类的构造函数进行Hook,结果如下:
android hooking watch class_method java.io.File.$init --dump-args --dump-backtrace --dump-return
在这里插入图片描述

在上述命令中,我们加上了–dump-args、–dump-backtrace、–dump-return三个参数,分别用于打印函数的参数、调用栈以及返回值。
这三个参数对逆向分析的帮助是非常大的:

  • 有些函数的明文和密文非常有可能放在参数和返回值中。
  • 打印调用栈可以让分析者快速进行调用链的溯源。

另外需要注意的是:

  • 此时虽然只确定了Hook构造函数,但是默认会Hook对应方法的所有重载
  • 在输出的最后一行显示Registering job 605559,这表示这个Hook被作为一个“作业”添加到Objection的作业系统中了,此时运行job list命令可以查看到这个“作业”的相关信息,如下图所示。可以发现这里的JobID对应的是605559,同时Hooks对应的6正是Hook的函数的数量。
    在这里插入图片描述

当我们在“设置”应用中的任意位置进行点击时,会触发File的构造函数,将打印出堆栈、参数、返回值信息。
在这里插入图片描述

Hook命令:class

命令语法:android hooking watch class <classname>
示例:android hooking watch class java.io.File
在这里插入图片描述

jobs命令

作业系统很好用,用于查看和管理当前所执行Hook的任务,建议一定要掌握,可以同时运行多项Hook作业。


  • 像上面一样的hook命令,就可以增加job

  • jobs kill <Job ID>
  • 查看
    job list
    在这里插入图片描述

主动调用命令:heap

关于主动调用,可以参考《【Frida】【Android】02_JAVA层HOOK https://blog.csdn.net/kinghzking/article/details/137008446》,在objection中,对应的是android heap相关命令

  • 查找实例
    语法:android heap search instances <classname>
    示例:android heap search instances java.io.File
    在这里插入图片描述
    如图,可以搜索到很多File的实例,并且打印出对应的Hashcode和toString()的结果。其中Hashcode作为Java对象的唯一标识,可以用于实例方法的调用。
  • 调用实例方法(无参数)
    语法: android heap execute <Hashcode> <methodname>
    示例:android heap execute -54300376 getPath
    下面演示一下执行File的getPath方法:
    在这里插入图片描述
  • 调用实例方法(带参数)
    语法: android heap evaluate <Hashcode>
    示例:android heap evaluate -54300376
    执行上面的示例后,objection将进入一个迷你编辑器环境后,输入想要执行的脚本内容,确认编辑完成,然后按Esc键退出编辑器,最后按回车键,即会开始执行这行脚本并输出结果。
    这里的脚本内容和在编辑器中直接编写的脚本内容是一样的(使用File类的canWrite()函数和setWritable()函数进行测试)
    在这里插入图片描述
    执行结果如下图所示:
    在这里插入图片描述

memory命令

# 查看内存中加载的库
memory list modules
# 查看库的导出函数
memory list exports libssl.so
# 将结果保存到json文件中
memory list exports libart.so --json /root/libart.json
# 搜索内存
memory search --string --offsets-only
# 修改内存内容
memory write "<address>" "<pattern eg: 41 41 41 41>" (--string)# dump所有内存
memory dump all <local destination>
# dump指定内存
memory dump from_base <base_address> <size_to_dump> <local_destination>

root命令

# 尝试关闭app的root检测
android root disable
# 尝试模拟root环境
android root simulate

关闭 ssl 效验命令

android sslpinning disable

🛬 文章小结

  • objectin的命令是区分大小写的。
  • 内存漫游相关命令,通过各种操作,让app加载更多的类,可以漫游出更多的内容!!!

📖 参考资料

  • objection官网: https://github.com/sensepost/objection
  • 《安卓Frida逆向与抓包实战》
  • 【Frida】 00_简单介绍和使用 https://blog.csdn.net/kinghzking/article/details/123225580
  • 本节源码地址 https://gitcode.com/android8/AndroidFridaBeginnersBook

ps: 文章中内容仅用于技术交流,请勿用于违规违法行为。

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Rabbitmq消息顺序的问题以及解决方案

1.1消息顺序的场景 场景1&#xff1a;一个queue&#xff0c;多个consumer 一个queue&#xff0c;有多个consumer去消费&#xff0c;这样就会造成顺序的错误&#xff0c;consumer从MQ里面读取数据是有序的&#xff0c;但是每个consumer的执行时间是不固定的&#xff0c;无法保…

Radio Silence for mac 好用的防火墙软件

Radio Silence for Mac是一款功能强大的网络防火墙软件&#xff0c;专为Mac用户设计&#xff0c;旨在保护用户的隐私和网络安全。它具备实时网络监视和控制功能&#xff0c;可以精确显示每个网络连接的状态&#xff0c;让用户轻松掌握网络活动情况。 软件下载&#xff1a;Radio…

【案例·增】获取当前时间、日期(含,SQL中DATE数据类型)

问题描述&#xff1a; 需要使用当前时间、日期&#xff0c;可以使用 SQL 中的 CURDATE() 、NOW()、CURTIME()运算符 案例&#xff1a; INSERT INTO table_name(current_time, column_name2,...) VALUES (NOW(),, ...)规则(Date 相关函数)&#xff1a; 规则(Date数据类型)

Redis命令-List命令

4.6 Redis命令-List命令 Redis中的List类型与Java中的LinkedList类似&#xff0c;可以看做是一个双向链表结构。既可以支持正向检索和也可以支持反向检索。 特征也与LinkedList类似&#xff1a; 有序元素可以重复插入和删除快查询速度一般 常用来存储一个有序数据&#xff…

HackTheBox-Machines--Legacy

文章目录 1 端口扫描2 测试思路3 445端口漏洞测试4 flag Legacy 测试过程 1 端口扫描 nmap -sC -sV 10.129.227.1812 测试思路 目标开启了135、139、445端口&#xff0c;445 SMB服务存在很多可利用漏洞&#xff0c;所以测试点先从445端口开始。而且在Nmap扫描结果中&#xff0c…

关于使用vscode搭建c/c++编程环境

目录 关于使用vscode搭建c/c编程环境一、前言二、安装 IDE 二、安装TDM-GCC安装三、安装C/C环境四、编写代码并进行编译 关于使用vscode搭建c/c编程环境 一、前言 一直觉得vscode是生产强有力的生产工具&#xff0c;基于此&#xff0c;做一篇学习笔记进行记录。 二、安装 ID…

react-navigation:

我的仓库地址&#xff1a;https://gitee.com/ruanjianbianjing/bj-hybrid react-navigation&#xff1a; 学习文档&#xff1a;https://reactnavigation.org 安装核心包: npm install react-navigation/native 安装react-navigation/native本身依赖的相关包: react-nativ…

快速上手Spring Cloud五:Spring Cloud与持续集成/持续部署(CI/CD)

快速上手Spring Cloud 一&#xff1a;Spring Cloud 简介 快速上手Spring Cloud 二&#xff1a;核心组件解析 快速上手Spring Cloud 三&#xff1a;API网关深入探索与实战应用 快速上手Spring Cloud 四&#xff1a;微服务治理与安全 快速上手Spring Cloud 五&#xff1a;Spring …

206基于matlab的无人机航迹规划(UAV track plannin)

基于matlab的无人机航迹规划(UAV track plannin&#xff09;。输入输出参数包括 横滚、俯仰、航向角&#xff08;单位&#xff1a;度&#xff09;&#xff1b;横滚速率、俯仰速率、航向角速率&#xff08;单位&#xff1a;度/秒&#xff09;&#xff1b;飞机运动速度——X右翼、…

C语言--编译和链接

1.翻译环境 计算机能够执行二进制指令&#xff0c;我们的电脑不会直接执行C语言代码&#xff0c;编译器把代码转换成二进制的指令&#xff1b; 我们在VS上面写下printf("hello world");这行代码的时候&#xff0c;经过翻译环境&#xff0c;生成可执行的exe文件&…

「15」色源:添加指定色彩的纯色画面素材

「15」色源添加指定色彩的纯色画面素材 在OBS软件里&#xff0c;在来源里可以增加色源&#xff0c;添加一个色块到您的场景中&#xff0c;作为一个背景色或辅助色。 图中的显示器就是加了色源的 实操步骤 第1步 添加色源 在「来源」的左下角&#xff0c;点「」选择「色源」&a…

OpenAI最近推出的Sora,在NVIDIA H100上生成1分钟视频大约需要12分钟的时间

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

誉天华为认证云计算课程如何

HCIA-Cloud Computing 5.0 课程介绍&#xff1a;掌握华为企业级虚拟化、桌面云部署&#xff0c;具备企业一线部署实施及运维能力 掌握虚拟化技术、网络基础、存储基础等内容&#xff0c;拥有项目实施综合能力 满足企业虚拟化方案转型需求&#xff0c;应对企业日益多样的业务诉求…

admin端

一、创建项目 1.1 技术栈 1.2 vite 项目初始化 npm init vitelatest vue3-element-admin --template vue-ts 1.3 src 路径别名配置 Vite 配置 配置 vite.config.ts // https://vitejs.dev/config/import { UserConfig, ConfigEnv, loadEnv, defineConfig } from vite im…

入门指南|营销中人工智能生成内容的主要类型 [新数据、示例和技巧]

由于人工智能技术的进步&#xff0c;内容生成不再是一项令人头疼的任务。随着人工智能越来越多地接管手动内容制作任务&#xff0c;营销人员明智的做法是了解现有的不同类型的人工智能生成内容&#xff0c;以及哪些内容从中受益最多。这些工具可以帮助我们制作对您的受众和品牌…

使用Jenkins打包时执行失败,但手动执行没有问题如ERR_ELECTRON_BUILDER_CANNOT_EXECUTE

具体错误信息如&#xff1a; Error output: Plugin not found, cannot call UAC::_ Error in macro _UAC_MakeLL_Cmp on macroline 2 Error in macro _UAC_IsInnerInstance on macroline 1 Error in macro _If on macroline 9 Error in macro FUNCTION_INSTALL_MODE_PAGE_FUNC…

.helper勒索病毒的最新威胁:如何恢复您的数据?

导言&#xff1a; 随着信息技术的不断进步&#xff0c;网络安全问题日益突出&#xff0c;其中勒索病毒成为了威胁网络安全的一大隐患。.helper勒索病毒作为近期频繁出现的一种恶意软件&#xff0c;其危害性和传播速度引起了广大用户的深切关注。本文将深入探讨.helper勒索病毒…

书生浦语训练营2期-第一节课笔记

笔记总结: 了解大模型的发展方向、本质、以及新一代数据清洗过滤技术、从模型到应用的典型流程、获取数据集的网站、不同微调方式的使用场景和训练数据是什么&#xff0c;以及预训练和微调在训练优势、通信/计算调度、显存管理上的区别。 收获&#xff1a; 理清了预训练和微调…

DDos系列攻击原理与防御原理

七层防御体系 静态过滤 命中黑名单 对确定是攻击的流量直接加入黑名单&#xff08;源地址命中黑名单直接丢弃&#xff0c;缺乏机动性和扩展性&#xff09; 畸形报文过滤 畸形报文攻击 TCP包含多个标记位&#xff0c;排列组合有规律 • 现象&#xff1a;TCP标记位全为1 …

PhpStorm 2023 for Mac/Win:开启PHP集成开发新纪元,让编程更高效更智能

在数字时代的浪潮中&#xff0c;PHP作为一种广泛应用的服务器端脚本语言&#xff0c;其重要性不言而喻。而要在PHP的世界里游刃有余&#xff0c;一款强大的集成开发环境&#xff08;IDE&#xff09;是必不可少的。PhpStorm 2023&#xff0c;正是这样一款能够助您一臂之力的编程…