文章总结: Phantom-Frida是一个开源项目,通过源码级补丁、针对性补丁、构建后补丁和二进制补丁四个阶段,深度修改标准Frida源码,重命名关键标识符、禁用特定钩子、清除残留字符串,以覆盖多达16种常见Frida检测向量,构建具备强大反检测能力的Frida服务器。项目支持手动构建和每周自动构建的隐身版本,提供自定义名称、端口和扩展隐身模式选项,适用于移动安全研究、逆向工程和渗透测试中提升隐蔽性。使用标准frida-tools客户端即可连接,但需注意法律道德限制和已知技术限制。 综合评分: 85 文章分类: 移动安全,逆向分析,安全工具,二进制安全,渗透测试
突破检测封锁:如何构建你自己的“隐身”版Frida
柠檬赏金猎人
2026年2月23日 10:00 广东
概述
Phantom-Frida 是一个开源项目,旨在从源码层面构建具备强大反检测能力的 Frida 服务器。它通过应用约90个补丁,覆盖了多达16种常见的Frida检测向量,能够有效规避安全应用和反调试机制的扫描。项目不仅支持手动构建,还提供了每周自动构建的“隐身”版本,是移动安全研究、逆向工程和渗透测试中提升隐蔽性的利器。
技术/功能
Phantom-Frida 通过四个阶段的补丁对标准 Frida 源码进行深度修改,以实现反检测:
- 源码级补丁:在整个 Frida 源码树中进行全局字符串替换,重命名所有如
frida-agent、frida-server、re.frida.*等关键标识符,并重建 Android Helper 的 DEX 文件以重命名 Java 包。 - 针对性补丁:修改构建系统文件(如
meson.build)、内存文件描述符(memfd)名称、禁用特定的 libc 钩子(如exit、signal)以及 SELinux 标签。 - 构建后补丁:在首次编译后,重命名由 Vala 编译器生成的
frida_agent_main符号,该符号仅存在于构建输出中,然后进行第二次增量构建。 - 二进制补丁:在编译后的二进制文件上进行十六进制级别的替换,修改线程名称(如
gmain、gdbus),并可选择性地清除二进制中残留的 “frida”/“Frida” 字符串。
核心反检测向量覆盖:
| 向量编号 | 检测方法 | 基础模式 | 扩展模式 (--extended) |
| — | — | — | — |
| 1 | 进程名 (/proc/*/cmdline, ps) | 已重命名 | 已重命名 |
| 2 | 内存映射中的 libfrida-agent.so (/proc/self/maps) | 已重命名 | 已重命名 |
| 3 | 线程名 (/proc/self/task/*/comm) | 已重命名 | 已重命名 |
| 4 | memfd 名称 (/proc/self/fd/ 的 readlink) | jit-cache | jit-cache |
| 5 | frida_agent_main 符号 (dlsym / 内存扫描) | 已重命名 | 已重命名 |
| 6 | SELinux 标签 (frida_file) | 已重命名 | 已重命名 |
| 7 | libc 钩子 (exit, signal) | 已禁用 | 已禁用 |
| 8 | D-Bus 服务 (re.frida.server) | 已重命名 | 已重命名 |
| 9 | 默认端口 (27042) | – | 支持 --port 自定义 |
| 10 | D-Bus 接口 | – | 已重命名 |
| 11 | 内部 C 符号 | – | 已重命名 |
| 12 | GType 名称 (FridaServer) | – | 已重命名 |
| 13 | 临时文件路径 (.frida, frida-) | – | 已重命名 |
| 14 | 二进制字符串残留 | – | 已清除 |
| 15 | 构建配置宏定义 | – | 已重命名 |
| 16 | 资源目录路径 (libdir/frida) | – | 已重命名 |
构建选项:
--version,-v: 指定要构建的 Frida 版本(必需)。--name,-n: 替换“frida”的自定义名称(默认:ajeossida;使用random可生成随机名以增强隐蔽性)。--arch,-a: 目标架构(默认:android-arm64)。--port,-p: 自定义监听端口(默认:27042)。--extended,-e: 启用扩展反检测功能(覆盖向量9-16)。--verify: 扫描输出文件,检查是否残留“frida”字符串。--skip-build: 仅应用补丁,不进行编译(用于检查修改)。--skip-clone: 使用工作目录中已存在的源码。
使用示例
1. 通过 GitHub Actions 构建(推荐,无需本地环境) 这是最简单快捷的方式,尤其适合不熟悉 Linux 编译环境的用户。
- Fork 本项目仓库到你的 GitHub 账户。
- 进入你 Fork 后的仓库,点击 Actions 选项卡。
- 在左侧工作流列表中选择 Build Custom Frida。
- 点击 Run workflow,在弹出表单中填写或选择参数:
frida_version: 例如17.7.2custom_name: 自定义服务器名称,或留空使用随机名custom_port: 自定义端口enable_extended: 勾选以启用扩展隐身模式target_arch: 选择目标架构,如android-arm64
- 点击 Run workflow。等待约8-35分钟(取决于缓存)后,即可在运行完成的作业页面下载构建好的二进制文件。
2. 在本地 WSL (Ubuntu) 环境中构建 确保你的 Windows 系统已安装并配置好 WSL 2 及 Ubuntu 发行版。
- 使用辅助脚本(最简单):
# 在 PowerShell 或 CMD 中执行
wsl -d Ubuntu bash build-wsl.sh
# 或带参数执行
$env:FRIDA_VERSION="17.7.2"
$env:CUSTOM_NAME="myghost"
$env:CUSTOM_PORT="27142"
$env:EXTENDED="1"
wsl -d Ubuntu bash build-wsl.sh
- 直接使用 Python 构建脚本(更灵活):
# 在 WSL 的 Ubuntu 终端中执行
# 安装基础依赖
sudo apt update && sudo apt install -y python3 python3-pip git curl unzip make
# 运行构建脚本
python3 build.py --version 17.7.2
# 完整选项示例:构建一个高度隐身的版本
python3 build.py --version 17.7.2 --name random --port 27142 --extended --verify
# 仅打补丁,查看修改内容
python3 build.py --version 17.7.2 --skip-build
3. 部署与使用
构建完成后,二进制文件位于 output/ 目录下。
# 1. 推送服务器到 Android 设备
adb push output/myghost-server-17.7.2-android-arm64 /data/local/tmp/myghost-server
adb shell chmod 755 /data/local/tmp/myghost-server
# 2. 启动服务器(使用默认端口 27042 或自定义端口)
# 方式A:使用默认端口(如果构建时未指定 --port)
adb shell /data/local/tmp/myghost-server -D &
frida -U -f com.example.targetapp
# 方式B:使用自定义端口(例如 27142)
adb shell /data/local/tmp/myghost-server -D &
adb forward tcp:27142 tcp:27142
frida -H 127.0.0.1:27142 -f com.example.targetapp
关键点:即使服务器端被深度修改,你仍然可以使用标准的 frida-tools 客户端进行连接,客户端-服务器协议保持不变。
注意事项
- 法律与道德:请仅在你有合法授权或属于自己完全所有的设备上进行测试。严禁用于非法入侵或破坏活动。
- 已知限制:
- ARM32 应用(如 Chrome):存在一个上游 Frida 的已知问题(issue #2878),在
_patchCode中会产生无效指令。这并非 Phantom-Frida 导致的问题。 - D-Bus 接口名:在基础模式(未使用
--extended)下,像re.frida.HostSession17这样的协议接口名不会被重命名。因为这是客户端-服务器通信协议的一部分,仅重命名服务器端会导致标准 Frida 客户端无法连接。这通常不被视为检测向量,因为它们仅在 USB/TCP 通信通道上可见。
- 环境要求:本地构建需要 Ubuntu 22.04+ 环境(WSL 可用),约 20 GB 可用磁盘空间。Android NDK r25c 会自动下载。
- 版本支持:完全支持 Frida 17.x 版本;16.x 版本兼容(脚本会自动检测 API 差异)。
- 每周自动构建:项目配置了每周日自动运行的工作流,会检测最新的 Frida 版本,用随机生成的名称和端口构建一个扩展隐身版本,并发布到 GitHub Releases 中,方便直接下载使用。
参考链接
- https://github.com/TheQmaks/phantom-frida
- https://frida.re/
- https://github.com/hackcatml/ajeossida
仅限交流学习使用,如您在使用本工具或代码的过程中存在任何非法行为,您需自行承担相应后果,我们将不承担任何法律及连带责任。“如侵权请私聊公众号删文”。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:柠檬赏金猎人 《突破检测封锁:如何构建你自己的“隐身”版Frida》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论