Frida-xTR is a premium, high-performance management tool designed for security researchers and developers who work with multiple Android devices. It automates the tedious process of deploying, managing, and monitoring Frida Servers across a fleet of devices (physical or emulated) through an elegant, color-coded terminal interface.
Note
This tool is a complete Python-based evolution of the original batch scripts, offering smarter architecture detection, dynamic port mapping, and seamless integration with emulator environments like LDPlayer.
- Auto-Arch Detection: Automatically identifies device architecture (
arm64,x86,arm,x86_64) and pushes the matchingfrida-serverbinary. - Root Elevation: Intelligent root detection and elevation via ADB for seamless server execution.
- Smart Deduplication: Automatically handles duplicate device IDs (common with emulators like LDPlayer and Genymotion).
- Concurrent Control: Setup or start Frida Server on multiple devices simultaneously.
- Dynamic Port Mapping: Automatically assigns unique local ports (starting at
27042) for each device to prevent conflicts. - LDPlayer Integration: One-click connection to the default LDPlayer ADB bridge.
- Target Selection: Search and select target packages from a live list on the device.
- Dual Script Support:
- Local: Load your own
.jsscripts from thescripts/folder. - Codeshare: Instantly inject popular scripts from the Frida Codeshare library.
- Local: Load your own
- Spawn Mode: Automatically spawns target applications to ensure early-stage hooking.
- Vibrant Aesthetics: Pink-to-Blue gradient headers and color-coded status indicators.
- Real-time Feedback: Interactive loading spinners and modal-style dialogs.
- Multi-Window Support: Spawns independent terminal windows for active Frida sessions.
Frida-xTR searches for architecture-specific binaries in the server/ directory:
| Architecture | Recommended Binary Name | Target Device |
|---|---|---|
| ARM64 | frida-server-arm64 |
Modern physical Android devices |
| ARM | frida-server-arm |
Older physical Android devices |
| x86_64 | frida-server-x86_64 |
High-performance Android Emulators |
| x86 | frida-server-x86 |
Standard Android Emulators |
Frida-xTR is optimized for a wide range of Android environments. Whether you are using official development tools or high-performance gaming emulators, the tool ensures stable connectivity.
- Detection: Automatically detected as
emulator-5554,emulator-5556, etc. - Root Tip: Use "Google APIs" system images for full root control. If using "Google Play" images, you may need additional tools like rootAVD to gain
/systemaccess. - Perf:
x86_64binaries are highly recommended for the best performance on modern machines.
The tool features specialized logic to handle common emulator ports and deduplication:
- LDPlayer: Use the built-in "Auto-Connect" feature if your device isn't showing up (Default port:
5555). - NoxPlayer: Ensure "Root" is enabled in Nox settings. Detected via port
62001or52001. - BlueStacks: Requires "Android Debug Bridge" to be enabled in settings. Detected via localhost dynamic ports.
- MEmu / Genymotion: Fully supported via standard ADB bridge.
Connecting a physical device over WiFi? Simply connect via ADB first:
adb connect <device_ip>:5555Frida-xTR will immediately recognize the network device and allow you to manage it just like a USB-connected phone.
- Python 3.6+
- ADB (Android Debug Bridge) added to your System PATH.
- Frida Tools installed on your host machine.
-
Clone the repository:
git clone https://github.com/joelindra/Frida-xTR.git cd Frida-xTR/Dev -
Install requirements:
pip install -r requirements.txt
-
Prepare Frida Server Binaries: Download the latest Frida Server binaries, rename them according to the architecture table above, and place them in the
server/folder.
The core engine's decision-making process from startup to execution.
graph TD
Start([Launch main.py]) --> Init[Initialize Colors & UI]
Init --> Detect{Detect Devices}
Detect -->|Found| Menu[Display Main Menu]
Detect -->|None| LDConnect[Auto-Connect LDPlayer?]
LDConnect -->|Yes| Connect[ADB Connect 127.0.0.1:5555]
Connect --> Detect
Menu -->|Menu 1| Setup[Setup Frida Server]
Menu -->|Menu 2| StartSrv[Start Frida Server]
Menu -->|Menu 7| Inject[Inject Script to App]
Menu -->|Exit| Cleanup[Kill Processes & Close]
Setup --> Arch{Detect Arch}
Arch -->|Auto| Push[Push Correct Binary & chmod 755]
Push --> Menu
StartSrv --> Port[Dynamic Port Mapping 27042++]
Port --> Exec[Execute Server with Root/Shell]
Exec --> Menu
How Frida-xTR interacts with ADB and the Android system during a typical "Setup & Inject" session.
sequenceDiagram
participant U as User
participant S as Frida-xTR Engine
participant A as ADB Bridge
participant D as Android Device
U->>S: Select Device & Action (Setup)
S->>A: getprop ro.product.cpu.abi
A->>D: Query Architecture
D-->>A: arm64-v8a
A-->>S: return Architecture
S->>A: push server/frida-server-arm64
A->>D: Store in /data/local/tmp/
S->>A: shell chmod 755
A->>D: Set Executable
S-->>U: Setup Complete β
U->>S: Start Injection (Menu 7)
S->>A: forward tcp:27042 -> tcp:27042
A->>D: Map Port
S->>A: shell frida-server &
A->>D: Background Execution
S->>S: Local Spawn (frida -H 127.0.0.1:27042 -f package)
S-->>U: Active Hook Session (New Window)
- Menu 1: Initialize your devices (pushes the server binary).
- Menu 2: Spin up the Frida Server on selected devices.
- Menu 4: Verify all servers are
ONLINEand see their local port mappings. - Menu 7: Select a process and inject your bypass or monitoring script.
Frida-xTR/
βββ π server/ # Frida Server binaries (arm64, x86, etc.)
βββ π scripts/ # Custom JavaScript (.js) injection scripts
βββ π rootAVD/ # Support tools for AVD rooting (Internal)
βββ π main.py # Main entry point & Terminal UI engine
βββ π requirements.txt # Project dependencies (frida-tools)
βββ π README.md # Project documentation
βββ π port_mapping.txt # [Auto-Generated] Active dynamic ports
| Item | Description |
|---|---|
main.py |
The heart of the tool. Handles ADB communication, terminal rendering, and logic. |
server/ |
Place your downloaded frida-server binaries here. The tool will auto-select them. |
scripts/ |
Repository for your local hooks. Scripts here appear in the Menu 7 selection list. |
port_mapping.txt |
Generated when servers start. Tracks which device is on which localhost port. |
rootAVD/ |
Integrated support for rooting certain Android Studio system images. |
- "Text file busy": The tool automatically tries to
pkillexisting servers, but if it fails, manually stop frida-server on the device. - Device Not Authorized: Check your phone's screen for the ADB debugging prompt.
- Port Conflict: Use Menu 6 to refresh or clear existing port forwardings.
- Architecture Mismatch: Ensure you have the correct binary for your emulator (usually
x86_64) vs your phone (usuallyarm64).
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- Lead Developer: Anonre | Tuan Hades
- Inspiration: Frida Multi-Device Manager Batch Script
- License: Distributed under the MIT License.