1 frida介绍
Frida 是一个强大的动态二进制插桩(dynamic instrumentation)工具,主要用于逆向工程、安全研究、App 调试和分析等领域。
它允许你在运行时对本地应用程序(包括 Android、iOS、Windows、macOS、Linux 的原生和托管程序)进行动态修改或观察,无需修改原始二进制。
其主要功能如下:
- 动态 Hook:可以在运行时 hook 任何函数(Java, native C/C++, Obj-C)
- 跨平台支持*:支持 Android、iOS、Windows、Linux、macOS 等平台
- 无须 Root/Jailbreak(可选):有些场景下 Frida 可以在无 root 环境下工作(需绕过限制)
- 脚本化 :支持 JavaScript 和 Python 编写 hook 脚本
- 远程调试 :可连接远程设备并注入目标程序进行分析
运行原理:
+--------------+ +------------------+
| 你写的脚本(JS/Py) |<=====>| Frida Server (on target) |
+--------------+ +------------------+
| |
|------ Hook ----------->|
|<---- Data / Log -------|
本文将一步步带你了解这个工具的安装与基本使用。
2 frida安装
我目前使用的是Windows系统,因此本文也将以windows系统作为示例进行讲解。且为了方便,安卓系统用的是模拟器,并不是真机。
首先我们需要下载Frida,而Frida的下载,可以通过python工具pip完成。
所以推荐你先去安装python环境:Welcome to Python.org
安装完python后,在终端输入命令:pip install frida-tools
,进行安装。
安装完成后,可以输入命令:frida --version
,来输出版本,看是否成功安装:
完成后,我们还需要能够安卓开发调试工具包,如果你已经安装了Android Studio,则已经有该工具包了,如果没有,可以直接下载:platform-tools-windows
下载完成后,是一个压缩包,将其解压,然后放在你觉得比较稳妥的位置,最后将其路径添加到环境变量中即可。
不知道什么是环境变量的可以参考另一篇文章;程序员必懂的常识
将其路径添加到用户环境变量、PATH
变量下即可。
添加完成后,直接输入命令:adb
,打印出相关的帮助信息,则说明你已经操作完成:
然后还需要去下载逍遥模拟器:逍遥安卓模拟器_
这个很简单直接下载安装即可,安装完成后,打开它,然后打开root权限:
一般默认就是打开的,就不用管,然后还要打开开发者模式,首先找到设置:
这个设置可能放在了系统应用框中,点击它打开即可。
然后直接顶部搜索:关于平板电脑
点进去,翻到最下面,多次点击版本号:
直到它弹出提示:你已经处于开发者模式。
然后搜索:开发者选项
打开USB调试:
然后我们就可以回到终端,输入命令:adb kill-server
,先关闭这个调试服务。
然后就可以连接我们的安卓模拟器了:adb connect 127.0.0.1:21503
注意,逍遥模拟器虚拟设备默认端口为21503
,并且目前处于局域网,所以链接为上面那个,如果有多个设备,那么每增加一个设备,端口号就会增加10,如果有第二个虚拟设备,那么端口号就是21513
了。
然后进入安卓的终端:adb shell
输入命令:getprop ro.product.cpu.abi
,查看安卓的架构信息。
最后退出:exit