IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> objection 基本使用 -> 正文阅读

[移动开发]objection 基本使用

objection 默认通过USB连接设备,这里就不必和Frida 一样通过 -U参数指定USB模式连接,同时通过 -g 参数指定注入的进程并通过export命令进入REPL模式,进入REPL模式后就可以使用objection进行hook的常用命令。

objection 通过 -N 参数来指定网络中的设备同通过 -h 参数和 -p 参数指定对应设备的IP和端口进行连接,从而完成对网络设备的注入与Hook,除外还可以通过patchapk命令将frida-gadget.so打包进App。

接下来以安卓手机里面的设置为例

1、连接 usb手机

2、运行 frida-server

3、在手机上打开设置

4、通过 Frida-ps 找到对应的设置包名

frida-ps -U | grep setting

5、找到包名后通过objection注入设置应用,注入成功后便进入了objection的REPL界面。

objection -g 设置 explore

?6、在进入objection的repl界面后, 可以通过空格键显示提示命令。

7、在不知道命令什么作用的时候,在要使用的命令前假help就会出现解释。

8、jobs命令用于查看和管理当前所执行hook的任务,可以同时运行多项hook作业。

9、内存漫游 objection 可以快速便捷的打印出内存中的各种类相关信息,对app快速定位有着无可比拟的优势。

9.1、列出内存中的所有类

android hooking list classes

?

9.2、可以使用以下命令在内存中已加载的类中搜索包含特定的关键词的类。

android hooking search classes

比如:android hooking search classes display

?9.3 、可以使用以下命令在内存中搜索所有包含关键词key的方法

android hooking search methods <key>

android hooking search methods display

?

9.4、搜索到我们感兴趣的类后,可以使用下面的命令查看关心类的所有方法

android hooking list class_methods

android hooking list class_methods android.hardware.display.IDisplayManager

?

9.5、列出进程所有的activity(活动)

android hooking list activities

?

9.6、列出进程所有server 服务

android hooking list services

?

9.7、列出进程所有receivers(接收器)

android hooking list receivers

?

9.8、通过以下命令对指定的方法进行hook 参数 :--dump-args 打印函数参数、--dump-backtrace 调用栈、--dump-return返回值

android hooking watch class_method <methoName> --dump-args --dump-backtrace --dump-return

?可以通过 工作job查看作业相关信息 ID和上面的ID 对应、hook函数的数量、

?

在手机设置里随便点击位置会发现 Called java.io.File.File(java.io.File, java.lang.String) 被调用了,在 Backtrace 之后打印的是调用栈可以清楚的看到这个构造函数的调用来源,顺序是从下至上,根据Arguments 哪一行会发现打开的文件路径是 java.io.File.File(/data/user_de/0/com.android.settings, shared_prefs) shared_prefs是文件名,返回参数是空 Return Value: (none) 表名这个函数没有返回值。

?9.9、结束进程

jobs kill 708598

9.10、除了Hook一个函数外,objection 还可以通过以下命令实现对指定类classname中所有函数的hook(这里的所有的函数并不包括构造函数hook)

hook java.io.File 类下的所有方法 android hooking watch class java.io.File

?一个类下一共Hook了56个方法

?最终Hook效果如下,这里的调用顺序是从上到下的

9.11 、frida的一大特色,主动调用早objection中的使用,基于最简单的java.choose的实现,在frida脚本中对实例的搜索在objection中使用以下命令实现

android heap search instances <classname>

以java.io.File为例,搜索到很多File实例,并且打印出Handle和toString(), handle非常重要在之后的主动调用中都是以这个十六进制的handle值作为实例的句柄和执行函数。

9.12、在objection中调用实例方法有两种

第一种不带参数的调用实例的方法。

android heap execute <Handle> <methodname>

例子:android heap execute 1068086893 getPath

?

第二种带参数的调用实例的方法

android heap evaluate <Handle> ?会进入个迷你编辑器在里面输入想要执行的脚本内容,按esc退出,按回车就会执行脚本并输出结果。

clazz 用于代表handle值为 1068086893 所对应的实例

canWrite()函数用于返回这个实例所打开的文件是否可写

setWritable(false) 用于修改对应文件是否可写的属性

?

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-10-31 12:09:06  更:2022-10-31 12:13:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 19:44:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码