【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。

相关推荐
阿巴斯甜1 天前
Android 报错:Zip file '/Users/lyy/develop/repoAndroidLapp/l-app-android-ble/app/bu
android
Kapaseker1 天前
实战 Compose 中的 IntrinsicSize
android·kotlin
xq95271 天前
Andorid Google 登录接入文档
android
黄林晴1 天前
告别 Modifier 地狱,Compose 样式系统要变天了
android·android jetpack
冬奇Lab2 天前
Android触摸事件分发、手势识别与输入优化实战
android·源码阅读
城东米粉儿2 天前
Android MediaPlayer 笔记
android
Jony_2 天前
Android 启动优化方案
android
阿巴斯甜2 天前
Android studio 报错:Cause: error=86, Bad CPU type in executable
android
张小潇2 天前
AOSP15 Input专题InputReader源码分析
android
_小马快跑_2 天前
Kotlin | 协程调度器选择:何时用CoroutineScope配置,何时用launch指定?
android