suifei 发表于 2024-7-4 20:31

Fridare 修改和定制 frida-server 的魔改工具

Fridare 是一个用于修改和定制 Frida-server 的魔改工具,专为 iOS 越狱设备设计。它允许用户更改名称和端口,以增强安全性和灵活性。免除了很多越狱检测frida的情况。

## 特性

- 自动下载并修改指定版本的 frida-server
- 随机生成新的 frida-server 名称
- 自定义 frida-server 端口
- 支持 arm 和 arm64 架构
- 二进制替换修改
   - frida-server
   - frida-agent.dylib
   - frida-tools
- 生成可直接安装的修改版 .deb 包

### 新增特性 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`,简化项目的构建和部署流程。
- 运行之前请确保本机已经安装了 (https://github.com/4ch12dy/issh) 命令。并配置好了 ssh 的免密登录。
   > 配置 issh 的 ssh 免密登陆
   ```shell
   # 生成 keygen 密钥,如果已生成可以跳过
   ssh-keygen -t rsa -b 4096 -C "<EMAIL>"
   # 配置手机IP,如果USB连接可以不配置
   issh ip set <iPhone-IP>   
   # 拷贝公钥到手机 /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"
   ```

## 前提条件

- macOS 操作系统(用于运行构建脚本)
- Homebrew
- dpkg(将通过 Homebrew 自动安装,如果尚未安装)
- 越狱的 iOS 设备
- 在 iOS 设备上安装 OpenSSH

## 使用方法

1. 克隆此仓库:
```shell
git clone https://github.com/suifei/fridare.git
cd fridare
```

2. 使用 Makefile 构建和部署:
```shell
make build       # 构建项目
make deploy      # 部署项目
```

2. 运行构建脚本:
```shell
./build.sh
```

例如:
```shell
./build.sh 16.3.3 8899 http://127.0.0.1:1081
```
如果不指定参数,脚本将使用默认值(Frida 版本 16.3.3,端口 8899)。
CURL_PROXY 为可以访问github的代{过}{滤}理地址,如果不需要代{过}{滤}理,可以不传递。

3. 脚本将下载指定版本的 Frida,修改它,并在 `dist` 目录中生成新的 .deb 包。

```shell
$ ./build.sh 16.3.1 8888 http://127.0.0.1:1081
```

4. 将生成的 .deb 包传输到您的 iOS 设备:
```shell
scp ./dist/frida_16.3.3_iphoneos-arm_tcp.deb root@<iPhone-IP>:/var/root/
```

5. SSH 进入您的 iOS 设备并安装修改后的包:
```shell
ssh root@<iPhone-IP>
dpkg -i /var/root/frida_16.3.3_iphoneos-arm_tcp.deb
```

## 安装兼容版本的 Frida 工具

为确保兼容性,请安装与修改后的服务器版本相匹配的 Frida 工具:
```shell
pip install frida-tools==12.4.3
```
对于 Node.js 用户:
```shell
npm install frida@16.3.3
```

## 使用

如果不使用usb数据线时,可以使用以下命令连接到远程 frida-server :
```shell
frida -H <iPhone-IP>:8899 -U
frida-trace -H <iPhone-IP>:8899 ...
frida-ps -H <iPhone-IP>:8899
frida-inject -H <iPhone-IP>: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. 自动化流程

build.sh 脚本自动化了整个过程:

- 下载指定版本的 frida-server
- 生成随机名称
- 修改所有必要的文件
- 重新打包 deb 文件

### 4. 兼容性考虑

脚本同时处理 arm 和 arm64 架构的包,确保在不同的 iOS 设备上的兼容性。

### 5. 安全性增强

通过更改服务器名称、端口和内部字符串,这个项目使得通过常规方法检测 Frida 的存在变得更加困难。这对于在某些可能会主动检测和阻止 Frida 的应用中使用 Frida 非常有用。

### 6. 灵活性

通过允许用户指定 Frida 版本和端口,该工具提供了很大的灵活性,可以适应不同的需求和环境。

### 7. 二进制修改技术

使用 (hexreplace/main.go) 来执行二进制替换,在不重新编译 Frida 的情况下修改二进制文件。这种方法虽然有效,但也有局限性,因为它只能替换固定长度的字符串。

## 注意事项

- 默认的 root 用户密码为 "alpine"。出于安全考虑,强烈建议更改此密码。
- 请确保您的 iOS 设备已越狱并安装了 OpenSSH。
- 此工具仅用于教育和研究目的。请遵守所有适用的法律和条款。

## 开源地址
(http://github.com/suifei/fridare)

suifei 发表于 2024-7-11 17:15

### 3.0.1 Fixed
- 修复在 Conda 环境中无法正确识别和修改 Frida 工具的问题
- 解决多个 Python 环境共存时的兼容性问题

### 新增特性 v3.0.0
- 新增 `fridare.sh` 脚本,整合所有功能,提供更完整的命令行界面
- 新增 `build`, `ls`, `download`, `lm`, `setup`, `config`, 和 `help` 命令
- 新增配置文件支持,可以保存和加载用户设置
- 新增颜色输出,提升用户体验
- 新增自动检查和安装依赖功能
- 新增下载特定 Frida 模块的功能
- 新增列出可用 Frida 版本和模块的功能

## 使用方法
Fridare 提供了多个命令来满足不同的需求:

### 命令清单

1. `build`: 重新打包 Frida
2. `ls` 或 `list`: 列出可用的 Frida 版本
3. `download`: 下载特定版本的 Frida
4. `lm` 或 `list-modules`: 列出可用的 Frida 模块
5. `setup`: 检查并安装系统依赖
6. `config`: 设置配置选项
7. `help`: 显示帮助信息

### 使用范例

1. 构建魔改版 Frida
```shell
./fridare.sh build -v 16.0.19 -p 8899 -y
```
这个命令会构建版本 16.0.19 的 Frida,设置端口为 8899,并自动确认所有提示。

2. 列出可用的 Frida 版本
```shell
./fridare.sh ls
```

3. 下载特定版本的 Frida
```shell
./fridare.sh download -v 16.0.19 -m frida-server ./output
```
这个命令会下载版本 16.0.19 的 frida-server 模块到 ./output 目录。

4. 下载最新版本的所有 Frida 模块
```shell
./fridare.sh download -latest -all ./output
```

5. 列出可用的 Frida 模块
```shell
./fridare.sh lm
```

6. 设置环境
```shell
./fridare.sh setup
```
这个命令会检查并安装所需的系统依赖。

7. 配置设置
```shell
./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. 列出当前配置
```shell
./fridare.sh config ls
```

9. 获取特定命令的帮助信息
```shell
./fridare.sh help build
```
这个命令会显示 build 命令的详细用法。

10. 使用最新版本构建 Frida
```shell
./fridare.sh build -latest -p 9999 -y
```
这个命令会使用最新版本的 Frida 进行构建,设置端口为 9999,并自动确认所有提示。

11. 下载但不解压 Frida 模块
```shell
./fridare.sh download -latest -m frida-gadget --no-extract ./output
```
这个命令会下载最新版本的 frida-gadget 模块到 ./output 目录,但不会自动解压。

12. 安装 frida-tools
```shell
./fridare.sh config frida-tools
```
这个命令会安装或更新 frida-tools。

13. 将生成的 .deb 包传输到您的 iOS 设备:
```shell
scp ./dist/frida_16.3.3_iphoneos-arm_tcp.deb root@<iPhone-IP>:/var/root/
```

14. SSH 进入您的 iOS 设备并安装修改后的包:
```shell
ssh root@<iPhone-IP>
dpkg -i /var/root/frida_16.3.3_iphoneos-arm_tcp.deb
```

这些示例涵盖了脚本的主要功能和常见使用场景。可帮助您快速上手使用。

## Frida 魔改脚本的结构和功能
```shell
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
│   │   ├── 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

suifei 发表于 2024-7-16 13:59

### 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 并改进了脚本的稳定性

支持 Windows, Linux, MacOS, Android, iOS 各种平台和处理器架构的 frida patch,欢迎测试,有问题记得 Issues (https://github.com/suifei/fridare/issues) 提出来

**Full Changelog**: https://github.com/suifei/fridare/compare/v3.0.1...v3.1.0

xixicoco 发表于 2024-7-5 11:50

非常好的工具,多谢楼主了

jun269 发表于 2024-7-5 13:58

搞了半天一看是手机用的东东,路过。

yushangwl 发表于 2024-7-5 14:27

感谢分享

zhy1992 发表于 2024-7-5 15:42

这个做什么用的

linjason 发表于 2024-7-6 08:23

666666966

PhoenixOe 发表于 2024-7-6 08:56

非常好的工具,多谢楼主了

dangerxyc 发表于 2024-7-6 10:13

bujimo3 发表于 2024-7-6 11:26

非常好的工具,多谢楼主了

debug_cat 发表于 2024-7-6 11:29

大佬牛啊,收藏
页: [1] 2 3
查看完整版本: Fridare 修改和定制 frida-server 的魔改工具