【Frida Android】实战篇1:环境准备

文章目录

    • [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指令并执行。

Frida-Server官方地址

  • 模拟器的架构通常为x86_64,选择android-x86_64.xz结尾的二进制包;
  • 真机通常为ARM架构,选择android-arm64.xz结尾的二进制包。

本教程使用模拟器演示,因此下载第一个类型的包。

小贴士 :若不确定设备架构,可通过在设备的shell中执行命令getprop ro.product.cpu.abi查看,避免下载错误版本。

3.2 Frida-Client

本地客户端用于编写Hook脚本、编译脚本并将其注入到设备中的目标应用,需依赖Python和Node.js环境。

  1. Python环境 :用于编写连接设备、执行注入操作的脚本(如后续的run.py)。
    官方下载地址

    安装完成后,通过以下命令安装Frida客户端工具:

    shell 复制代码
    pip install frida-tools
  2. Node.js环境 :用于编译Frida的JavaScript Hook脚本(依赖frida-compile等工具)。
    官方下载,选择Windows版本安装。

4 项目环境

为便于管理Hook脚本和执行代码,建议按以下结构搭建本地项目:

  1. 新建项目目录(例如命名为Frida),进入目录后执行后续操作;
  2. 新建js子目录,专门存放JavaScript Hook脚本,并在其中创建hook.js(用于编写Hook逻辑);
  3. 新建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环境搭建,核心步骤包括:

  1. 安装模拟器(提供调试环境);
  2. 配置Android Studio及SDK(获取ADB通信工具);
  3. 部署Frida-Server(设备端接收Hook指令)和Frida-Client(本地编写/编译脚本);
  4. 搭建项目结构并配置依赖(规范化管理脚本和编译流程)。

通过以上步骤,已为后续的Hook脚本开发、注入测试奠定了基础,各组件协同工作可实现对Android应用的动态调试与函数Hook。

相关推荐
许愿OvO2 小时前
MySQL触发器
android·mysql·adb
循环不息优化不止3 小时前
Jetpack Compose 从重组到副作用的全方位解析
android
2501_916007474 小时前
iOS文件管理工具深度剖析,从系统沙盒到跨平台文件操作的多工具协同实践
android·macos·ios·小程序·uni-app·cocoa·iphone
Android疑难杂症5 小时前
鸿蒙Notification Kit通知服务开发快速指南
android·前端·harmonyos
lcanfly5 小时前
Mysql作业5
android·数据库·mysql
进阶的小叮当6 小时前
Vue代码打包成apk?Cordova帮你解决!
android·前端·javascript
-指短琴长-7 小时前
MySQL快速入门——基本查询(上)
android·数据库·mysql
Claire_ccat7 小时前
2025山西省网络安全职业技能大赛PWN方向题解
linux·安全·网络安全·pwn·栈溢出
雾迟sec8 小时前
Web安全-文件上传漏洞-黑白名单及其它绕过思路(附思维导图)
javascript·安全·web安全·网络安全·apache·安全威胁分析