
zafrida-ui v0.3.7
A Frida UI tool window inside PyCharm / JetBrains IDEs.
中文 | English
ZAFrida UI - PyCharm Frida Plugin
Current Version: 0.3.6
Project Introduction
Frida GUI Tool for PyCharm/IntelliJ
ZAFrida UI is a Frida graphical interface plugin integrated into PyCharm and JetBrains IDEs. It aims to solve the complexity of Frida command-line operations and script management by providing a complete UI interaction interface to manage devices, processes, scripts, and logs.
The core highlight is its "Checkbox-style" Template Management System: users can dynamically insert code snippets into the main script or comment them out simply by checking/unchecking boxes, enabling a "block-building" style of Hook script assembly. Additionally, the plugin features built-in Project Management (zafrida-project.xml), supporting quick switching between multiple devices and environment configurations.
ZAFrida does not replace Frida but serves as a powerful UI wrapper for frida-tools, seamlessly connecting with your existing Python and Frida environment.
Simplified Wiki: ZAFrida UI Simplified Wiki (BBS) (This is a simpler wiki) Full Wiki: ZAFrida UI Wiki (EN)
Home

Quick Start
- Install Plugin: Search for "ZAFrida" in the IDE Plugin Marketplace or install via disk.
- Configure Environment: Go to
Settings->Tools->ZAFridaand configurefridaexecutable paths (if not auto-detected). - Create Project: Right-click in Project View ->
New Frida Project. - Write/Select Script: Select your
agent.jsin the Run Panel. - Hook & Debug:
- Connect device (USB or Remote).
- Select target process or package name.
- Click Run.
- Use Templates: Switch to the
Templatestab, check the Hook functions you need (e.g., "SSL Pinning Bypass"), and the code will be automatically injected into your script. - Skills Automation (Optional): Disabled by default. Go to
Settings/Preferences -> ZAFrida -> Skills HTTP API, checkEnable Skillsto auto-start the local API (or use manualStart/Stop). CLI and template locations:skills-cli/zafrida_skill_cli.pyskills-template/zafrida-http-control/
Features
-
Device & Process Management
Integrated withfrida-ls-devicesandfrida-ps, supporting one-click device refresh and viewing running processes, apps, or installed packages. -
Multiple Connection Modes
Full support for USB, Remote, and Gadget modes, with customizable remote host and port—no need to manually construct complex CLI arguments. -
Interactive Script Execution (Run / Attach)
- Supports Run (default Spawn) and Attach as explicit execution actions rather than a simple mode switch.
- Supports Force Stop to terminate target applications.
- Built-in console output with automatic log persistence to the
zafrida-logs/directory.
-
JS Editor Context Menu (Important)
- Right-click inside a Frida JS editor to directly choose:
- Run Frida JS – run the currently opened JS file as the main script (default Spawn).
- Attach Frida JS – attach the currently opened JS file to an already running target process.
- The file is automatically saved before execution, and the corresponding ZAFrida Project is auto-selected.
- Ideal for quick PoC validation, demos, Gadget mode, or attaching to live processes.
- Shortcut:
- Windows / Linux:
Ctrl + Alt + S - macOS:
⌘ + ⌥ + S
- Windows / Linux:
- Right-click inside a Frida JS editor to directly choose:
-
Editor Snippets Insertion
- Provides ZAFrida Frida Snippets in the JS editor context menu.
- One-click insertion of common Frida code patterns, including:
Java.performwrappers- Java method hook templates
- Native hooks via
Interceptor.attach - Module / export enumeration
send()log helpers
- Insertions are performed via WriteCommandAction, fully undo/redo safe.
-
Dynamic Template System (Core Innovation)
- Built-in Android / iOS hook templates (e.g., SSL Pinning Bypass, Method Hook, Native Hook).
- Checkbox-driven control: check to insert code, uncheck to automatically comment it out—no manual deletion required.
- Supports custom templates with real-time preview inside the IDE.
-
Run Script + Attach Script Separation
- Supports a primary Run Script and an independent Attach Script.
- Enables clean separation between startup hooks and runtime injection logic for advanced debugging workflows.
-
Project-Based Configuration (ZAFrida Project)
- Introduces the ZAFrida Project concept to persist devices, targets, scripts, attach scripts, and connection parameters as a complete working context.
- In the Project View, supports:
New Frida ProjectSelect Frida ProjectLoad Frida Project
- UI state and configuration are automatically restored when switching projects.
-
Smart Python / Frida Environment Resolution
- Automatically detects the current PyCharm project’s Python SDK (venv / conda).
- Dynamically injects PATH to ensure the correct
frida/frida-toolsare used. - Handles Remote and Gadget scenarios to avoid incorrect local environment injection.
-
Developer Aids
- One-click installation of
frida-gum.d.tsfor type hints and intelligent code completion in Frida JS.
- One-click installation of
-
Skills Local Automation API
- Adds a local Skills HTTP API (disabled by default) for scripted control: project switching, device/connection mode setup, Run/Attach actions, and run/attach log path/content reading.
- How to enable:
Settings/Preferences -> ZAFrida -> Skills HTTP API, then checkEnable Skills. - Bundled CLI and template:
skills-cli/zafrida_skill_cli.pyskills-template/zafrida-http-control/
Use Cases
ZAFrida UI is suitable for all scenarios involving reverse engineering with Frida, especially:
- Android / iOS App penetration testing and reverse analysis.
- Debugging processes requiring frequent switching of different Hook scripts.
- Engineers accustomed to using IDEs (PyCharm/IDEA) for mixed Python and JS development.
Technical Documentation
-
Requirements:
- IntelliJ IDEA or PyCharm (Recommended 2024.3+)
- Python3 and
frida-toolsinstalled locally (pip install frida-tools) - Ensure
frida,frida-ps, andfrida-ls-devicesare in the system PATH or configured in plugin settings.
-
Issues: Github Issues
Start the Project
- Clone source:
git clone https://github.com/yilongmd/zafrida-ui.git - Open the project in IntelliJ IDEA.
- Run the Gradle task
runIdeto start the debug environment.
System Effect
Main Interface & Run Panel
Provides device selection, script selection, run mode configuration, and console output.

Template Management Panel
Select categories on the left, check templates in the middle, and preview code on the right. Checkboxes directly control the effectiveness of script content.

Settings
Supports customizing Frida tool paths, remote connection addresses, and log configurations.

Project Wizard
Quickly create standardized Frida project structures.

Technical Architecture
Development Environment
- Language: Language: Java 21 (production source). Build scripts use Gradle Kotlin DSL.
- Framework: IntelliJ Platform SDK
- Build Tool: Gradle
- Dependency:
fridafrida-tools(Python environment)
Acknowledgements
Special thanks to the following contributors for providing core Frida JS script templates:
- 小佳
- Lane
- 迷人
For more contributors and acknowledgements, see: CONTRIBUTORS.md