Objection介绍

objection是一个基于Frida开发的命令行工具,它能够很不便的Hook Java函数和类,并输入参数,调用栈,返回值。

objection装置

pip install objection

objection命令查看

objection --help

objection启动(保障frida-server的启动)

1.默认启动

objection -g packageName explore

2.指定ip和端口的连贯

objection -N -h 192.168.0.0 -p 9999 -g packageName explore

3.spawn启动,为了防止错过hook机会,采纳附加模式,在objection 启动时就注入app

objection -g packageName explore --startup-command "android hooking watch class 'com.xx.classname"

4.spawn启动-打印参数、返回值、函数调用栈

objection -g packageName explore --startup-command "android hooking watch class_method 'com.classname.methedname' --dump-args --dump-return --dump-backtrace"–-dump-args: 显示参数; --dump-return: 显示返回值; --dump-backtrace: 显示堆栈

常用命令

jobs list        # 查看 hook 的工作有多少个jobs kill jobid  # 把正在 hook 的工作敞开

memory list modules              # 枚举内存中所有模块memory list exports 文件名.so    # 枚举模块中所有导出函数memory search                     # 内存搜寻

android hooking list classes    # 列出内存中所有的类android hooking list class_methods 包名.类名  # 列出类的所有办法android hooking search classes 包名蕴含的关键词  # 在内存中所有已加载的类中搜寻蕴含特定关键词的类android hooking list activities                   //枚举activityandroid intent launch_activity [activity_class]   //启动activityandroid hooking list services                     //枚举servicesandroid intent launch_service [services_class]    //启动services

android hooking watch class 包名.类名              # hook类的所有办法android hooking watch class_method 包名.类名.办法  # 默认会Hook办法的所有重载android hooking watch class_method 包名.类名.办法 "参数1,参数2" # 如果只需hook其中一个重载函数 指定参数类型 多个参数用逗号分隔

# hook办法的参数、返回值和调用栈(–dump-args: 显示参数; --dump-return: 显示返回值; --dump-backtrace: 显示堆栈)android hooking watch class_method 包名.类名.办法 --dump-args --dump-return --dump-backtrace

android heap search instances 包名.类名 --fresh    # 搜寻堆中的实例android heap execute 地址(hashcode的地址) 办法名   # 调用实例的办法

android hooking set return_value com.xxx.xxx.methodName false  设置返回值(只反对bool类型)android sslpinning disable  屏蔽SSL 校验, 使得ssl pinning生效

基于frida的objection及其插件wallbreaker 命令列表

!           # 执行操作系统的命令(留神:不是在所连贯device上执行命令)android     # 执行指定的 Android 命令        clipboard                monitor        deoptimize    # Force the VM to execute everything in the interpreter        heap                evaluate    # 在 Java 类中执行 JavaScript 脚本。                execute     # 在 Java 类中执行 办法。android heap execute 实例ID 实例办法                print                search                        instances  # 在以后Android heap上搜寻类的实例。android heap search instances 类名        hooking                generate                        class    #  A generic hook manager for Classes                        simple   #  Simple hooks for each Class method                get                        current_activity    #  获取以后 前景(foregrounded) activity                list                        activities    # 列出曾经注销的 Activities                        class_loaders # 列出曾经注销的 class loaders                         class_methods # 列出一个类上的可用的办法                        classes       # 列出以后载入的所有类                        receivers     # 列出曾经注销的 BroadcastReceivers                        services      # 列出曾经注销的 Services                search                        classes 关键字    # 搜寻与名称匹配的Java类                        methods 关键字    # 搜寻与名称匹配的Java办法                set                        return_value    # 设置一个办法的返回值。只反对布尔返回                watch                        class           # Watches for invocations of all methods in a class                        class_method    # Watches for invocations of a specific class method        intent                launch_activity    # 应用Intent启动Activity类                launch_service     # Launch a Service class using an Intent        keystore                clear    # 革除 Android KeyStore                list     # 列出 Android KeyStore 中的条目                watch    # 监督 Android KeyStore 的应用        proxy                    set      # 为应用程序设置代理        root            disable    # 试图禁用 root 检测            simulate   # 试图模仿曾经 root 的环境        shell_exec     # 执行shell命令        sslpinning                disable    # 尝试禁用 SSL pinning 在各种 Java libraries/classes        ui            FLAG_SECURE    # Control FLAG_SECURE of the current Activity            screenshot     # 在以后 Activity 进行截图cd          # 扭转当前工作目录commands                clear    # 革除以后会话命令的历史记录        history  # 列出以后会话命令历史记录        save     # 将在此会话中运行的所有惟一命令保留到一个文件中env         # 打印环境信息evaluate    # 执行 JavaScript。( Evaluate JavaScript within the agent )exit        # 退出file        cat         # 打印文件内容        download    # 下载一个文件        http                        start    # Start's an HTTP server in the current working directory                status   # Get the status of the HTTP server                stop     # Stop's a running HTTP server        upload           # 上传一个文件frida       # 获取对于 frida 环境的信息import      # 从残缺门路导入 frida 脚本并运行ios         执行指定的 ios 命令        bundles        cookies        heap        hooking        info        jailbreak        keychain        monitor        nsurlcredentialstorage        nsuserdefaults        pasteboard        plist        sslpinning        uijobs        kill    # 完结一个工作。这个操作不会写在卸载或者退出以后脚本        list    # 列出以后所有的工作ls              # 列出当前工作目录下的文件memory        dump                all 文件名                      # Dump 以后过程的整个内存                from_base 起始地址 字节数 文件  # 将(x)个字节的内存从基址转储到文件        list                exports    # List the exports of a module. (列出模块的导出)                modules    # List loaded modules in the current process. (列出以后过程中已加载的模块)        search    # 搜寻模块。用法:memory search "<pattern eg: 41 41 41 ?? 41>" (--string) (--offsets-only)        write     # 将原始字节写入内存地址。小心应用!ping        # ping agentplugin              load    # 载入插接pwd             # 打印当前工作目录reconnect       # 从新连贯 devicerm              # 从 device 上删除文件 sqlite          # sqlite 数据库命令        connect  # 连贯到SQLite数据库文件ui        alert    # 显示警报音讯,可选地指定要显示的音讯。(目前iOS解体)