各种原因下,这个月入职了新公司,岗位是逆向开发工程师。之前用 frida 用的不多,基本就是 用一下 别人写好的脚本,自己改改。处理一下 脱壳 ,dump 数据 之类的简单问题。所以都没总结 frida 的使用,每次要用都重新搜索使用命令。现在因为会比较常用 frida 了,所以就此总结一下,方便我自己要看的时候 可以直接看。不用搜别人的(有些人的博客真的写的很乱)
提前准备:
- 一台电脑, 安装了 python3.x
- 一台手机,已经 root 了(也可以用模拟器,但是不建议),搞逆向的建议自己从 aosp 编译一遍。有空会 出 aosp 的编译流程
- 一个简单的编辑器 sublime(我写非 java 语言都是用 sublime 写,因为不依靠代码联想提示就能写代码 很 cool,不喜欢装逼的人可以跳过这个)
安装 frida
https://github.com/frida/frida/releases/
打开 frida 的 github 的 release page,这里有开发者编译好的 各个平台的版本。
我们要知道 android 中 frida 的使用 和 scrcpy 类似。
本质上是 在 android shell 中运行一个服务,然后 adb 转发端口到电脑上,电脑通过 python 和 手机中开启的 frida 服务通信。
所以我们选择下载的 frida 版本应该是
frida-server 开头的 frida 工具,我们手机一般都是 arm64 的了,所以我们应该下载
frida-server-15.1.24-android-arm64.xz
这只是我挑的最新的版本哈,根据自己python版本的不同选择不同版本的 frida,这是有对应的,最新的 15.1.24 必须要 3.10.x 版本的 python。搞错的话就会很麻烦
下载之后 解压得到一个文件,把解压后的文件 ,下面的 frida_15117 是我把解压的文件重命名了
adb push frida_15117 /data/local/tmp
然后进入 shell ,启动 frdia
adb shell # 进入shell
cd /data/local/tmp # 进入 fridaserver 所在的母鹿
su #获取 shell 权限
setenforce 0 #关闭 selinux
chmod 777 frida_15117 # fridaserver 文件 授权 777
./frida_15117 # 启动 frdia
启动之后需要转发端口,让电脑可以请求到手机上的 frida 服务
adb forward tcp:27042 tcp:27042
到这里手机上的 frida 服务就启动完成了,接下来要安装电脑上的 frida 工具,和手机上的 frida 服务通信
电脑上已经安装好了 python3.10.x 版本,因为 python 的 frida-tools 要和 android 中的 frida server 配套对应,所以我们在 github 的 release page 中找一下,15.1.24 的 frida server 对应的 fridad-tools 是10.6.2
所以
python -m pip install frida-tools=10.6.2
python -m pip install frida=15.1.24
python -m pip install objection
到此就安装完毕了
调试
首先找到 python 包的安装位置
python -m pip show objection
去到 location 中对应 objection 的目录,里面可以修改 objection 的源码
,找到 源码随便打个 log ,然后命令行调用
objection
看看是否有对应的输出
frida 相关的调试也很简单
命令行输入
frida-ps -U
可以打印出手机中运行的进程,那就代表 整个 frida 运行流程无问题了