在前面的系列文章中对Frida相关的API进行了介绍。
文章目录
- Hook everything
- 内存漫游
- 启动objection
- Hook anywhere
- 启动Activity或者Service
- objection的缺陷
- 退出
- 抓包
- 公众号
Hook everything
Frida只是提供了各种API供我们调用,在此基础之上可以实现具体的功能,比如禁用证书绑定之类的脚本,就是使用Frida的各种API来组合编写而成。于是有大佬将各种常见、常用的功能整合进一个工具,供我们直接在命令行中使用,这个工具便是objection。
objection基本整合了常用的各种hook功能,在逆向apk、Hook代码、查看内存信息的时候为我们提供极大的方便。使用objection掌握常用的命令,大部分情况下是不需要写任何代码的。
内存漫游
启动objection
保证Frida server开启
命令行输出
objection -g com.lingpao.lpcf622b explore
- 查看基本信息
- 查看内存中加载的库
memory list modules
- 查看库的的导出函数
memory list exports libgsl.so
- 提取整个内存
memory dump all from_base
- 后续文章会对dump出的内存做详细的分析。
- 搜索整个内存
memory search "88" --string --offsets-only
, 关于如何进行的搜索,在Frida API使用(2)中介绍了通过Frida进行搜索。Objection对通配符的支持不好。
Hook anywhere
- 列举内存中的所有类
android hooking list classes
- 在内存中所有已加载的类中搜索包含特定关键词的类
android hooking search classes game
- 内存中搜索所有的方法
android hooking search methods game
非常耗时的一个操作。 - 列出类的所有方法
android hooking list class_methods com.fish.main.MainGameActivity
- 直接生成hook代码
android hooking generate simple com.fish.main.MainGameActivity
没有参数,需要自行添加。 - hook类的所有方法
android hooking watch class com.fish.main.MainGameActivity
当需要调用相应的方法的方法的时候,可以看出相应的hook信息被打印出来。关于Activity的声明周期在Frida API进阶-文件有介绍。 - hook方法的参数、返回值和调用栈
android hooking watch class_method com.fish.main.MainGameActivity.onWindowFocusChanged --dump-args --dump-return --dump-backtrace
- hook方法的所有重载
android hooking watch class_method java.io.File.$init --dump-args
启动Activity或者Service
- 查看当前可用的Activity
android hooking list activities
- 直接启动activity
android intent launch_activity com.zhihu.matisse.ui.MatisseActivity
- 查看可开启的服务
android hooking list services
- 开启服务
android intent launch_service com.cameraphotodemo.localnotificationfunction.ExtFuncUtils$DetectService
objection的缺陷
- 缺少对Native层的支持
- 对象类型的数据打印有问题,比如Byte array和Json,会显示成[object,object]
- 对Spawn方式启动的支持不够流畅
退出
exit
抓包
Tcpdump进行抓包,具体可参见下图,后续文章会详细讲解抓包。
通过tcpdump -h
可以查看每一个参数的含义。
公众号
更多Frida相关内容,欢迎关注我的微信公众号:无情剑客。