指令选项
Objection连接
1 2
| objection -g <packagename> explore objection -N -h <phone's ip> -p <port> -g <packagename> explore
|
连接成功后是如下画面:
按空格可以获取命令提示以及对应的解释,如上图所示。
常用指令
内存篇
查看内存中加载的所有库
1
| memory list modules (--json <localfilepath>) //后者参数是将运行结果导出成json文件
|
查看指定库的导出函数
1
| memory list exports <module name> (--json <localfilepath>)
|
内存dump
1 2
| memory dump all <localfilepath> memory dump from_base <base_address> <size_to_dump> <localfilepath>
|
内存搜索
1 2
| memory search "<pattern eg: 41 41 41 ?? 41>" --offsets-only memory search "<pattern eg: 41 41 41 ?? 41>" --string
|
选项--string
的例子如下:
选项--offsets-only
的例子如下(需要将字符串转十六进制):
内存写
1
| memory write "<address>" "<pattern eg: 41 41 41 41>" (
|
内存堆搜索实例
1
| android heap search instances <class> (eg: com.example.test)
|
调用实例的方法
1
| android heap execute <Hashcode> <methodname>
|
然而有参方法执行报错,无参方法可以成功执行。
有参方法可以通过编写js代码来执行,指令如下:
1
| android heap evaluate <Hashcode> <methodname>
|
接着就会进入到js代码编写环节,编写完后,Esc接着Enter,就会执行脚本。示例如下:
hook篇
列出所有已加载的activities、class_loaders、classes、receivers、services。
1 2
| android hooking list activities/class_loaders/classes/receivers/services android hooking list class_methods <classname>
|
例子:列举android.openg.Matrix
类的方法,结果如下:
搜索类
1
| android hooking search classes <name> //name可以全类名,也可以是部分关键字
|
搜索方法
1
| android hooking search methods <name> (optional: <package-filter>) //name可以全类名,也可以是部分关键字
|
例如,搜索com.example.testfrida
包中的MainActivity
方法:
hook类的所有方法(不包括构造方法)
1
| android hooking watch class <classname> (--dump-args)(--dump-backtrace)(--dump-return)
|
--dump-args
:hook方法的参数并打印
--dump-backtrace
:hook方法的调用栈并打印
--dump-return
:hook方法的返回值并打印
hook类的指定方法(包括重载方法)
1 2
| android hooking watch class_method <classname.method> (--dump-args)(--dump-backtrace)(--dump-return)
|
hook 单个重载方法(需指定参数类型)
1
| android hooking watch class_method <classname.method> "paramterTypes" (--dump-args)(--dump-backtrace)(--dump-return)
|
查看hook列表
取消hook
附加hook
在某些app hook时, 需要在启动时hook,为了避免错过hook时机,采用附加模式,在objection 启动时就注入app。(也可以不这么做,而是先hook后启动程序)
1
| objection -g <packageName> explore --startup-command <"xxx">
|
设置方法返回值(仅限Boolean类型)
1
| android hooking set return_value "<fully qualified class method>" "<optional overload>" (eg: "com.example.test.doLogin") <true/false>
|
为指定类中的各个方法生成hook代码:
1
| android hooking generate simple <classname>
|
不过生成的只是大致框架,没有详细的内部方法实现,这些还得靠自己写。
为指定类生成hook代码:
1
| android hooking generate class <classname>
|
这个比较详细,应该是完全实现了?
启动Activity或Service
1 2
| android intent launch_activity <activity_class> android intent launch_service <service_class>
|
如果应用的启动权限没有设置好,就可以达到Activity绕过的效果,比如说不用登陆就可以进入某些界面!!!
关闭 ssl 效验
1
| android sslpinning disable
|
关闭 root 检测
显示 app 相关环境变量
可以看到缓存目录(cacheDirectory)以及安装后应用所在目录(packageCodePath)等。
指令解释
参考:
https://www.anquanke.com/post/id/197657