objection
Frida只是提供了各种API供我们调用,在此基础之上可以实现具体的功能,比如禁用证书绑定之类的脚本,就是使用Frida的各种API来组合编写而成。于是有大佬将各种常见、常用的功能整合进一个工具,供我们直接在命令行中使用,这个工具便是objection。
安装:
pip install objection
检查是否安装成功
objection --help
使用方法
首先介绍几个基本操作:
- 空格键: 忘记命令直接输入空格键, 会有提示与补全
- help: help [command] 会有详细介绍指定命令的作用与例子
- jobs: 任务管理系统, 可以方便的查看与删除任务
简单使用
1.启动 Frida-server,并转发端口
启动教程:frida-server
2.附加需要调试的 app,进入交互界面
// 将objection注入应用 com.xxx.xxx应用名
objection -g com.xxx.xxx explore
可以使用该env命令枚举与所讨论的应用程序相关的其他有趣目录
avtivity RPC 调用
列出所有avtivity(活动)
android hooking list activities
启动指定avtivity,class_activity_name 活动类名
android intent launch_activity class_activity_name
列出所有service(服务)
android hooking list services
启动指定service,services_class_name 服务类名
android intent launch_service services_class_name
这里虽然进去了app的测试页面但是 avtivity 我没办法RPC 调用,暂不研究。
内存漫游-Java层的hook
列出内存中所有的类,这里会出现很多的数据
android hooking list classes
//在内存中所有已加载的类中搜索包含特定关键词的类
android hooking search classes [search_name]
列出类的所有方法,class_name类名
android hooking list class_methods class_name
//在内存中所有已加载的方法中搜索包含特定关键词的方法
android hooking search methods [search_name]
hook
/*
hook指定方法, 如果有重载会hook所有重载,如果有疑问可以看
--dump-args : 打印参数
--dump-backtrace : 打印调用栈
--dump-return : 打印返回值
*/
android hooking watch class_method com.xxx.xxx.methodName --dump-args --dump-backtrace --dump-return
//hook指定类, 会打印该类下的所以调用
android hooking watch class com.xxx.xxx
//设置返回值(只支持bool类型)
android hooking set return_value com.xxx.xxx.methodName false
使用 hook方法
android hooking watch class com.xxx.xxx
使用方法
android hooking watch class_method com.xxx.xxx.methodName --dump-args --dump-backtrace --dump-return
查看 hook 任务列表
jobs list
杀死任务
jobs kill [job ID]
使用hook方法后,会在后台运行hook,手机上的操作如果触发到相关的函数,就会被hook,就会打印出相关的调用栈,参数,返回。
生成 hook 代码,可以注入js 或者frida使用,[class_name] 类名
android hooking generate simple [class_name]
Spawn方式Hook
objection -g packageName explore --startup-command '[obejection_command]'
内存漫游-Native层
比如,我们想要在内存里面找和这个Authorization-QS
相关的 内存的偏移地址
memory search "Authorization-QS" --string --offsets-only
导出所有modules的信息
memory list modules
所有保存到本地方便查找,路径C:\Users\Administrator
memory list modules --json modules.json
找到偏移量有点像的
查看里面的函数,可以保存 --json libart.json
memory list exports libBugly-ext.so
这里不研究了 太复杂了 有空研究
objection常用命令
// 将objection注入应用
objection -g com.xxx.xxx explore
Memory 指令
memory list modules //枚举当前进程模块
memory list exports [lib_name] //查看指定模块的导出函数
memory list exports libart.so --json /root/libart.json //将结果保存到json文件中
memory search --string --offsets-only //搜索内存
android heap 指令
//堆内存中搜索指定类的实例, 可以获取该类的实例id
search instances search instances com.xx.xx.class
//直接调用指定实例下的方法
android heap execute [ins_id] [func_name]
//自定义frida脚本, 执行实例的方法
android heap execute [ins_id]
android 指令
android root disable //尝试关闭app的root检测
android root simulate //尝试模拟root环境
android ui screenshot [image.png] //截图
android ui FLAG_SECURE false //设置FLAG_SECURE权限
内存漫游
android hooking list classes //列出内存中所有的类
//在内存中所有已加载的类中搜索包含特定关键词的类
android hooking search classes [search_name]
//在内存中所有已加载的方法中搜索包含特定关键词的方法
android hooking search methods [search_name]
//直接生成hook代码
android hooking generate simple [class_name]
hook 方式
/*
hook指定方法, 如果有重载会hook所有重载,如果有疑问可以看
--dump-args : 打印参数
--dump-backtrace : 打印调用栈
--dump-return : 打印返回值
*/
android hooking watch class_method com.xxx.xxx.methodName --dump-args --dump-backtrace --dump-return
//hook指定类, 会打印该类下的所有调用
android hooking watch class com.xxx.xxx
//设置返回值(只支持bool类型)
android hooking set return_value com.xxx.xxx.methodName false
Spawn 方式 Hook
objection -g packageName explore --startup-command '[obejection_command]'
activity 和 service 操作
android hooking list activities //枚举activity
android intent launch_activity [activity_class] //启动activity
android hooking list services //枚举services
android intent launch_service [services_class] //启动services
任务管理器
jobs list // 查看任务列表
jobs kill [task_id] // 关闭任务
关闭 app 的 ssl 校验
android sslpinning disable
监控系统剪贴板
// 获取Android剪贴板服务上的句柄并每5秒轮询一次用于数据。
// 如果发现新数据,与之前的调查不同,则该数据将被转储到屏幕上。
help android clipboard
执行命令行
help android shell_exec [command]
布施恩德可便相知重
微信扫一扫打赏
支付宝扫一扫打赏