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

[分享]objection基本操作与实战-Android安全-看雪-安全社区|安全招聘|kanxue.com插件用法

posted @ 2025-04-16 16:51  T0fV404  阅读(126)  评论(0)    收藏  举报