一、前言
Objection 是基于 Frida 框架开发的一个工具,它提供了一组便捷的功能和脚本,以简化在移动应用程序中使用 Frida 进行动态分析和漏洞利用的过程。
二、基本配置
安装 objection
1 2 3
| pip3 install frida==12.8.0 pip3 install frida-tools==5.3.0 pip3 install objection==1.8.4
|
启动服务端,手机端开启对应版本的 frida-server
1 2 3 4
| funsiooo@ubuntu:~/tools/app/platform-tools$ ./adb shell dipper:/ $ su dipper:/ # cd data/app_test/ dipper:/data/app_test # ./fs16.1.6
|
定位 app 包名,寻找需要 hook app 的包名
启动 Objection
1 2 3 4 5 6 7 8 9 10 11
| ● 正常启动 objection -g <包名> explore
● 指定IP端口 objection -N -h <手机ip地址> -p <端口> -g <包名> explore
● spawn 启动前 hook objection -N -h 192.168.1.3 -p 9999 -g 包名 explore --startup-command "android hooking watch class '包名.类名'" ● spawn 启动前 Hook 并打印参数、返回值、函数调用栈 objection -N -h 192.168.1.3 -p 9999 -g 包名 explore --startup-command "android hooking watch class_method '包名.类名.方法' --dump-args --dump-return --dump-backtrace"
|
三、基本使用
启动 Objection 在其终端执行相关命令以便快速获取想要的信息。
查看当前 APP 环境
导入外部 hook 脚本
Memory 指令,提取内存信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| ● 查看内存中加载的库 memory list modules
● 查看某个库的导出函数 memory list exports 文件名.so
● 将结果保存到 json 文件中 memory list exports 文件名.so --json /电脑上的路径/libart.json
● 搜索内存中字符串 memory search "需要搜索的字符串" --string
● 展示搜索到的偏移地址,不展示附近内存 memory search "61 61 61 71 71 71" --offsets-only
● 写入内存数据 memory write 0x12fc9c78 '61 61 61'
● 提取内存数据 memory dump from_base 0x12fc9c78 9 /root/memory.txt
|
Hook 内存漫游
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| ● 枚举 activity android hooking list activities
● 列出内存中所有的类 android hooking list classes
● 列出类的所有方法 android hooking list class_methods 包名.类名
● 在内存中所有已加载的类中搜索包含特定关键词的类 android hooking search classes 包名包含的关键词
● 搜索内存中所有已加载类的所有方法 android hooking search methods 方法名
● 查找类的所有实例 android heap search instances 类名
● hook 类的所有方法 android hooking watch class 包名.类名
● hook 类单个方法 android hooking watch class_method 包名.类名.方法 --dump-args --dump-backtrace --dump-return
● hook 其中一个重载函数,指定参数类型,多个参数用逗号分隔 android hooking watch class_method 包名.类名.方法 "参数1,参数2"
● 生成hook脚本 android hooking generate simple 包名.类名
|
查看组件
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| ● 查看 APP 的组件使用 android hooking list activities android hooking list services android hooking list receivers android hooking list providers
● 获取当前 activity android hooking get current_activity
● 启动指定 activity android intent launch_activity xxxx
● 启动指定service android intent launch_service xxxx
|
任务管理
1 2 3 4 5
| ● 查看Hook任务列表 jobs list
● 取消Hook任务 jobs kill jobid
|
Root 指令
1 2 3 4 5 6 7 8 9 10 11
| ● 尝试关闭 app 的 root 检测 android root disable
● 尝试关闭 sslpinning 校验 android sslpinning disable
● 尝试模拟 root 环境 android root simulate
● 执行命令 android shell_exec ls
|
日志
1 2 3
| ~/.objection/objection.log // objection日志文件位置
~/.objection/objection_history //命令历史文件位置
|
四、Objection 插件
Wallbreaker
1 2
| ● 插件地址 https://github.com/hluwa/Wallbreaker
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| ● 加载插件 方法一: objection -g com.example.androiddemo explore -P ~/.objection/plugins/Wallbreaker(插件路径)
方法二: objection -g com.example.androiddemo explore plugin load ~/.objection/plugins/Wallbreaker(插件路径)
● 插件使用 # 搜索类 plugin wallbreaker classsearch <pattern>
# 搜索类的实例对象 plugin wallbreaker objectsearch com.example.androiddemo.Activity.LoginActivity //返回: [0x2262]: com.example.androiddemo.Activity.LoginActivity@d8a5160
# 查看对象的一些属性和方法 plugin wallbreaker objectdump 0x2262 --fullname
# 输出类结构,打印数据中类的完整包名 plugin wallbreaker classdump <classname> --fullname
|
FRIDA-DEXDump
1 2
| ● 插件地址 https://github.com/hluwa/frida-dexdump
|
1 2 3 4 5 6 7 8 9 10 11
| ● 加载插件 方法一: objection -g com.example.androiddemo explore -P ~/.objection/plugins/Wallbreaker(插件路径)
方法二: objection -g com.example.androiddemo explore plugin load ~/.objection/plugins/Wallbreaker(插件路径)
● 插件使用 plugin dexdump dump plugin dexdump search
|
watch_events
1 2
| ● 插件地址 https://github.com/hluwa/objection-plugins
|
1 2 3 4 5 6 7 8 9 10
| ● 加载插件 方法一: objection -g com.example.androiddemo explore -P ~/.objection/plugins/Wallbreaker(插件路径)
方法二: objection -g com.example.androiddemo explore plugin load ~/.objection/plugins/Wallbreaker(插件路径)
● 插件使用 plugin watch_event onclick //监控点击事件,并打印出类,
|
五、参考
1 2 3 4
| https://bbs.kanxue.com/thread-277929.htm https://www.cnblogs.com/lxh2cwl/p/14842544.html https://mabin004.github.io/2020/08/13/objection操作 https://kuizuo.cn/docs/objection-note/
|