【APP安全测试】Frida 基础

一、Frida 简单介绍

本质上是一个动态插桩框架 ,核心能力是在不修改 APK 的前提下,向运行中的 Android 进程注入 JavaScript 脚本,从而拦截、观察、修改 Java 方法或 Native 函数。

原理:

  • frida-server 通过 ptrace 等方式附加到目标进程。
  • 在目标进程中分配可执行内存,注入 Frida Agent。
  • Agent 在进程内启动 JavaScript 引擎,并与电脑端建立通信通道。
  • 你写的 JS 脚本被下发到目标进程执行,通过 Interceptor、Java.use 等 API 劫持函数。
  • Java 层 Hook 主要靠 Frida 的 Java Bridge 与 ART/Dalvik 交互;Native 层 Hook 则直接操作 so 库中的函数地址。

二、下载安装

Frida 是 C/S 架构:电脑端是客户端,需要在 Android 设备上运行 frida-server。frida-server 可以通过下面的链接下载:

https://github.com/frida/frida

  1. 推送 frida-server 到安卓设备中
bash 复制代码
adb -s 127.0.0.1:16384 root
adb -s 127.0.0.1:16384 push frida-server-17.23.3-android-arm64 /data/local/tmp/frida-server
  1. 给 frida-server 授权执行权限
bash 复制代码
adb -s 127.0.0.1:16384 shell "chmod 755 /data/local/tmp/frida-server"
  1. 打印版本号测试
bash 复制代码
adb -s 127.0.0.1:16384 shell "/data/local/tmp/frida-server --version"
  1. 后台拉起 frida server
bash 复制代码
adb -s 127.0.0.1:16384 shell "nohup /data/local/tmp/frida-server >/dev/null 2>&1 &"
  1. 查看运行情况
bash 复制代码
adb -s 127.0.0.1:16384 shell "ps -A | grep frida"
  1. 下载 frida 连接客户端
    注:要与服务器版本一致
bash 复制代码
pip install -U frida==17.23.3 frida-tools

三、使用

模式

hook 启动阶段逻辑

bash 复制代码
frida -U -f com.example.app -l hook.js --no-pause

App 已经在运行了,Frida 通过 ptrace 附加到现有进程上注入。

bash 复制代码
frida -U -n com.example.app -l hook.js

Frida API

API 作用 常用场景
Java.perform(fn) 在 Java 运行时执行回调 Java Hook 入口
Java.use(className) 获取 Java 类的 JS 包装对象 定位目标类
Java.cast(obj, cls) 把对象强转为指定类型 接口/父类转具体实现
Java.choose(className, cb) 枚举堆上已有实例 找存活对象、调用实例方法
Java.enumerateLoadedClasses(cb) 枚举已加载类 找隐藏类、动态加载类
Java.enumerateClassLoaders(cb) 枚举类加载器 多 Dex、壳、插件场景
Java.array(type, values) 创建 Java 数组 给 Java 方法传数组参数

Frida 绕 Root

场景: APP 通过判断 su 命令执行情况,来判断设备是否 root

那么,我们可以通过下面的代码定位 String 方法重载,然后使用 implementation 替换其实现:

bash 复制代码
var Runtime = Java.use("java.lang.Runtime");
Runtime.exec.overload("java.lang.String").implementation = function (cmd) {
    if (cmd === "su") throw Java.use("java.io.IOException").$new("not found");
    return this.exec(cmd);
};
相关推荐
科技象限2 小时前
数据防泄密系统怎么选?看它怎么把几道防线叠成网
运维·安全·网络安全·安企神
sbjdhjd4 小时前
云安全 | 从特权容器到旧版 runC:Docker 宿主机访问与运行时缺陷复盘
运维·网络安全·docker·云原生·kubernetes·云计算·云安全
sbjdhjd20 小时前
云安全 | Docker 容器逃逸复盘(三):docker.sock 挂载与 Docker-in-Docker 风险
经验分享·网络安全·docker·云原生·容器·kubernetes·云安全
Dachui_11221 天前
内网穿透如何限制访问地区?ZeroNews Geo Location 区域访问控制实践
运维·网络安全·内网穿透·访问控制·远程办公·api安全·ip白名单
HackTwoHub1 天前
DeepSeek Harness 红队破甲插件|适配 SRC 挖掘场景,区分平台拦截与模型原生输出,用于大模型安全边界合规测评研究
安全·web安全·网络安全·系统安全·密码学·网络攻击模型·安全架构
菩提小狗1 天前
每日安全情报报告 · 2026-10-09
网络安全·漏洞·cve·安全情报·每日安全
白帽攻防录1 天前
SRC 挖洞:TanStack Start 服务器函数 XSS 深度复盘,CVE-2026-102989 怎么窃取用户会话
运维·服务器·网络安全·xss
中原第一高手1 天前
fofatoto 1.8.0 发布:启动即知新版本、中文进度面板与更干净的 Web 日志
python·网络安全·开源·资产测绘·fofa
Bruce_Liuxiaowei1 天前
2026年10月第2周网络安全形势周报
网络安全