suifei/fridare
GitHub: suifei/fridare
跨平台 Frida 特征魔改工具,通过自动化修改 frida-server 和相关组件的二进制特征,帮助安全研究人员绕过应用的反调试和特征检测机制。
Stars: 729 | Forks: 122
# Fridare
[English](#Features) | [中文](#特性) | [GUI图形界面](#-gui版本截图)
[](https://git.io/streak-stats)













[](https://github.com/suifei?tab=followers)
[](https://twitter.com/csuifei)
Fridare 是一个用于 iOS frida 插件、Android,linux,Windows 等平台 frida-server 的自动化魔改工具。它允许用户更改名称和端口,以增强安全性和灵活性。免除了很多越狱检测frida的情况。
🎉 **v4.0.0 重大更新**:全新发布基于 Fyne 框架的跨平台GUI版本,提供现代化的图形用户界面,让 Frida 服务器修改变得更加直观和便捷!
✨ **双模式支持**:既保留了强大的命令行界面,又新增了用户友好的图形界面,满足不同用户的使用习惯。
**[Windows 下使用](win/README.md)|[Android 文档](docs/android.md)|[iOS 文档](docs/ios.md)|[frida-tools 文档](docs/patch-tools.md)|[安装指北](docs/install.md)|[CHANGELOG](CHANGELOG)**
欢迎大家入QQ群讨论:[QQ 555354813](screenshots/555354813.jpg) ,如本项目对你有所帮助,记得给作者加星鼓励哦!
## 特性
- **🎉 全新GUI版本**:基于 Fyne 框架的现代化图形用户界面
- **🖥️ 跨平台支持**:Windows、macOS、Linux 原生GUI应用
- **📱 直观操作**:可视化的 Frida 服务器修改和配置管理
- **📊 实时反馈**:图形化日志显示和进度条展示
- **🔧 Windows deb包支持**:在Windows平台下直接修改和创建deb包,无需Linux环境
- 自动下载并修改指定版本的 frida-server
- 随机生成新的 frida-server 名称
- 自定义 frida-server 端口
- 支持 arm 和 arm64 架构
- 二进制替换修改
- frida-server
- frida-agent.dylib
- frida-tools
- 生成可直接安装的修改版 .deb 包
- 一体化命令行界面,提供多种功能
- 配置文件支持,可保存用户设置
- 自动检查和安装依赖
- 下载特定 Frida 模块
- 列出可用 Frida 版本和模块
- 支持 Conda 环境
- 支持 macho, elf, pe 文件格式
- 支持 Windows,Linux,MacOS,Android,IOS 的patch
- 支持自更新
欢迎使用新的一键安装功能快速开始使用 Fridare!
```
curl -s https://raw.githubusercontent.com/suifei/fridare/main/fridare.sh | bash -s install
```
## 🎉 全新GUI版本 v4.0.0 - 2025-01-02
### 重大更新:图形用户界面发布
Fridare 现在提供了基于 Fyne 框架的现代化图形用户界面,让 Frida 服务器的修改变得更加直观和便捷!
#### 🚀 GUI版本亮点
- **🎨 现代化界面**:采用 Fyne 框架构建的跨平台原生GUI应用
- **🖱️ 拖拽操作**:支持文件拖拽,简化文件选择流程
- **📊 实时监控**:可视化进度条和实时日志显示
- **⚙️ 可视化配置**:图形化的配置管理界面
- **🔧 多工具集成**:包含创建、修补、GUI三个独立工具
#### 📦 构建GUI版本
```
cd ui
./build.sh
```
构建完成后将生成三个可执行文件:
- `fridare-gui.exe` - 主GUI应用程序
- `fridare-create.exe` - 创建工具
- `fridare-patch.exe` - 补丁工具
#### 🖥️ 运行GUI应用
```
./build/fridare-gui.exe
```
GUI版本保持了与命令行版本完全相同的功能,同时提供了更加友好的用户体验。无论您是新手还是专家,都可以轻松使用图形界面来修改和配置 Frida 服务器。
### 📸 GUI版本截图








### 🔧 Windows平台deb包完全支持
v4.0.0版本的重大突破之一是在Windows平台下实现了对deb包的完全支持:
#### 核心优势
- **无需Linux环境**:直接在Windows下处理deb包,告别WSL和虚拟机
- **原生deb处理**:完整的解压、修改、重新打包工具链
- **GUI可视化操作**:图形界面下的拖拽式deb包处理
- **一键式工作流**:从下载到修改到打包的完整自动化流程
#### 技术实现
- 实现了Windows平台下的原生deb包解析算法
- 集成了跨平台的tar.gz和ar归档处理能力
- 支持Debian控制文件的读取和修改
- 保持Linux兼容的文件权限和结构
#### 使用场景
```
# 直接在Windows下修改iOS deb包
./fridare-gui.exe # 拖拽deb文件进行可视化修改
# 或使用命令行
./fridare-patch.exe -i frida-server.deb -o modified.deb
```
这项功能让Windows用户无需额外环境即可完成完整的Frida服务器定制工作流程!
## [v3.1.5] - 2024-07-29 Windows 支持
### 新增
- 新增 `patch-frida.cmd` 脚本,用于在 Windows 环境下修改 frida-server
- 新增 `patch-frida-tools.cmd` 脚本,用于在 Windows 环境下修改 frida-tools
- 增加对 Windows 平台的全面支持
- 更新了使用说明,增加了 Windows 平台的详细教程
## [v3.1.4] - 2024-07-18
### 新增
- 增加 `patch-tools` 命令,用于修补 frida-tools 模块
- 新增 `render_markdown` 函数,用于在终端中渲染简单的 Markdown 格式
- 添加 `generate_random_name` 函数,用于生成随机的 Frida 魔改名
- 实现 `move_file` 函数,用于处理文件移动时的 "are identical" 错误
### 改进
- 优化 `list_frida_versions` 函数,现在能够渲染 Markdown 格式的版本说明
- 改进 `build_frida` 函数,支持使用本地 deb 文件进行构建
- 增强 `patch_frida_tools` 和 `restore_frida_tools` 函数的功能和错误处理
- 优化 `modify_frida_tools` 函数,提高修改 frida-tools 的可靠性
- 改进 `download_frida_module` 函数,增加对特定操作系统和架构的支持
### 修复
- 修复了在某些情况下无法正确获取 Frida 路径的问题
- 解决了移动文件时可能遇到的 "are identical" 错误
### 变更
- 更新 `show_main_usage` 和其他使用说明函数,以反映新增的功能
- 调整 `parse_arguments` 函数,支持新增的 `patch-tools` 命令
- 修改配置文件的处理方式,增加了对 `FRIDA_NAME` 的支持
### 其他变更
- 代码结构优化,提高了整体可读性和可维护性
- 增加了更多的日志输出,提供更详细的执行信息
- 更新了版本号至 3.1.4
## v3.1.2 - 2024-07-17
### 新增
- 增加对多平台的支持:现在支持 `macOS`、`iOS`、`Android`、`Linux` 和 `Windows`
- 新增 `upgrade` 命令:用于自动更新 Fridare 脚本
- 新增一键安装功能
### 变更
- 优化版本检查和更新流程
### 修复
- 修复了在 Windows 系统上无法正确识别和安装 Frida 工具的问题
- 修复了在 macOS 系统上无法正确下载 Frida 工具的问题
### 其他变更
- 更新版本号至 3.1.2
- 代码重构和优化,提高整体性能和稳定性
### v3.1.1
- 增加了 `upgrade` 命令,用于自动更新 Fridare 脚本
### v3.1.0
- 增加了 `patch` 命令,用于修补指定的 Frida 模块
- 例如:`安卓 frida-server` `./fridare.sh p -m frida-server -latest -os android -arch arm64 -o ./patched`
- 增加了对 `patch` 命令的帮助信息
- 增加对 ELF 和 PE 文件格式的支持(支持 Windows,Linux,MacOS,Android,IOS)
- 更新了 `build`、`download` 等命令的用法说明
- 修复了一些小的 Bug 并改进了脚本的稳定性

### v3.0.1 修复
- 修复在 Conda 环境中无法正确识别和修改 Frida 工具的问题
- 解决多个 Python 环境共存时的兼容性问题
### 新增特性 v3.0.0
- 新增 `fridare.sh` 脚本,整合所有功能,提供更完整的命令行界面
- 新增 `build`, `ls`, `download`, `lm`, `setup`, `config`, 和 `help` 命令
- 新增配置文件支持,可以保存和加载用户设置
- 新增颜色输出,提升用户体验
- 新增自动检查和安装依赖功能
- 新增下载特定 Frida 模块的功能
- 新增列出可用 Frida 版本和模块的功能
### v2.2.0 (仅测试 macOS arm 架构,其它架构未测试)
- 新增加 frida-tools 补丁,适配 `frida:rpc` 特征魔改
- 解决 Android 内存扫描该字符串问题
- 自动扫描本地 pip 安装 frida-tools 的位置,对 `core.py` 文件进行魔改,对 `_frida.abi3.so` 文件进行魔改
- 新增加 frida-agent.dylib 魔改,从文件名称,加载位置进行隐藏
- 解决 agent 加载未隐藏问题
### v2.1.1
- 引入 `autoinstall.sh` 脚本,实现 Frida 插件的自动部署。
- 引入 `Makefile`,简化项目的构建和部署流程。
- 运行之前请确保本机已经安装了 [issh](https://github.com/4ch12dy/issh) 命令。并配置好了 ssh 的免密登录。
# 生成 keygen 密钥,如果已生成可以跳过
ssh-keygen -t rsa -b 4096 -C ""
# 配置手机IP,如果USB连接可以不配置
issh ip set
# 拷贝公钥到手机 /var/root ,需要 root 密码 alpine
issh scp ~/.ssh/id_rsa.pub
# 远程服务器添加公钥到 authorized_keys 文件
issh run "mkdir -p ~/.ssh && cat /var/root/id_rsa.pub >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys && chmod 700 ~/.ssh"
## Frida 魔改脚本的结构和功能
```
fridare.sh - Frida 魔改脚本
│
├── 主要功能
│ ├── 构建魔改版 Frida (build)
│ │ ├── 支持指定版本或最新版本
│ │ ├── 自动生成随机5字符名称
│ │ ├── 自定义端口设置
│ │ └── 支持 arm 和 arm64 架构
│ ├── 列出可用 Frida 版本 (ls, list)
│ │ └── 从 GitHub API 获取版本信息
│ ├── 下载特定版本 Frida (download)
│ │ ├── 支持下载单个或所有模块
│ │ └── 可选的自动解压功能
│ ├── 列出可用 Frida 模块 (lm, list-modules)
│ ├── 检查并安装系统依赖 (setup)
│ │ ├── 自动检测缺失依赖
│ │ └── 使用包管理器安装依赖
│ └── 配置选项设置 (config)
│ ├── 设置 HTTP 代理
│ ├── 设置 Frida 服务器端口
│ └── 设置 Frida 魔改名称
│
├── 脚本结构
│ ├── 初始化配置 (initialize_config)
│ │ └── 读取和创建配置文件
│ ├── 参数解析 (parse_arguments)
│ │ └── 支持多种命令行选项
│ ├── 命令处理
│ │ ├── build: 构建魔改版 Frida
│ │ ├── patch: 修补指定的 Frida 模块
│ │ ├── setup: 设置环境
│ │ ├── config: 管理配置
│ │ ├── list: 列出版本
│ │ ├── download: 下载模块
│ │ └── list-modules: 列出模块
│ └── 主函数 (main)
│ └── 整合所有功能的入口点
│
├── 构建过程 (build_frida)
│ ├── 版本检查
│ │ └── 支持最新版本自动检测
│ ├── 环境准备
│ │ ├── 检查 Python 环境 (包括 Conda)
│ │ └── 检查 Golang 环境
│ ├── 下载 Frida (download_frida)
│ ├── 解包 deb 文件
│ ├── 修改文件
│ │ ├── 修改启动守护程序 (modify_launch_daemon)
│ │ │ └── 更新 plist 文件
│ │ ├── 修改 Debian 文件 (modify_debian_files)
│ │ │ ├── 更新 control 文件
│ │ │ ├── 更新 extrainst_ 文件
│ │ │ └── 更新 prerm 文件
│ │ └── 修改二进制文件 (modify_binary)
│ │ ├── 修改 frida-server
│ │ ├── 修改 frida-agent.dylib
│ │ └── 使用 hexreplace 工具
│ ├── 重新打包 deb 文件 (repackage_deb)
│ └── 修改 frida-tools (modify_frida_tools)
│ ├── 修改 Python 库文件
│ └── 更新 core.py 中的字符串
│
├── 辅助功能
│ ├── 日志输出 (log_info, log_success, log_warning, log_error)
│ │ └── 支持彩色输出
│ ├── 用户确认 (confirm_execution)
│ │ └── 可选的自动确认模式
│ ├── 依赖检查 (check_dependencies)
│ ├── 依赖安装 (install_dependencies)
│ ├── 配置管理 (set_config, unset_config, list_config)
│ └── Frida 版本和模块列表 (list_frida_versions, list_frida_modules)
│
├── 下载功能 (download_frida_module)
│ ├── 版本选择 (最新版或指定版本)
│ ├── 模块选择 (单个模块或全部模块)
│ ├── 下载过程
│ │ └── 支持 HTTP 代理
│ └── 解压处理
│ └── 可选的自动解压功能
│
└── 安全和权限
├── sudo 权限保持 (sudo_keep_alive)
└── 清理过程 (cleanup)
```
## 前提条件
- macOS 操作系统(用于运行构建脚本)
- Homebrew
- Python 3
- Go (用于编译 hexreplace 工具)
- 越狱的 iOS 设备
- 在 iOS 设备上安装 OpenSSH
## 安装
### 方式一:命令行版本
1. 克隆此仓库:
_BLOCK_5/>
2. 运行设置命令
```
./fridare.sh setup
```
此命令将检查并安装所需的依赖项。
3. 查看帮助
```
./fridare.sh help
```
### 方式二:GUI版本(推荐)
#### 构建GUI应用
1. 确保已安装依赖:
```
# 安装 Go (如果尚未安装)
# 安装 Fyne 依赖
go install fyne.io/fyne/v2/cmd/fyne@latest
```
2. 构建GUI应用:
```
cd ui
./build.sh
```
3. 运行GUI应用:
```
./build/fridare-gui.exe
```
#### GUI版本特色
- 🎨 **直观界面**:现代化的图形用户界面,操作简单直观
- 📁 **文件拖拽**:支持拖拽文件到应用中进行处理
- 📊 **实时反馈**:可视化进度条和彩色日志输出
- ⚙️ **配置管理**:图形化配置界面,设置一目了然
- 🔧 **工具集成**:集成创建、修补、GUI多个工具于一体
- 🗂️ **Windows deb包支持**:在Windows下原生处理deb包,无需Linux环境
## 使用方法
Fridare 提供了多个命令来满足不同的需求:
### 命令清单
1. `build`: 重新打包 Frida
2. `ls` 或 `list`: 列出可用的 Frida 版本
3. `download`: 下载特定版本的 Frida
4. `lm` 或 `list-modules`: 列出可用的 Frida 模块
5. `setup`: 检查并安装系统依赖
6. `config`: 设置配置选项
7. `help`: 显示帮助信息
### 使用范例
1. 构建魔改版 Frida
```
./fridare.sh build -v 16.0.19 -p 8899 -y
```
这个命令会构建版本 16.0.19 的 Frida,设置端口为 8899,并自动确认所有提示。
2. 列出可用的 Frida 版本
```
./fridare.sh ls
```
3. 下载特定版本的 Frida
```
./fridare.sh download -v 16.0.19 -m frida-server ./output
```
这个命令会下载版本 16.0.19 的 frida-server 模块到 ./output 目录。
4. 下载最新版本的所有 Frida 模块
```
./fridare.sh download -latest -all ./output
```
5. 列出可用的 Frida 模块
```
./fridare.sh lm
```
6. 设置环境
```
./fridare.sh setup
```
这个命令会检查并安装所需的系统依赖。
7. 配置设置
```
./fridare.sh config set proxy http://127.0.0.1:7890
./fridare.sh config set port 9999
./fridare.sh config set frida-name abcde
```
这些命令分别设置代理、端口和 Frida 魔改名。
8. 列出当前配置
```
./fridare.sh config ls
```
9. 获取特定命令的帮助信息
```
./fridare.sh help build
```
这个命令会显示 build 命令的详细用法。
10. 使用最新版本构建 Frida
```
./fridare.sh build -latest -p 9999 -y
```
这个命令会使用最新版本的 Frida 进行构建,设置端口为 9999,并自动确认所有提示。
11. 下载但不解压 Frida 模块
```
./fridare.sh download -latest -m frida-gadget --no-extract ./output
```
这个命令会下载最新版本的 frida-gadget 模块到 ./output 目录,但不会自动解压。
12. 安装 frida-tools
```
./fridare.sh config frida-tools
```
这个命令会安装或更新 frida-tools。
13. 将生成的 .deb 包传输到您的 iOS 设备:
```
scp ./dist/frida_16.3.3_iphoneos-arm_tcp.deb root@:/var/root/
```
14. SSH 进入您的 iOS 设备并安装修改后的包:
```
ssh root@
dpkg -i /var/root/frida_16.3.3_iphoneos-arm_tcp.deb
```
这些示例涵盖了脚本的主要功能和常见使用场景。可帮助您快速上手使用。
## 安装兼容版本的 Frida 工具
为确保兼容性,请安装与修改后的服务器版本相匹配的 Frida 工具:
```
pip install frida-tools==12.4.3
```
对于 Node.js 用户:
```
npm install frida@16.3.3
```
## 访问 frida-server
如果您的设备通过 USB 访问,您可以使用以下命令连接到本地 frida-server:
```
frida -U -f
```
## 使用远程 frida-server
如果不使用usb数据线时,可以使用以下命令连接到远程 frida-server :
```
frida -H :8899 -U
frida-trace -H :8899 ...
frida-ps -H :8899
frida-inject -H :8899 ...
```
## 原理
Fridare 项目的核心原理:
### 1. frida-server 修改原理
Fridare 的核心思想是修改 frida-server ,使其更难被检测。这主要通过以下几个方面实现:
- 重命名服务器文件:
将 `frida-server` 重命名为随机生成的名称(如 `abcde`),这样可以避免简单的名称检测。
- 修改启动配置:
更新 LaunchDaemons plist 文件,使其使用新的服务器名称和自定义端口。这样可以改变服务器的启动方式和监听端口。
- 二进制文件修改:
使用二进制替换技术,将服务器二进制文件中的 "frida" 相关字符串替换为自定义字符串。这可以避免通过扫描二进制文件来检测 Frida。
### 2. deb 包修改和重打包
项目使用 dpkg-deb 工具解包和重新打包 deb 文件。这允许我们修改包的内容,包括:
- 更新 DEBIAN/control 文件中的包名
- 修改 DEBIAN/extrainst_ 和 DEBIAN/prerm 脚本以使用新的服务器名称
- 替换和重命名实际的服务器二进制文件
### 3. 自动化流程
fridare.sh 脚本自动化了整个过程:
- 下载指定版本的 frida-server
- 生成随机名称
- 修改所有必要的文件
- 重新打包 deb 文件
### 4. 兼容性考虑
脚本同时处理 arm 和 arm64 架构的包,确保在不同的 iOS 设备上的兼容性。
### 5. 安全性增强
通过更改服务器名称、端口和内部字符串,这个项目使得通过常规方法检测 Frida 的存在变得更加困难。这对于在某些可能会主动检测和阻止 Frida 的应用中使用 Frida 非常有用。
### 6. 灵活性
通过允许用户指定 Frida 版本和端口,该工具提供了很大的灵活性,可以适应不同的需求和环境。
### 7. 二进制修改技术
使用 [hexreplace](hexreplace/main.go) 来执行二进制替换,在不重新编译 Frida 的情况下修改二进制文件。这种方法虽然有效,但也有局限性,因为它只能替换固定长度的字符串。
## 注意事项
- 默认的 root 用户密码为 "alpine"。出于安全考虑,强烈建议更改此密码。
- 请确保您的 iOS 设备已越狱并安装了 OpenSSH。
- 此工具仅用于教育和研究目的。请遵守所有适用的法律和条款。
## 贡献
欢迎提交问题和拉取请求。对于重大更改,请先开issue讨论您想要更改的内容。
## 许可证
[MIT LICENSE](LICENSE)
# Fridare
Fridare 是一款专为自定义 Frida-server 设计的修改工具,主要针对越狱的 iOS 设备。它允许用户更改名称和端口,从而增强安全性和灵活性。它规避了许多针对 Frida 的越狱检测场景。
🎉 **v4.0.0 重大更新**:全新发布基于 Fyne 框架的跨平台 GUI 版本,提供现代化的图形用户界面,让 Frida 服务器修改变得更加直观和便捷!
✨ **双模式支持**:既保留了强大的命令行界面,又引入了用户友好的图形界面,以满足不同用户的偏好。
[更新日志](CHANGELOG)
## 功能特性
以下是更新日志的英文版本:
## [v3.1.4] - 2024-07-18
### 新增
- 引入了新的 `patch-tools` 命令,用于修改 frida-tools 模块
- 实现了 `render_markdown` 函数,用于在终端中显示简单的 Markdown 格式
- 添加了 `generate_random_name` 函数,用于创建随机的 Frida 修改名称
- 创建了 `move_file` 函数,用于处理文件移动过程中出现的 "are identical" 错误
### 改进
- 增强了 `list_frida_versions` 函数,以渲染 Markdown 格式的版本描述
- 升级了 `build_frida` 函数,支持从本地 deb 文件进行构建
- 扩展了 `patch_frida_tools` 和 `restore_frida_tools` 函数的功能及错误处理
- 优化了 `modify_frida_tools` 函数,使 frida-tools 的修改更加可靠
- 增强了 `download_frida_module` 函数,支持特定的操作系统和架构
### 修复
- 解决了在某些情况下 Frida 路径检测不正确的问题
- 修复了文件移动过程中可能出现的 "are identical" 错误
### 变更
- 更新了 `show_main_usage` 和其他使用说明函数,以反映新功能
- 调整了 `parse_arguments` 函数,以适应新的 `patch-tools` 命令
- 修改了配置文件处理方式,增加了对 `FRIDA_NAME` 的支持
### 其他
- 改进了整体代码结构,提高了可读性和可维护性
- 增加了更详细的日志输出,以提供更丰富的执行信息
- 更新版本号至 3.1.4
### 新增特性 v3.0.0
- 添加了 `fridare.sh` 脚本,集成了所有功能并提供更完整的命令行界面
- 添加了 `build`、`ls`、`download`、`lm`、`setup`、`config` 和 `help` 命令
- 添加了配置文件支持,用于保存和加载用户设置
- 添加了颜色输出以增强用户体验
- 添加了自动依赖检查和安装功能
- 添加了下载特定 Frida 模块的功能
- 添加了列出可用 Frida 版本和模块的功能
### 新增特性 v2.2.0(仅在 macOS arm 架构上测试,其他架构未测试)
- 添加了 frida-tools 补丁,适配 `frida:rpc` 特征修改
- 解决了针对此字符串的 Android 内存扫描问题
- 自动扫描本地 pip 安装的 frida-tools 位置,修改 `core.py` 文件和 `_frida.abi3.so` 文件
- 添加了 frida-agent.dylib 修改,从文件名和加载位置进行隐藏
- 解决了 agent 加载未隐藏的问题
### 新增特性 v2.1.1
- 引入了 `autoinstall.sh` 脚本,用于自动部署 Frida 插件。
- 引入了 `Makefile`,以简化项目的构建和部署过程。
- 运行之前,请确保您的机器上已安装 [issh](https://github.com/4ch12dy/issh) 命令。并配置免密 SSH 登录。
# 生成密钥,如果已生成则跳过
ssh-keygen -t rsa -b 4096 -C ""
# 配置 iPhone IP,如果使用 USB 连接可以跳过
issh ip set
# 将公钥复制到手机的 /var/root,需要 root 密码 alpine
issh scp ~/.ssh/id_rsa.pub
# 将公钥添加到远程服务器的 authorized_keys 文件
issh run "mkdir -p ~/.ssh && cat /var/root/id_rsa.pub >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys && chmod 700 ~/.ssh"
## 功能特性
- **🎉 全新 GUI 版本**:基于 Fyne 框架的现代化图形用户界面
- **🖥️ 跨平台支持**:Windows、macOS、Linux 原生 GUI 应用程序
- **📱 直观操作**:可视化的 Frida 服务器修改和配置管理
- **📊 实时反馈**:图形化日志显示和进度条可视化
- **🔧 Windows deb 包支持**:在 Windows 上原生修改和创建 deb 包,无需 Linux 环境
- 自动下载并修改指定版本的 frida-server
- 随机生成新的 frida-server 名称
- 自定义 frida-server 端口
- 支持 arm 和 arm64 架构
- 二进制替换修改
- frida-server
- frida-agent.dylib
- frida-tools
- 生成可直接安装的修改版 .deb 包
- 集成命令行界面,提供多种功能
- 配置文件支持,用于保存用户设置
- 自动依赖检查和安装
- 下载特定的 Frida 模块
- 列出可用的 Frida 版本和模块
## Frida 修改脚本的结构和功能
```
fridare.sh - Frida Modification Script
│
├── Main Functions
│ ├── Build Modified Frida (build)
│ │ ├── Support for specified version or latest version
│ │ ├── Auto-generate random 5-character name
│ │ ├── Custom port setting
│ │ └── Support for arm and arm64 architectures
│ ├── List Available Frida Versions (ls, list)
│ │ └── Fetch version info from GitHub API
│ ├── Download Specific Frida Version (download)
│ │ ├── Support for downloading single or all modules
│ │ └── Optional auto-extraction feature
│ ├── List Available Frida Modules (lm, list-modules)
│ ├── Check and Install System Dependencies (setup)
│ │ ├── Auto-detect missing dependencies
│ │ └── Install dependencies using package manager
│ └── Configure Options (config)
│ ├── Set HTTP proxy
│ ├── Set Frida server port
│ └── Set Frida modification name
│
├── Script Structure
│ ├── Initialize Configuration (initialize_config)
│ │ └── Read and create configuration file
│ ├── Parse Arguments (parse_arguments)
│ │ └── Support various command-line options
│ ├── Command Processing
│ │ ├── build: Build modified Frida
│ │ ├── setup: Set up environment
│ │ ├── config: Manage configuration
│ │ ├── list: List versions
│ │ ├── download: Download modules
│ │ └── list-modules: List modules
│ └── Main Function (main)
│ └── Entry point integrating all functionalities
│
├── Build Process (build_frida)
│ ├── Version Check
│ │ └── Support for latest version auto-detection
│ ├── Environment Preparation
│ │ ├── Check Python environment (including Conda)
│ │ └── Check Golang environment
│ ├── Download Frida (download_frida)
│ ├── Unpack deb File
│ ├── Modify Files
│ │ ├── Modify Launch Daemon (modify_launch_daemon)
│ │ │ └── Update plist file
│ │ ├── Modify Debian Files (modify_debian_files)
│ │ │ ├── Update control file
│ │ │ ├── Update extrainst_ file
│ │ │ └── Update prerm file
│ │ └── Modify Binary Files (modify_binary)
│ │ ├── Modify frida-server
│ │ ├── Modify frida-agent.dylib
│ │ └── Use hexreplace tool
│ ├── Repackage deb File (repackage_deb)
│ └── Modify frida-tools (modify_frida_tools)
│ ├── Modify Python library files
│ └── Update strings in core.py
│
├── Auxiliary Functions
│ ├── Log Output (log_info, log_success, log_warning, log_error)
│ │ └── Support for colored output
│ ├── User Confirmation (confirm_execution)
│ │ └── Optional auto-confirm mode
│ ├── Dependency Check (check_dependencies)
│ ├── Dependency Installation (install_dependencies)
│ ├── Configuration Management (set_config, unset_config, list_config)
│ └── Frida Version and Module Lists (list_frida_versions, list_frida_modules)
│
├── Download Functionality (download_frida_module)
│ ├── Version Selection (latest or specified version)
│ ├── Module Selection (single module or all modules)
│ ├── Download Process
│ │ └── Support for HTTP proxy
│ └── Extraction Processing
│ └── Optional auto-extraction feature
│
└── Security and Permissions
├── Maintain sudo Privileges (sudo_keep_alive)
└── Cleanup Process (cleanup)
```
## 前提条件
- macOS 操作系统(用于运行构建脚本)
- Homebrew
- Python 3
- Go(用于编译 hexreplace 工具)
- 越狱的 iOS 设备
- iOS 设备上已安装 OpenSSH
## 安装
1. 克隆此仓库:
```
git clone https://github.com/suifei/fridare.git
cd fridare
```
2. 运行设置命令:
```
./fridare.sh setup
```
此命令将检查并安装所需的依赖项。
3. 查看帮助信息:
```
./fridare.sh help
```
## 使用方法
Fridare 提供了多个命令来满足不同的需求:
### 命令清单
1. `build`: 重新打包 Frida
2. `ls` 或 `list`: 列出可用的 Frida 版本
3. `download`: 下载特定版本的 Frida
4. `lm` 或 `list-modules`: 列出可用的 Frida 模块
5. `setup`: 检查并安装系统依赖
6. `config`: 设置配置选项
7. `help`: 显示帮助信息
### 使用范例
1. 构建修改版 Frida
```
./fridare.sh build -v 16.0.19 -p 8899 -y
```
此命令将构建版本 16.0.19 的 Frida,将端口设置为 8899,并自动确认所有提示2. 列出可用的 Frida 版本
```
./fridare.sh ls
```
3. 下载特定版本的 Frida
```
./fridare.sh download -v 16.0.19 -m frida-server ./output
```
此命令会将版本 16.0.19 的 frida-server 模块下载到 ./output 目录。
4. 下载最新版本的所有 Frida 模块
```
./fridare.sh download -latest -all ./output
```
5. 列出可用的 Frida 模块
```
./fridare.sh lm
```
6. 设置环境
```
./fridare.sh setup
```
此命令将检查并安装所需的系统依赖。
7. 配置设置
```
./fridare.sh config set proxy http://127.0.0.1:7890
./fridare.sh config set port 9999
./fridare.sh config set frida-name abcde
```
这些命令分别设置代理、端口和 Frida 修改名称。
8. 列出当前配置
```
./fridare.sh config ls
```
9. 获取特定命令的帮助信息
```
./fridare.sh help build
```
此命令将显示 build 命令的详细用法。
10. 使用最新版本构建 Frida
```
./fridare.sh build -latest -p 9999 -y
```
此命令将使用最新版本的 Frida 进行构建,将端口设置为 9999,并自动确认所有提示。
11. 下载但不解压 Frida 模块
```
./fridare.sh download -latest -m frida-gadget --no-extract ./output
```
此命令会将最新版本的 frida-gadget 模块下载到 ./output 目录,但不会自动解压。
12. 安装 frida-tools
```
./fridare.sh config frida-tools
```
此命令将安装或更新 frida-tools。
13. 将生成的 .deb 包传输到您的 iOS 设备:
```
scp ./dist/frida_16.3.3_iphoneos-arm_tcp.deb root@:/var/root/
```
14. 通过 SSH 进入您的 iOS 设备并安装修改后的包:
```
ssh root@
dpkg -i /var/root/frida_16.3.3_iphoneos-arm_tcp.deb
```
这些示例涵盖了脚本的主要功能和常见使用场景。它们可以帮助您快速上手使用。
## 安装兼容的 Frida 工具
为确保兼容性,请安装与修改后的服务器版本相匹配的 Frida 工具:
```
pip install frida-tools==12.4.3
```
对于 Node.js 用户:
```
npm install frida@16.3.3
```
## 访问 frida-server
如果您的设备通过 USB 访问,您可以使用以下命令连接到本地 frida-server:
```
frida -U -f
```
## 使用远程 frida-server
如果不使用 USB 数据线,您可以使用以下命令连接到远程 frida-server:
```
frida -H :8899 -U
frida-trace -H :8899 ...
frida-ps -H :8899
frida-inject -H :8899 ...
```
## 原理
Fridare 项目的核心原理:
### 1. frida-server 修改原理
Fridare 的核心思想是修改 frida-server 使其更难被检测。这主要通过以下几个方面实现:
- 重命名服务器文件:
将 `frida-server` 重命名为随机生成的名称(例如 `abcde`),这样可以避免简单的名称检测。
- 修改启动配置:
更新 LaunchDaemons plist 文件以使用新的服务器名称和自定义端口。这会改变服务器启动方式和监听的端口。
- 二进制文件修改:
使用二进制替换技术将服务器二进制文件中的 "frida" 相关字符串替换为自定义字符串。这可以避免通过扫描二进制文件检测 Frida。
### 2. deb 包修改和重打包
该项目使用 dpkg-deb 工具解包和重打包 deb 文件。这允许我们修改包的内容,包括:
- 更新 DEBIAN/control 文件中的包名
- 修改 DEBIAN/extrainst_ 和 DEBIAN/prerm 脚本以使用新的服务器名称
- 替换并重命名实际的服务器二进制文件
### 3. 自动化流程
fridare.sh 脚本自动化了整个流程:
- 下载指定版本的 frida-server
- 生成随机名称
- 修改所有必要的文件
- 重打包 deb 文件
### 4. 兼容性考虑
该脚本同时处理 arm 和 arm64 架构的包,确保在不同 iOS 设备上的兼容性。
### 5. 增强安全性
通过更改服务器名称、端口和内部字符串,该项目使得通过常规方法检测 Frida 的存在变得更加困难。这对于在可能会主动检测和阻止 Frida 的应用程序中使用 Frida 特别有用。
### 6. 灵活性
通过允许用户指定 Frida 版本和端口,该工具提供了极大的灵活性,以适应不同的需求和环境。
### 7. 二进制修改技术
使用 [hexreplace](hexreplace/main.go) 执行二进制替换,无需重新编译 Frida 即可修改二进制文件。虽然有效,但此方法有局限性,因为它只能替换固定长度的字符串。
## 注意事项
- 默认的 root 用户密码是 "alpine"。出于安全原因,强烈建议更改此密码。
- 请确保您的 iOS 设备已越狱并安装了 OpenSSH。
- 此工具仅用于教育和研究目的。请遵守所有适用的法律和条款。
## 贡献
欢迎提交问题和拉取请求。对于重大更改,请先开一个 issue 来讨论您想要更改的内容。
## 许可证
[MIT 许可证](LICENSE)













[](https://github.com/suifei?tab=followers)
[](https://twitter.com/csuifei)
Fridare 是一个用于 iOS frida 插件、Android,linux,Windows 等平台 frida-server 的自动化魔改工具。它允许用户更改名称和端口,以增强安全性和灵活性。免除了很多越狱检测frida的情况。
🎉 **v4.0.0 重大更新**:全新发布基于 Fyne 框架的跨平台GUI版本,提供现代化的图形用户界面,让 Frida 服务器修改变得更加直观和便捷!
✨ **双模式支持**:既保留了强大的命令行界面,又新增了用户友好的图形界面,满足不同用户的使用习惯。
**[Windows 下使用](win/README.md)|[Android 文档](docs/android.md)|[iOS 文档](docs/ios.md)|[frida-tools 文档](docs/patch-tools.md)|[安装指北](docs/install.md)|[CHANGELOG](CHANGELOG)**
欢迎大家入QQ群讨论:[QQ 555354813](screenshots/555354813.jpg) ,如本项目对你有所帮助,记得给作者加星鼓励哦!
## 特性
- **🎉 全新GUI版本**:基于 Fyne 框架的现代化图形用户界面
- **🖥️ 跨平台支持**:Windows、macOS、Linux 原生GUI应用
- **📱 直观操作**:可视化的 Frida 服务器修改和配置管理
- **📊 实时反馈**:图形化日志显示和进度条展示
- **🔧 Windows deb包支持**:在Windows平台下直接修改和创建deb包,无需Linux环境
- 自动下载并修改指定版本的 frida-server
- 随机生成新的 frida-server 名称
- 自定义 frida-server 端口
- 支持 arm 和 arm64 架构
- 二进制替换修改
- frida-server
- frida-agent.dylib
- frida-tools
- 生成可直接安装的修改版 .deb 包
- 一体化命令行界面,提供多种功能
- 配置文件支持,可保存用户设置
- 自动检查和安装依赖
- 下载特定 Frida 模块
- 列出可用 Frida 版本和模块
- 支持 Conda 环境
- 支持 macho, elf, pe 文件格式
- 支持 Windows,Linux,MacOS,Android,IOS 的patch
- 支持自更新
欢迎使用新的一键安装功能快速开始使用 Fridare!
```
curl -s https://raw.githubusercontent.com/suifei/fridare/main/fridare.sh | bash -s install
```
## 🎉 全新GUI版本 v4.0.0 - 2025-01-02
### 重大更新:图形用户界面发布
Fridare 现在提供了基于 Fyne 框架的现代化图形用户界面,让 Frida 服务器的修改变得更加直观和便捷!
#### 🚀 GUI版本亮点
- **🎨 现代化界面**:采用 Fyne 框架构建的跨平台原生GUI应用
- **🖱️ 拖拽操作**:支持文件拖拽,简化文件选择流程
- **📊 实时监控**:可视化进度条和实时日志显示
- **⚙️ 可视化配置**:图形化的配置管理界面
- **🔧 多工具集成**:包含创建、修补、GUI三个独立工具
#### 📦 构建GUI版本
```
cd ui
./build.sh
```
构建完成后将生成三个可执行文件:
- `fridare-gui.exe` - 主GUI应用程序
- `fridare-create.exe` - 创建工具
- `fridare-patch.exe` - 补丁工具
#### 🖥️ 运行GUI应用
```
./build/fridare-gui.exe
```
GUI版本保持了与命令行版本完全相同的功能,同时提供了更加友好的用户体验。无论您是新手还是专家,都可以轻松使用图形界面来修改和配置 Frida 服务器。
### 📸 GUI版本截图








### 🔧 Windows平台deb包完全支持
v4.0.0版本的重大突破之一是在Windows平台下实现了对deb包的完全支持:
#### 核心优势
- **无需Linux环境**:直接在Windows下处理deb包,告别WSL和虚拟机
- **原生deb处理**:完整的解压、修改、重新打包工具链
- **GUI可视化操作**:图形界面下的拖拽式deb包处理
- **一键式工作流**:从下载到修改到打包的完整自动化流程
#### 技术实现
- 实现了Windows平台下的原生deb包解析算法
- 集成了跨平台的tar.gz和ar归档处理能力
- 支持Debian控制文件的读取和修改
- 保持Linux兼容的文件权限和结构
#### 使用场景
```
# 直接在Windows下修改iOS deb包
./fridare-gui.exe # 拖拽deb文件进行可视化修改
# 或使用命令行
./fridare-patch.exe -i frida-server.deb -o modified.deb
```
这项功能让Windows用户无需额外环境即可完成完整的Frida服务器定制工作流程!
## [v3.1.5] - 2024-07-29 Windows 支持
### 新增
- 新增 `patch-frida.cmd` 脚本,用于在 Windows 环境下修改 frida-server
- 新增 `patch-frida-tools.cmd` 脚本,用于在 Windows 环境下修改 frida-tools
- 增加对 Windows 平台的全面支持
- 更新了使用说明,增加了 Windows 平台的详细教程
## [v3.1.4] - 2024-07-18
### 新增
- 增加 `patch-tools` 命令,用于修补 frida-tools 模块
- 新增 `render_markdown` 函数,用于在终端中渲染简单的 Markdown 格式
- 添加 `generate_random_name` 函数,用于生成随机的 Frida 魔改名
- 实现 `move_file` 函数,用于处理文件移动时的 "are identical" 错误
### 改进
- 优化 `list_frida_versions` 函数,现在能够渲染 Markdown 格式的版本说明
- 改进 `build_frida` 函数,支持使用本地 deb 文件进行构建
- 增强 `patch_frida_tools` 和 `restore_frida_tools` 函数的功能和错误处理
- 优化 `modify_frida_tools` 函数,提高修改 frida-tools 的可靠性
- 改进 `download_frida_module` 函数,增加对特定操作系统和架构的支持
### 修复
- 修复了在某些情况下无法正确获取 Frida 路径的问题
- 解决了移动文件时可能遇到的 "are identical" 错误
### 变更
- 更新 `show_main_usage` 和其他使用说明函数,以反映新增的功能
- 调整 `parse_arguments` 函数,支持新增的 `patch-tools` 命令
- 修改配置文件的处理方式,增加了对 `FRIDA_NAME` 的支持
### 其他变更
- 代码结构优化,提高了整体可读性和可维护性
- 增加了更多的日志输出,提供更详细的执行信息
- 更新了版本号至 3.1.4
## v3.1.2 - 2024-07-17
### 新增
- 增加对多平台的支持:现在支持 `macOS`、`iOS`、`Android`、`Linux` 和 `Windows`
- 新增 `upgrade` 命令:用于自动更新 Fridare 脚本
- 新增一键安装功能
### 变更
- 优化版本检查和更新流程
### 修复
- 修复了在 Windows 系统上无法正确识别和安装 Frida 工具的问题
- 修复了在 macOS 系统上无法正确下载 Frida 工具的问题
### 其他变更
- 更新版本号至 3.1.2
- 代码重构和优化,提高整体性能和稳定性
### v3.1.1
- 增加了 `upgrade` 命令,用于自动更新 Fridare 脚本
### v3.1.0
- 增加了 `patch` 命令,用于修补指定的 Frida 模块
- 例如:`安卓 frida-server` `./fridare.sh p -m frida-server -latest -os android -arch arm64 -o ./patched`
- 增加了对 `patch` 命令的帮助信息
- 增加对 ELF 和 PE 文件格式的支持(支持 Windows,Linux,MacOS,Android,IOS)
- 更新了 `build`、`download` 等命令的用法说明
- 修复了一些小的 Bug 并改进了脚本的稳定性

### v3.0.1 修复
- 修复在 Conda 环境中无法正确识别和修改 Frida 工具的问题
- 解决多个 Python 环境共存时的兼容性问题
### 新增特性 v3.0.0
- 新增 `fridare.sh` 脚本,整合所有功能,提供更完整的命令行界面
- 新增 `build`, `ls`, `download`, `lm`, `setup`, `config`, 和 `help` 命令
- 新增配置文件支持,可以保存和加载用户设置
- 新增颜色输出,提升用户体验
- 新增自动检查和安装依赖功能
- 新增下载特定 Frida 模块的功能
- 新增列出可用 Frida 版本和模块的功能
### v2.2.0 (仅测试 macOS arm 架构,其它架构未测试)
- 新增加 frida-tools 补丁,适配 `frida:rpc` 特征魔改
- 解决 Android 内存扫描该字符串问题
- 自动扫描本地 pip 安装 frida-tools 的位置,对 `core.py` 文件进行魔改,对 `_frida.abi3.so` 文件进行魔改
- 新增加 frida-agent.dylib 魔改,从文件名称,加载位置进行隐藏
- 解决 agent 加载未隐藏问题
### v2.1.1
- 引入 `autoinstall.sh` 脚本,实现 Frida 插件的自动部署。
- 引入 `Makefile`,简化项目的构建和部署流程。
- 运行之前请确保本机已经安装了 [issh](https://github.com/4ch12dy/issh) 命令。并配置好了 ssh 的免密登录。
# 生成 keygen 密钥,如果已生成可以跳过
ssh-keygen -t rsa -b 4096 -C "标签:Android安全, DNS 反向解析, Docker支持, EVTX分析, EVTX分析, Frida, Frida-server, GUI, Hakrawler, Hook, iOS安全, 云资产清单, 反检测, 安全测试, 应用安全, 攻击性安全, 日志审计, 混淆, 目录枚举, 移动安全, 绕过防御, 网络调试, 自动化, 越狱检测, 逆向工具, 逆向工程, 重打包, 魔改