1、概述
Frida是个轻量级别的hook框架
是Python API,但JavaScript调试逻辑
Frida的核心是用C编写的,并将Google的V8引擎注入到目标进程中,在这些进程中,JS可以完全访问内存,挂钩函数甚至调用进程内的本机函数来执行。
使用Python和JS可以使用无风险的API进行快速开发。Frida可以帮助您轻松捕获JS中的错误并为您提供异常而不是崩溃。
关于frda学习路线了,Frida的学习还是蛮简单的,只需要了解两方面的内容:
- 主控端和目标进程的交互(message)
- Python接口和js接口(查文档)
frida框架分为两部分:
- 一部分是运行在系统上的交互工具frida CLI。
- 另一部分是运行在目标机器上的代码注入工具 frida-serve。
2、资源和环境
Windows11 X64
Python 3.7
魅族16th Plus(已Root)
Frida官网:https://www.frida.re/
Frida源码:https://github.com/frida
3、运作模式
Frida通过其强大的仪器核心Gum提供动态检测,Gum是用C语言编写的。因为这种检测逻辑很容易发生变化,所以通常需要用脚本语言编写,这样在开发和维护它时会得到一个简短的反馈循环。这就是GumJS发挥作用的地方。只需几行C就可以在运行时内运行一段JavaScript,它可以完全访问Gum的API,允许您挂钩函数,枚举加载的库,导入和导出的函数,读写内存,扫描模式的内存等
4、Frida安装
Frida的安装很简单,需要在windows安装frida客户端和在安卓安装frida服务端。
4.1、windows安装客户端
4.1.1、安装Frida
windows安装pyhon37安装,打开cmd,使用命令pip3 install frida
在安装时 发生了如下问题
解决方案:关闭正在运行的代理(梯子)后重试
4.1.2、安装Frida-tools
pip3 install frida-tools
4.1.3、验证安装
查看Frida版本:frida --version
4.2、手机中安装Frida服务端
4.2.1、下载服务端到电脑
- 使用adb连接到移动设备,查看CPU的ABI信息
一般模拟器都会带有adb不需要额外下载,我所用的就是雷电模拟器下的adb,配置环境变量即可
通过:getprop ro.product.cpu.abi
可以看出我手机是arm64-v8a的,接下来去 frida-github-点我直达 下载对应版本的服务端Server
下载后将其解压出来,为了之后的命令行操作方便重命名为frida-server.
4.2.2、手机端操作Frida
如果运行不了,关闭liunx的SELinux:echo 0 > /sys/fs/selinux/enforce
。
不过我的真机和模拟器都没有出现运行不了的情况,模拟器只是不能沟通起服务端和客户端,所以换真机操作 具体原因不详。
4.2.3、验证双端连接
重新打开一个CMD用来执行客户端,查看frida-server64是否运行成功。
执行命令:frida-ps -U
沟通成功
5、Frida工具
5.1、工具总体概述
Frida提供了四个工具,frida-trace,frida-ps,frida,frida-discover,这些工具都位于python的Scripts路径下
5.2、升级frida
如果需要升级Frida版本 使用以下命令
pip3 install -U frida
pip3 install -U frida-tools
python2.7安装方法与python3.7一致
评论 (0)