在macos上问题
执行objection --help,报错 无_lzma模块,解决方法如下
pip install backports.lzma
# ~/.pyenv/versions/3.8.2/lib/python3.8/lzma.py 修改为如下内容
try:
from _lzma import *
from _lzma import _encode_filter_properties, _decode_filter_properties
except ImportError:
from backports.lzma import *
from backports.lzma import _encode_filter_properties, _decode_filter_properties
objection与frida版本匹配安装
pip install frida==12.8.0
pip install frida-tools==5.3.0
pip install objection==1.8.4
objection连接非标准端口
./frida-server-12.8.0-android-arm64 -l 0.0.0.0:8888
objection -N -h 192.168.1.112 -p 8888 -g com.android.settings explore
# 正确的命令参数是 -g
objection -g com.android.settings explore
在objection 中执行的指令
frida : 查看当前使用的firda的版本、架构、平台、使用的堆大小等信息
env : 当前apk应用的环境:缓存目录、SD卡目录、apk所在目录等
objection内存漫游、hook、trace
-
在对某个命令不太熟悉的时候,在命令之前加一个help 可以查看该命令的帮助手册:
例如 : help env
-
在不知道输入什么时候,按空格键,有自动提示命令
- 在./objectin/objection.log 中保存操作的输入输出日志,可以在这里查看信息
-
jobs系统:
- 查看jobs : jobs list
- 取消jobs : jobs kill jobId
查看模块
memory list modules 查看当前进程所有的模块
memory list exports libxx. so 查看当前库的导出函数
memory list exports libxx. so --json /root/libar.json 可以把结果保存到json文件中
memory dump all from_base 提取整个内存
memory search --string --offsets-only
在堆上搜索实例
android heap search instances com.android.settings.DispalySettings --fresh
执行堆上的实例
android heap execute 0x2526 com.android.settings.getPreferenceScreenResID #前面的地址是类的实例handle,上面的命令搜索查出来的handle
执行堆上的实例-通过提供frida的js代码
android heap execute handle # 会进入一个编辑模式 ,输入frida js的代码
直接启动activity或service
android intent launch_activity com.android.settings.DisplaySettings
查看当前可用的Activites
android hooking list activities
列出内存中所有的classes
android hooking list classes
搜索内存中包含特定字符的类
android hooking search classes 关键字
列出指定的类中所有的方法
android hooking list class_methods 类名
搜索内存中包含关键字的方法
android hooking search methods 关键字
hook一个类的所有的方法
android hooking watch class android.bluetooth.BluetoothDevice #只会打印方法、没有参数
查看hook方法的参数需要单独hook,不需要方法的参数
android hooking watch class_method android.buletooth.BluethoothDevice.equals --dump-args --dump-backtrace --dump-return
hook构造函数
android hooking watch class_method java.io.File.$init --dump-args
objection以调试方式启动进程
objection -d -g com.andriod.settings explore
objection以调试方式启动进程,并注入命令
objection -d -g com.andriod.settings explore --startup-command ‘objection相关的命令’
objection插件体系:Wallbreaker : help to understand java memory world.
加载插件 : plugin load 插件的路径
plugin wallbreaker classdump --fullname 类名 #打印全局变量,属性,方法定义等
objection + DEXDump 脱壳
加载插件 : plugin load 插件的路径
plugin dexdump search
plugin dexdump dump
objection在启动时进行hook
objection -g packageName explore --startup-command ‘android hooking watch xxx’
Objection的缺陷
- 缺少对Native层的支持
- 对象类型数据的打印有问题,比如Byte array和Json,会显示成[object, object]
- 对Spawn方式启动的支持不够顺畅