Frida工具-objection

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                   //枚举activity
android intent launch_activity [activity_class]   //启动activity
android hooking list services                     //枚举services
android 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
        ui
jobs
        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 "" (--string) (--offsets-only)
        write     # 将原始字节写入内存地址。小心使用!
ping        # ping agent
plugin      
        load    # 载入插接
pwd             # 打印当前工作目录
reconnect       # 重新连接 device
rm              # 从 device 上删除文件 
sqlite          # sqlite 数据库命令
        connect  # 连接到SQLite数据库文件
ui
        alert    # 显示警报消息,可选地指定要显示的消息。(目前iOS崩溃)

你可能感兴趣的:(python爬虫android)