Objection使用

Frida只是提供了各种API供我们调用,在此基础上可以实现具体的功能,有大佬将各种常见的、常用的功能整合进一个工具,供我们在命令行中使用,这个工具就是Objection.

安装

由于Objection是基于Frida的,所以我们要安装与Frida发布日期相近的版本.

https://pypi.org/project/objection/#history

1
2
3
4
5
#pip install frida==14.2.13
#pip install frida-tools==9.2.1

#下载指定版本的objection
pip install objection==1.11.0

连接非标准端口

1
2
#objection -N -h 192.168.2.111 -p 6666 -g com.android.settings explore
objection -N -h 手机的ip -p frida监听的端口 -g 安卓应用 explore

内存漫游相关命令

查看内存加载的库

1
memory list modules

查看库的导出函数

1
2
3
memory list exports libssl.so
#写文件
memory list exports libssl.so --json tst.json

列出内存中所有类

1
android hooking list classes

内存中搜索所有的类

在内存中所有已加载的类中搜索包含特定关键词的类.

1
2
#搜索包含display关键词的类
android hooking search classes display

内存中搜索所有的方法

在内存中所有已加载的类的方法中搜索包含特定关键词的方法.

1
2
#搜索包含display关键词的方法
android hooking search methods display

列出类的所有方法

当搜索到了比较关心的类之后,就可以直接查看它有哪些方法.

1
android hooking list class_methods com.android.settings.DisplaySettings

列出进程所有的activity

1
android hooking list activities

启动activity

1
android intent launch_activity com.android.settings.DisplaySettings

列出进程所有的service

1
android hooking list services

启动service

1
android intent launch_service com.android.settings.bluetooth.BluetoothPairingService

Hook相关命令

上述操作均是基于在内存中直接枚举搜索,已经可以获取到大量有用的静态信息,我们再来介绍几个方法,可以获取到执行时动态的信息.

在以下命令中加上–dump-args –dump-return –dump-backtrace三个参数,分别用于打印函数的参数、返回值、以及调用栈.

对指定方法进行Hook

比如想看getName()方法,则运行以下命令:

1
2
#android hooking watch class_method java.io.File.$init --dump-args
android hooking watch class_method android.bluetooth.BluetoothDevice.getName --dump-args --dump-return --dump-backtrace

hook类的所有方法

1
android hooking watch class android.bluetooth.BluetoothDevice

Jobs命令

1
2
3
4
#可以看到objection为我们创建的Hooks数
jobs list
#删除作业
jobs kill <id>

主动调用

在堆上搜索实例

1
android heap search instances com.android.settings.DisplaySettings

在堆上搜索实例

调用实例的方法

无参调用

查看源码得知com.android.settings.DisplaySettings类有getPreferenceScreenResId()方法.

1
2
3
#无参调用
#android heap execute <handle> <methodname>
android heap execute 0x225a getPreferenceScreenResId

调用实例方法

有参调用

1
android heap evaluate <handle>

在进入一个迷你编辑器环境后,输入想要执行的脚本内容,确认编辑完成,然后按Esc键退出编辑,最后按回车键,即会开始执行这行脚本并输出结果.这里的脚本内容和在编辑器中直接编写的脚本内容是一样的.

heap evaluate既可以执行有参函数,也可以执行无参函数.

插件

Wallbreaker

https://github.com/hluwa/Wallbreaker

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#加载插件
plugin load C:/Users/XiaLuoHun/Desktop/Wallbreaker-1.0.2

#查看类信息
plugin wallbreaker classdump --fullname android.bluetooth.BluetoothDevice

#寻找类的实例对象并查看
plugin wallbreaker objectsearch android.bluetooth.BluetoothDevice
#[xxx]
plugin wallbreaker objectdump xxx

DexDump

https://github.com/hluwa/FRIDA-DEXDump

1
2
3
4
5
6
#加载插件
plugin load C:/Users/Xia/Desktop/FRIDA-DEXDump-1.0.3/frida_dexdump

#Dump
plugin dexdump search
plugin dexdump dump

参考链接

实用FRIDA进阶:内存漫游、hook anywhere、抓包


相关内容

0%