English | Chinese

Fridare is an automation magic tool for iOS frida plug-in, Android, linux, Windows and other platforms. It allows users to change names and ports for enhanced security and flexibility. It eliminates many cases of jailbreak detection of frida.
Used under Windows | Android Documents | iOS Documents | frida-tools Documents | Installation Guide | CHANGELOG
Everyone is welcome to join the QQ group to discuss: QQ 555354813. If this project is helpful to you, remember to add stars to the author and encourage him!
Welcome to get started with Fridare quickly with the new one-click installation feature!
curl -s https://raw.githubusercontent.com/suifei/fridare/main/fridare.sh | bash -s installpatch-frida.cmd script to modify frida-server in Windows environmentpatch-frida-tools.cmd script to modify frida-tools in Windows environmentpatch-tools command to patch frida-tools modulerender_markdown function to render simple Markdown format in terminalgenerate_random_name function to generate a random Frida magic namemove_file function to handle "are identifier" errors when file moveslist_frida_versions function, which can now render version descriptions in Markdown formatbuild_frida function, support building using local deb filespatch_frida_tools and restore_frida_tools functionsmodify_frida_tools function to improve the reliability of modifying frida-toolsdownload_frida_module function and increase support for specific operating systems and architecturesshow_main_usage and other instructions to reflect new functionsparse_arguments function to support the newly added patch-tools commandFRIDA_NAMEmacOS , iOS , Android , Linux and Windowsupgrade command: used to automatically update Fridare scriptsupgrade command to automatically update Fridare scriptspatch command to patch specified Frida modules安卓frida-server ./fridare.sh p -m frida-server -latest -os android -arch arm64 -o ./patchedpatch commandsbuild , download and other commands
fridare.sh script to integrate all functions and provide a more complete command line interfacebuild , ls , download , lm , setup , config , and help commandsfrida:rpc feature magic modificationcore.py file, and magically modify the _frida.abi3.so fileautoinstall.sh script to realize the automatic deployment of the Frida plug-in.Makefile to simplify the construction and deployment process of projects.Configure ssh password-free login for issh
# 生成 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 " 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)git clone https://github.com/suifei/fridare.git
cd fridare./fridare.sh setupThis command will check and install the required dependencies.
./fridare.sh help Fridare provides multiple commands to meet different needs:
build : repackage Fridals or list : List available Frida versionsdownload : Download a specific version of Fridalm or list-modules : List available Frida modulessetup : Check and install system dependenciesconfig : Set configuration optionshelp : Show help information./fridare.sh build -v 16.0.19 -p 8899 -yThis command will build Frida for version 16.0.19, set port to 8899, and automatically confirm all prompts.
./fridare.sh ls./fridare.sh download -v 16.0.19 -m frida-server ./outputThis command will download the frida-server module of version 16.0.19 to the ./output directory.
./fridare.sh download -latest -all ./output./fridare.sh lm./fridare.sh setupThis command checks and installs the required system dependencies.
./fridare.sh config set proxy http://127.0.0.1:7890
./fridare.sh config set port 9999
./fridare.sh config set frida-name abcdeThese commands set the proxy, port and Frida magic name respectively.
./fridare.sh config ls./fridare.sh help buildThis command will show the detailed usage of the build command.
./fridare.sh build -latest -p 9999 -yThis command will be built using the latest version of Frida, set the port to 9999, and automatically confirm all prompts.
./fridare.sh download -latest -m frida-gadget --no-extract ./outputThis command will download the latest version of the frida-gadget module to the ./output directory, but will not be automatically decompressed.
./fridare.sh config frida-toolsThis command will install or update frida-tools.
scp ./dist/frida_16.3.3_iphoneos-arm_tcp.deb root@ < iPhone-IP > :/var/root/ssh root@ < iPhone-IP >
dpkg -i /var/root/frida_16.3.3_iphoneos-arm_tcp.debThese examples cover the main features and common usage scenarios of scripts. It can help you get started quickly.
To ensure compatibility, install the Frida tool that matches the modified server version:
pip install frida-tools==12.4.3For Node.js users:
npm install [email protected]If your device is accessed via USB, you can connect to the local frida-server using the following command:
frida -U -f < target-process > If you are not using the USB cable, you can use the following command to connect to the remote frida-server:
frida -H < iPhone-IP > :8899 -U
frida-trace -H < iPhone-IP > :8899 ...
frida-ps -H < iPhone-IP > :8899
frida-inject -H < iPhone-IP > :8899 ...The core principles of the Fridare project:
The core idea of Fridare is to modify frida-server to make it harder to detect. This is mainly achieved through the following aspects:
Rename server files: Rename frida-server to a randomly generated name (such as abcde ) to avoid simple name detection.
Modify the startup configuration: Update the LaunchDaemons plist file to use the new server name and custom port. This can change the server startup method and listening port.
Binary file modification: Use binary replacement technology to replace the "frida" related string in the server binary file with a custom string. This avoids detecting Frida by scanning the binary.
The project uses the dpkg-deb tool to unpack and repackage the deb files. This allows us to modify the contents of the package, including:
The fridare.sh script automates the entire process:
The script handles both the arm and arm64 architecture packages, ensuring compatibility on different iOS devices.
By changing the server name, port, and internal string, this project makes it more difficult to detect the existence of Frida by conventional methods. This is useful for using Frida in some applications that may proactively detect and block Frida.
By allowing users to specify Frida versions and ports, the tool provides great flexibility to adapt to different needs and environments.
Use hexreplace to perform binary replacement and modify the binary file without recompiling Frida. This method works, but has limitations, as it can only replace strings of fixed lengths.
Submit questions and pull requests are welcome. For major changes, please start an issue and discuss what you want to change.
MIT LICENSE
Fridare is a modification tool designed for customizing Frida-server, specifically for jailbroken iOS devices. It allows users to change names and ports, enhancing security and flexibility. It eliminates many jailbreak detection scenarios for Frida. CHANGELOG
Here's the English version of the changelog:
patch-tools command for modifying the frida-tools modulerender_markdown function to display simple Markdown formatting in the terminalgenerate_random_name function to create random Frida modification namesmove_file function to handle "are identifier" errors during file moveslist_frida_versions function to render Markdown-formatted version descriptionsbuild_frida function to support building from local deb filespatch_frida_tools and restore_frida_tools functionsmodify_frida_tools function for more reliable frida-tools modificationsdownload_frida_module function with support for specific OS and architectureshow_main_usage and other usage instruction functions to reflect new featuresparse_arguments function to accommodate the new patch-tools commandFRIDA_NAMEfridare.sh script, integrating all functions and providing a more complete command-line interfacebuild , ls , download , lm , setup , config , and help commandsfrida:rpc feature modificationcore.py file, and modifyes the _frida.abi3.so fileautoinstall.sh script for automatic deployment of Frida plugins.Makefile to simplify the project build and deployment process.Configure password-free SSH login for issh
# Generate keygen, skip if already generated
ssh-keygen -t rsa -b 4096 -C " <EMAIL> "
# Configure iPhone IP, can be skipped if using USB connection
issh ip set < iPhone-IP >
# Copy public key to /var/root on the phone, requires root password alpine
issh scp ~ /.ssh/id_rsa.pub
# Add public key to authorized_keys file on remote server
issh run " mkdir -p ~/.ssh && cat /var/root/id_rsa.pub >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys && chmod 700 ~/.ssh " 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)git clone https://github.com/suifei/fridare.git
cd fridare./fridare.sh setupThis command will check and install the required dependencies.
./fridare.sh help Fridare provides multiple commands to meet different needs:
build : Repackage Fridals or list : List available Frida versionsdownload : Download a specific version of Fridalm or list-modules : List available Frida modulessetup : Check and install system dependenciesconfig : Set configuration optionshelp : Display help information./fridare.sh build -v 16.0.19 -p 8899 -yThis command will build Frida version 16.0.19, set the port to 8899, and automatically confirm all prompts.
./fridare.sh ls./fridare.sh download -v 16.0.19 -m frida-server ./outputThis command will download the frida-server module of version 16.0.19 to the ./output directory.
./fridare.sh download -latest -all ./output./fridare.sh lm./fridare.sh setupThis command will check and install the required system dependencies.
./fridare.sh config set proxy http://127.0.0.1:7890
./fridare.sh config set port 9999
./fridare.sh config set frida-name abcdeThese commands set the proxy, port, and Frida modification name respectively.
./fridare.sh config ls./fridare.sh help buildThis command will display detailed usage for the build command.
./fridare.sh build -latest -p 9999 -yThis command will build using the latest version of Frida, set the port to 9999, and automatically confirm all prompts.
./fridare.sh download -latest -m frida-gadget --no-extract ./outputThis command will download the latest version of the frida-gadget module to the ./output directory but won't automatically extract it.
./fridare.sh config frida-toolsThis command will install or update frida-tools.
scp ./dist/frida_16.3.3_iphoneos-arm_tcp.deb root@ < iPhone-IP > :/var/root/ssh root@ < iPhone-IP >
dpkg -i /var/root/frida_16.3.3_iphoneos-arm_tcp.debThese examples cover the main functions and common usage scenarios of the script. They can help you quickly get started with using it.
To ensure compatibility, please install Frida tools that match the modified server version:
pip install frida-tools==12.4.3For Node.js users:
npm install [email protected]If your device is accessed via USB, you can use the following command to connect to the local frida-server:
frida -U -f < target-process > If not using a USB data cable, you can use the following commands to connect to the remote frida-server:
frida -H < iPhone-IP > :8899 -U
frida-trace -H < iPhone-IP > :8899 ...
frida-ps -H < iPhone-IP > :8899
frida-inject -H < iPhone-IP > :8899 ...Core principles of the Fridare project:
The core idea of Fridare is to modify frida-server to make it harder to detect. This is mainly achieved through the following aspects:
Renaming the server file: Rename frida-server to a randomly generated name (eg, abcde ), which avoids simple name detection.
Modifying startup configuration: Update the LaunchDaemons plist file to use the new server name and custom port. This changes the way the server starts and the port it listens on.
Binary file modification: Use binary replacement techniques to replace "frida" related strings in the server binary file with custom strings. This can avoid detection of Frida by scanning the binary file.
The project uses the dpkg-deb tool to unpack and repack deb files. This allows us to modify the contents of the package, including:
The fridare.sh script automates the entire process:
The script handles packages for both arm and arm64 architectures, ensuring compatibility on different iOS devices.
By changing the server name, port, and internal strings, this project makes it more difficult to detect the presence of Frida through conventional methods. This is particularly useful for using Frida in applications that might actively detect and block Frida.
By allowing users to specify the Frida version and port, the tool provides great flexibility to adapt to different needs and environments.
Using hexreplace to perform binary replacements, modifying binary files without recompiling Frida. While effective, this method has limitations as it can only replace fixed-length strings.
Issues and pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
MIT LICENSE