Objection
本文作者:杉木@涂鸦智能安全实验室
objection - 基于frida的命令行hook工具食用手册
实用FRIDA进阶:内存漫游、hook anywhere、抓包-安全客 - 安全资讯平台
Objection是一个基于Frida的命令行hook工具,用于移动设备的运行时探索。它可以安装在Windows环境下,并解决多进程应用导致的程序闪退问题。Objection的使用包括启动Frida-server并转发端口,附加需要调试的app,进入交互界面。它提供了丰富的调试界面API,包括环境打印,内存搜索,堆内存搜索和操作,以及Android hooking等功能。此外,它还可以关闭app的ssl校验,尝试关闭app的root检测,以及模拟root环境等。
安装
pip3 install -U objection
windows环境下还需要添加环境变量,不然要到下载的目录下执行;
执行报错解决记录
- 多进程应用导致程序闪退
objection绕过双进程保护 - FreeBuf网络安全行业门户
我的目录是
C:\Users\Administrator\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\objection\utils\agent.py
我是通过检索agent.py文件找到的;然后在文件中添加对应代码;
import time
......
#找到inject函数
def inject(self):
"""
Injects the Objection Agent.
:return:
"""
debug_print('Injecting agent...')
session = self.get_session()
self.script = session.create_script(source=self._get_agent_source())
self.script.on('message', self.on_message)
self.script.load()
if not self.resumed:
debug_print('Resuming PID `{pid}`'.format(pid=self.spawned_pid))
self.device.resume(self.spawned_pid)
#----------------添加下面两行--------------
time.sleep(1)
self.resumed = True
使用说明
Objection执行
官方参考文档:
Usage: objection [OPTIONS] COMMAND [ARGS]...
_ _ _ _
___| |_|_|___ ___| |_|_|___ ___
| . | . | | -_| _| _| | . | |
|___|___| |___|___|_| |_|___|_|_|
|___|(object)inject(ion)
Runtime Mobile Exploration
by: @leonjza from @sensepost
By default, communications will happen over USB, unless the --network option
is provided.
Options:
-N, --network Connect using a network connection instead of USB.
-h, --host TEXT [default: 127.0.0.1]
-p, --port INTEGER [default: 27042]
-ah, --api-host TEXT [default: 127.0.0.1]
-ap, --api-port INTEGER [default: 8888]
-g, --gadget TEXT Name of the Frida Gadget/Process to connect to.
[default: Gadget]
-S, --serial TEXT A device serial to connect to.
-d, --debug Enable debug mode with verbose output. (Includes
agent source map in stack traces)
--help Show this message and exit.
Commands:
api Start the objection API server in headless mode.
device-type Get information about an attached device.
explore Start the objection exploration REPL.
patchapk Patch an APK with the frida-gadget.so.
patchipa Patch an IPA with the FridaGadget dylib.
run Run a single objection command.
signapk Zipalign and sign an APK with the objection key.
version Prints the current version and exists.
执行环境
需要先启动Frida-server并转发端口,具体参考
附加需要调试的app, 进入交互界面
objection.exe -g com.lalala explore
调试界面API
输入任意字符,界面会输出可执行的命令以及对应的含义,非常nice;
# env
打印所有有关环境的执行目录
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
android heap search instances com.xx.xx.class
//直接调用指定实例下的方法
android heap execute [ins_id] [func_name]
//自定义frida脚本, 执行实例的方法
android heap execute [ins_id]
# android hooking
//列出内存中所有的类
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所有重载,如果有疑问可以看
- -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
//查看任务列表
jobs list
//关闭任务
jobs kill [task_id]
//关闭app的ssl校验
android sslpinning disable
//尝试关闭app的root检测
android root disable
//尝试模拟root环境
android root simulate
漏洞悬赏计划:涂鸦智能安全响应中心(https://src.tuya.com)欢迎白帽子来探索。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!