文章目录
-
- [1 模拟器](#1 模拟器)
- [2 Android Studio](#2 Android Studio)
- [3 Frida](#3 Frida)
-
- [3.1 Frida-Server](#3.1 Frida-Server)
- [3.2 Frida-Client](#3.2 Frida-Client)
- [4 项目环境](#4 项目环境)
- [5 总结](#5 总结)
⚠️本博文所涉安全渗透测试技术、方法及案例,仅用于网络安全技术研究与合规性交流,旨在提升读者的安全防护意识与技术能力。任何个人或组织在使用相关内容前,必须获得目标网络 / 系统所有者的明确且书面授权,严禁用于未经授权的网络探测、漏洞利用、数据获取等非法行为。
建议学习本系列前,先大概过一遍Frida Android基础篇,实战篇上手会更快。
1 模拟器
为方便后续Android应用的调试与Hook操作,推荐使用网易MuMu模拟器,其兼容性较好且对新手友好。
2025年11月笔者使用最新的 5.9.0 版本

2 Android Studio
Android Studio是安卓开发的官方IDE,除了开发功能外,它还可用于查看APK代码,并提供关键的ADB(Android Debug Bridge)工具------ADB是电脑与Android设备(模拟器/真机)通信的核心工具,可实现安装应用、调试程序、执行shell命令等功能。
下载后需先配置Android SDK(软件开发工具包),SDK包含了安卓开发和调试所需的各类工具及系统镜像。

配置SDK环境变量 :
为了能在任意命令行窗口直接调用ADB等工具,需将SDK的安装路径添加到系统变量,并将该路径下的\platform-tools子目录(ADB工具所在目录)也配置到环境变量中。


3 Frida
Frida是一款动态 instrumentation 工具,可用于在运行时Hook应用程序的函数/方法,需分别在设备端(Frida-Server)和本地端(Frida-Client)配置。
3.1 Frida-Server
Frida-Server需运行在Android设备(模拟器/真机)上,用于接收本地客户端的Hook指令并执行。
- 模拟器的架构通常为x86_64,选择
android-x86_64.xz结尾的二进制包; - 真机通常为ARM架构,选择
android-arm64.xz结尾的二进制包。
本教程使用模拟器演示,因此下载第一个类型的包。
小贴士 :若不确定设备架构,可通过在设备的shell中执行命令getprop ro.product.cpu.abi查看,避免下载错误版本。
3.2 Frida-Client
本地客户端用于编写Hook脚本、编译脚本并将其注入到设备中的目标应用,需依赖Python和Node.js环境。
-
Python环境 :用于编写连接设备、执行注入操作的脚本(如后续的
run.py)。
官方下载地址安装完成后,通过以下命令安装Frida客户端工具:
shellpip install frida-tools -
Node.js环境 :用于编译Frida的JavaScript Hook脚本(依赖
frida-compile等工具)。
官方下载,选择Windows版本安装。
4 项目环境
为便于管理Hook脚本和执行代码,建议按以下结构搭建本地项目:
- 新建项目目录(例如命名为
Frida),进入目录后执行后续操作; - 新建
js子目录,专门存放JavaScript Hook脚本,并在其中创建hook.js(用于编写Hook逻辑); - 新建
run.py文件(用于连接设备、加载并注入编译后的Hook脚本)。
初始目录结构如下:
shell
- Frida
- js
- hook.js
- run.py
安装项目依赖
Frida 17+版本对脚本编译和加载有新的依赖要求,需通过npm安装以下工具(网络不佳时可先切换淘宝镜像加速下载):
shell
# 临时设置淘宝镜像(加速依赖下载)
npm config set registry https://registry.npmmirror.com/
# 用于与Java层交互的桥接模块
npm install frida-java-bridge --save-dev
# 用于将Hook脚本编译为Frida可识别格式的工具
npm install frida-compile --save-dev
# 提供Frida相关API的类型定义(方便开发时IDE提示)
npm install @types/frida-gum --save-dev
安装完成后,项目目录会新增依赖相关文件,结构如下:
shell
- Frida
- js
- hook.js
- node_modules # 依赖包目录
- package.json # 项目配置文件
- package-lock.json # 依赖版本锁定文件
- run.py
配置package.json
修改package.json文件,配置脚本编译相关命令,方便开发时自动处理脚本更新:
json
{
"private": true, // 标记为私有项目,禁止npm publish发布
"main": "js/hook.js", // 项目入口文件(源Hook脚本路径)
"scripts": {
"build": "frida-compile js/hook.js -o js/compiled_hook.js", // 单次编译:将hook.js编译为compiled_hook.js
"watch": "frida-compile js/hook.js -o js/compiled_hook.js -w", // 实时编译:修改hook.js后自动重新编译
"prepare": "npm run build" // 预处理命令,执行前自动触发build
},
"devDependencies": { // 开发依赖(已通过npm install安装)
"@types/frida-gum": "^19.0.1",
"frida-compile": "^19.0.4",
"frida-java-bridge": "^7.0.10"
}
}
后续开发中,只需专注于编写hook.js(Hook逻辑)和run.py(注入逻辑),通过npm run watch启动实时编译后,修改hook.js会自动生成compiled_hook.js,最终通过运行run.py将编译后的脚本注入到目标应用中。
5 总结
本章节完成了基于Frida的Android Hook环境搭建,核心步骤包括:
- 安装模拟器(提供调试环境);
- 配置Android Studio及SDK(获取ADB通信工具);
- 部署Frida-Server(设备端接收Hook指令)和Frida-Client(本地编写/编译脚本);
- 搭建项目结构并配置依赖(规范化管理脚本和编译流程)。
通过以上步骤,已为后续的Hook脚本开发、注入测试奠定了基础,各组件协同工作可实现对Android应用的动态调试与函数Hook。