1. objection的安装
pip install objection
2. objection的使用
注入进程,如果objection没有找到进程,会以spwan方式启动进程
objection --help
objection -g <进程名> explore
objetion log 文件位置 C:\Users\Administrator\.objection
3.常用方法
列出所有已加载的类
android hooking list classes
在所有已加载的类中搜索包含特定关键字的类
android hooking search classes <pattern>
列出类的所有方法
android hooking list class_methods <路径.类名>
hook类的所有方法(不包括构造方法)
android hooking watch class <路径.类名>
hook类的构造方法
android hooking watch class_method <路径.类名.$init>
默认是hook方法的所有重载
android hooking watch class_method <路径.类名.方法名>
hook方法的参数、返回值和调用栈
android hooking watch class_method <路径.类名.方法名> --dump-args --dump-return --dump-backtrace
hook单个重载函数,需要指定参数类型,多个参数用逗号分隔
android hooking watch class_method <路径.类名.方法名> "<参数类型>"关闭ssl校验
android sslpinning disable
关闭root检测
android root disable
搜索堆中的实例
android heap search instances <类名>
通过实例调用静态和实例方法
调用 android heap execute <handle> <方法名>
调用打印返回值 android heap execute <handle> <方法名> --return-string
调用带参数方法,进入编辑器环境
android heap evaluate <handle>
console.log(clazz.getCalc(100, 200));查看当前app的activity
android hooking list activities
尝试跳转到对应activiy
android intent launch_activity <activiyName>
枚举内存中所有模块
memory list modules
枚举模块中所有导出函数
memory list exports <so库名>
当结果太多,可以将结果导出到本地文件中
memory list exports <so库名> --json <路径.文件名>
4.启动参数
查看与取消hook
jobs list
jobs kill <jobId>指定ip和端口连接
objection -N -h <ip> -p <port> -g <进程名> explore启动前就hook
objection -N -h <ip> -p <port> -g <进程名> explore --startup-command "android hooking watch class <路径.类名>"启动前就hook打印参数、返回值、函数调用栈
objection -N -h <ip> -p <port> -g <进程名> explore -s "android hooking watch class_method <路径.类名.方法名> --dump-args --dump-return --dump-backtrace"如果启动前需要运行多条命令,可以写到一个文件中,使用-c选项
objection -g <进程名> explore -c "路径"