Frida之内存漫游
在前面的系列文章中对Frida相关的API进行了介绍。
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

-
提取整个内存
memorydumpall 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 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或者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相关内容,欢迎关注我的微信公众号:无情剑客。
