在前面的系列文章中对Frida相关的API进行了介绍。
Hook everythingFrida只是提供了各种API供我们调用,在此基础之上可以实现具体的功能,比如禁用证书绑定之类的脚本,就是使用Frida的各种API来组合编写而成。于是有大佬将各种常见、常用的功能整合进一个工具,供我们直接在命令行中使用,这个工具便是objection。
objection基本整合了常用的各种hook功能,在逆向apk、Hook代码、查看内存信息的时候为我们提供极大的方便。使用objection掌握常用的命令,大部分情况下是不需要写任何代码的。
保证Frida server开启 命令行输出
objection -g com.lingpao.lpcf622b explore
- 查看基本信息
- 查看内存中加载的库 memory list modules
- 查看库的的导出函数 memory list exports libgsl.so
- 提取整个内存 memorydumpall from_base后续文章会对dump出的内存做详细的分析。
- 搜索整个内存 memory search"88"--string--offsets-only, 关于如何进行的搜索,在Frida API使用(2)中介绍了通过Frida进行搜索。Objection对通配符的支持不好。
- 列举内存中的所有类 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 watchclasscom.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 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
- 缺少对Native层的支持
- 对象类型的数据打印有问题,比如Byte array和Json,会显示成[object,object]
- 对Spawn方式启动的支持不够流畅
exit
抓包
Tcpdump进行抓包,具体可参见下图,后续文章会详细讲解抓包。
通过 tcpdump-h可以查看每一个参数的含义。
公众号更多Frida相关内容,欢迎关注我的微信公众号:无情剑客。