frida-objection
objection常用命令
感谢正己大佬开源:安卓逆向这档事
环境搭配
要frida,大家说14好.
我发现最新版frida16也可以用,至少还没遇到bug,用就是了
初始化菜单:
objection --help(help命令)
Checking for a newer version of objection...
Usage: objection [OPTIONS] COMMAND [ARGS]...
_ _ _ _
___| |_|_|___ ___| |_|_|___ ___
| . | . | | -_| _| _| | . | |
|___|___| |___|___|_| |_|___|_|_|
|___|(object)inject(ion)
Runtime Mobile Exploration
by: @leonjza from @sensepost
默认情况下,通信将通过USB进行,除非提供了`--network`选项。
选项:
-N, --network 使用网络连接而不是USB连接。
-h, --host TEXT [默认: 127.0.0.1]
-p, --port INTEGER [默认: 27042]
-ah, --api-host TEXT [默认: 127.0.0.1]
-ap, --api-port INTEGER [默认: 8888]
-g, --gadget TEXT 要连接的Frida Gadget/进程的名称。 [默认: Gadget]
-S, --serial TEXT 要连接的设备序列号。
-d, --debug 启用带有详细输出的调试模式。(在堆栈跟踪中包括代{过}{滤}理源图)
--help 显示此消息并退出。
命令:
api 以无头模式启动objection API服务器。
device-type 获取关于已连接设备的信息。
explore 启动objection探索REPL。
patchapk 使用frida-gadget.so补丁一个APK。
patchipa 使用FridaGadget dylib补丁一个IPA。
run 运行单个objection命令。
signapk 使用objection密钥对APK进行Zipalign和签名。
version 打印当前版本并退出。
注入:
objection -g 包名 explore #普通注入
objection -g 进程名 explore --startup-command "android hooking watch class 路径.类名 --一些hook参数" #启动前注入,spawn模式启动
# 端口
## frida 的开启模式
./fs1280am64 -l 0.0.0.0:12306
## 指定ip和端口连接
objection -N -h 192.168.31.166 -p 5555 -g com.example.androiddemo explore
Memory指令(不常用):
memory list modules // 查看内存中加载的库
memory list exports libssl.so // 查看库的导出函数
memory list exports libart.so --json /root/libart.json //将结果保存到json文件中
memory search --string --offsets-only //搜索内存
任务管理:
jobs list # 查看当前hook了多少个类
jobs kill 类id # 删除某类的hook
一些比较好用的命令(用来查看加载的活动,同时过一些检测,或者强制跳转):
android hooking list activities #查看内存中加载的activity
android hooking list services #查看内存中加载的services
android intent launch_activity 类名 #启动activity或service(可以用于一些没有验证的activity,在一些简单的ctf中有时候可以出奇效)
android sslpinning disable #关闭ssl校验
android root disable #关闭root检测
内存漫游(也就是查看在内存已经加载的东西了):
android heap search instances 类名(命令) #获取类在内存的hash,为后面干事做准备
android heap execute 前面获得的hashcode 类的方法 #调用方法,会输出给返回值
android heap evaluate <handle> #如果有参数,就要这样写,会进入一个编辑过程
console.log(clazz.方法(参数)); #编辑过程中输出的东西,clazz等于这个类,log是用来打印输出的.
android hooking list classes #列出内存中所有的类(结果比静态分析的更准确),不常用,要跑好久
android hooking search classes 关键类名 #在内存中所有已加载的类中搜索包含特定关键词的类
android hooking search methods 关键方法名 #在内存中所有已加载的类的方法中搜索包含特定关键词的方法(一般不建议使用,特别耗时,还可能崩溃)
android hooking list class_methods 类名 #内存漫游类中的所有方法
Hook:
android hooking watch class_method 类名.方法名 --dump-args --dump-return --dump-backtrace #打印参数,返回值,调用堆栈,都是可选项,如果发现一些java,Android开头的都是系统的,不用管.
android hooking watch class 类名 #hook类所有方法,依旧可以用上面的东西
android hooking watch class_method 类名.$init #构造
android hooking watch class_method 类名.方法名 #重载
一些插件
hluwa/objection-plugins: plugins.:打印出运行位置的类的,但是我们可以直接使用mt的活动记录.
hluwa/frida-dexdump: A frida tool to dump dex in memory to support security engineers analyzing malware.:搜索和转存dex,对于脱壳有用
安装好后可以用这个指令注入后加载插件:
objection -g com.app.name explore -P C:\Myself\Cyber\CTF\Reverse\Tools\fr\plugins

浙公网安备 33010602011771号