Objection介绍
objection是一个基于Frida开发的命令行工具,它能够很不便的Hook Java函数和类,并输入参数,调用栈,返回值。
objection装置
pip install objection
objection命令查看
objection --help
objection启动(保障frida-server的启动)
1.默认启动
objection -g packageName explore
2.指定ip和端口的连贯
objection -N -h 192.168.0.0 -p 9999 -g packageName explore
3.spawn启动,为了防止错过hook机会,采纳附加模式,在objection 启动时就注入app
objection -g packageName explore --startup-command "android hooking watch class 'com.xx.classname"
4.spawn启动-打印参数、返回值、函数调用栈
objection -g packageName explore --startup-command "android hooking watch class_method 'com.classname.methedname' --dump-args --dump-return --dump-backtrace"
–-dump-args: 显示参数;
--dump-return: 显示返回值;
--dump-backtrace: 显示堆栈
常用命令
jobs list # 查看 hook 的工作有多少个
jobs kill jobid # 把正在 hook 的工作敞开
memory list modules # 枚举内存中所有模块
memory list exports 文件名.so # 枚举模块中所有导出函数
memory search # 内存搜寻
android hooking list classes # 列出内存中所有的类
android hooking list class_methods 包名.类名 # 列出类的所有办法
android hooking search classes 包名蕴含的关键词 # 在内存中所有已加载的类中搜寻蕴含特定关键词的类
android hooking list activities //枚举activity
android intent launch_activity [activity_class] //启动activity
android hooking list services //枚举services
android intent launch_service [services_class] //启动services
android hooking watch class 包名.类名 # hook类的所有办法
android hooking watch class_method 包名.类名.办法 # 默认会Hook办法的所有重载
android hooking watch class_method 包名.类名.办法 "参数1,参数2" # 如果只需hook其中一个重载函数 指定参数类型 多个参数用逗号分隔
# hook办法的参数、返回值和调用栈(–dump-args: 显示参数; --dump-return: 显示返回值; --dump-backtrace: 显示堆栈)
android hooking watch class_method 包名.类名.办法 --dump-args --dump-return --dump-backtrace
android heap search instances 包名.类名 --fresh # 搜寻堆中的实例
android heap execute 地址(hashcode的地址) 办法名 # 调用实例的办法
android hooking set return_value com.xxx.xxx.methodName false 设置返回值(只反对bool类型)
android sslpinning disable 屏蔽SSL 校验, 使得ssl pinning生效
基于frida的objection及其插件wallbreaker 命令列表
! # 执行操作系统的命令(留神:不是在所连贯device上执行命令)
android # 执行指定的 Android 命令
clipboard
monitor
deoptimize # Force the VM to execute everything in the interpreter
heap
evaluate # 在 Java 类中执行 JavaScript 脚本。
execute # 在 Java 类中执行 办法。android heap execute 实例ID 实例办法
print
search
instances # 在以后Android heap上搜寻类的实例。android heap search instances 类名
hooking
generate
class # A generic hook manager for Classes
simple # Simple hooks for each Class method
get
current_activity # 获取以后 前景(foregrounded) activity
list
activities # 列出曾经注销的 Activities
class_loaders # 列出曾经注销的 class loaders
class_methods # 列出一个类上的可用的办法
classes # 列出以后载入的所有类
receivers # 列出曾经注销的 BroadcastReceivers
services # 列出曾经注销的 Services
search
classes 关键字 # 搜寻与名称匹配的Java类
methods 关键字 # 搜寻与名称匹配的Java办法
set
return_value # 设置一个办法的返回值。只反对布尔返回
watch
class # Watches for invocations of all methods in a class
class_method # Watches for invocations of a specific class method
intent
launch_activity # 应用Intent启动Activity类
launch_service # Launch a Service class using an Intent
keystore
clear # 革除 Android KeyStore
list # 列出 Android KeyStore 中的条目
watch # 监督 Android KeyStore 的应用
proxy
set # 为应用程序设置代理
root
disable # 试图禁用 root 检测
simulate # 试图模仿曾经 root 的环境
shell_exec # 执行shell命令
sslpinning
disable # 尝试禁用 SSL pinning 在各种 Java libraries/classes
ui
FLAG_SECURE # Control FLAG_SECURE of the current Activity
screenshot # 在以后 Activity 进行截图
cd # 扭转当前工作目录
commands
clear # 革除以后会话命令的历史记录
history # 列出以后会话命令历史记录
save # 将在此会话中运行的所有惟一命令保留到一个文件中
env # 打印环境信息
evaluate # 执行 JavaScript。( Evaluate JavaScript within the agent )
exit # 退出
file
cat # 打印文件内容
download # 下载一个文件
http
start # Start's an HTTP server in the current working directory
status # Get the status of the HTTP server
stop # Stop's a running HTTP server
upload # 上传一个文件
frida # 获取对于 frida 环境的信息
import # 从残缺门路导入 frida 脚本并运行
ios 执行指定的 ios 命令
bundles
cookies
heap
hooking
info
jailbreak
keychain
monitor
nsurlcredentialstorage
nsuserdefaults
pasteboard
plist
sslpinning
ui
jobs
kill # 完结一个工作。这个操作不会写在卸载或者退出以后脚本
list # 列出以后所有的工作
ls # 列出当前工作目录下的文件
memory
dump
all 文件名 # Dump 以后过程的整个内存
from_base 起始地址 字节数 文件 # 将(x)个字节的内存从基址转储到文件
list
exports # List the exports of a module. (列出模块的导出)
modules # List loaded modules in the current process. (列出以后过程中已加载的模块)
search # 搜寻模块。用法:memory search "<pattern eg: 41 41 41 ?? 41>" (--string) (--offsets-only)
write # 将原始字节写入内存地址。小心应用!
ping # ping agent
plugin
load # 载入插接
pwd # 打印当前工作目录
reconnect # 从新连贯 device
rm # 从 device 上删除文件
sqlite # sqlite 数据库命令
connect # 连贯到SQLite数据库文件
ui
alert # 显示警报音讯,可选地指定要显示的音讯。(目前iOS解体)
发表回复