
Ein Frida-UI-Tool-Fenster in PyCharm / JetBrains-IDEs.
中文 | [English](https://github.com/yilongmd/zafrida-ui/blob/main/README.en-US.md)

ZAFrida UI - PyCharm Frida Plugin
===============
Aktuelle Version: 0.3.8
[](LICENSE)
[](https://github.com/yilongmd/zafrida-ui)
[](https://plugins.jetbrains.com/)
[](https://github.com/yilongmd/zafrida-ui)
## Wichtigste Neuerungen in 0.3.8
- Das Session-Panel teilt „Gerät" und „Verbindungsmodus" in zwei unabhängige Auswahlzeilen auf: Die Device-Zeile listet nur echte Geräte auf, die Mode-Zeile wählt USB / Remote / Gadget und den Endpunkt. Die adb-Portweiterleitung, Force Stop und Open App der Remote/Gadget-Schleife wirken immer auf das aktuell ausgewählte Telefon und verwenden nicht mehr versehentlich ein früheres Gerät.
- Beim ersten Öffnen und beim Aktualisieren der Geräte wird ein nicht laufender adb-Server automatisch gestartet, sodass `adb devices` nicht mehr manuell ausgeführt werden muss.
- Ist ein gespeichertes Gerät nicht online, wird ein „Nicht verbunden"-Platzhalter angezeigt und die zugehörigen Aktionen werden blockiert; ist nur ein USB-Gerät verbunden, wird automatisch auf dieses umgeschaltet und ein Hinweis in der Konsole ausgegeben.
- Unter der Mode-Zeile wird die tatsächlich ausgeführte adb/frida-Route angezeigt; im Gadget-Modus ist der Target-Paketname schreibgeschützt, kann aber ausgewählt und kopiert werden.
- Die HTTP-API `/state` enthält nun das `connection`-Auswertungsergebnis; `device-select --host` ist weiterhin verwendbar, aber veraltet, für Endpunkte bitte stattdessen `mode-set --host/--port` verwenden.
## Wichtigste Neuerungen in 0.3.7
- Jedes ZAFrida Project kann unabhängig eine Python/Frida-Umgebung auswählen oder gemeinsam nutzen; standardmäßig wird der Interpreter des aktuellen PyCharm-Projekts verwendet, unterstützt werden lokale Umgebungen wie venv, Conda, uv, Poetry, Pipenv, Hatch und weitere.
- Session-UI und Project Settings wurden neu gestaltet und zeigen vollständige Versionsinformationen zu Plugin, Python und Frida an; zudem wurden adaptive, verschiebbare Log-Panels und der Sitzungsstatus optimiert.
- Vollständige Unterstützung für `.js` / `.ts`, Frida 16/17, den Wechsel zwischen mehreren Projektumgebungen sowie die drei Verbindungsabläufe USB, Remote und Gadget.
- Die lokale HTTP-API, CLI und die chinesische Skill wurden um Gerätewiederherstellung, Sitzungswarten und inkrementelle Logs erweitert; die doppelte und instabile MCP-Anpassungsschicht wurde entfernt.
Projektvorstellung
-----------------------------------
<h3 align="center">Ein grafisches Frida-Werkzeug, das speziell für PyCharm/IntelliJ entwickelt wurde</h3>
ZAFrida UI ist ein grafisches Frida-Plugin, das in PyCharm und die JetBrains-IDE-Reihe integriert ist. Es soll die umständliche Bedienung der Frida-Kommandozeile und die unübersichtliche Skriptverwaltung lösen und bietet eine vollständige **UI-Oberfläche** zur Verwaltung von Geräten, Prozessen, Skripten und Logs.
Das Kernhighlight ist das **„Checkbox-basierte" Template-Verwaltungssystem**: Durch An- und Abhaken können Codefragmente dynamisch in das Hauptskript eingefügt oder auskommentiert werden, wodurch sich Hook-Skripte „wie mit Bausteinen" zusammensetzen lassen. Gleichzeitig ist eine vollständige **Projektverwaltung** (`zafrida-project.xml`) integriert, die einen schnellen Wechsel zwischen mehreren Geräten und Umgebungskonfigurationen ermöglicht.
ZAFrida ersetzt Frida nicht, sondern dient als leistungsstarke UI-Hülle für `frida-tools` und fügt sich nahtlos in Ihre bestehende Python- und Frida-Umgebung ein.
**Einfaches Wiki**: [ZAFrida UI Einfaches Wiki (BBS)](https://github.com/yilongmd/zafrida-ui/blob/main/zafrida_ui_wiki_bbs_zh.md) (ein einfacheres Wiki)
**Ausführliches Nutzungstutorial**: [ZAFrida UI Ausführliches Nutzungstutorial Wiki](https://github.com/yilongmd/zafrida-ui/blob/main/ZAFridaUI_Wiki_zh.md)
## Effektdemonstration

Schnellstart
-----------------------------------
1. **Plugin installieren**: Suchen Sie im IDE-Plugin-Marketplace nach „ZAFrida" oder installieren Sie es von der Festplatte.
2. **Standardumgebung konfigurieren**: Standardmäßig wird der Python Interpreter des aktuellen PyCharm-Projekts verwendet; unter den globalen `Settings` -> `Tools` -> `ZAFrida` bleiben nur die Standardwerte für Werkzeugname/-pfad erhalten.
3. **Projekt erstellen**: Rechtsklick in der Projektansicht -> `New Frida Project`.
* Benötigt das Projekt eine andere Frida-Version, öffnen Sie die ZAFrida `Project Settings`, wählen Sie den Python-Interpreter oder das Umgebungsverzeichnis und klicken Sie auf `Test`.
4. **Skript schreiben/auswählen**: Wählen Sie im Run-Panel Ihre `agent.js` oder `agent.ts`.
5. **Hook-Debugging**:
* Gerät verbinden (USB oder Remote oder Gadget).
* Zielprozess oder Paketnamen auswählen.
* Auf **Run** klicken.
6. **Templates verwenden**: Wechseln Sie zum Tab `Templates` und haken Sie die gewünschten Hook-Funktionen an (z. B. „SSL Pinning Bypass"); der Code wird automatisch in Ihr Skript eingefügt.
7. **Skills-Automatisierung (optional)**: Standardmäßig deaktiviert. Gehen Sie zu `Settings/Preferences -> ZAFrida -> Skills HTTP API` und haken Sie `Enable Skills` an, um die lokale API automatisch zu starten (auch manuell `Start/Stop` möglich). CLI- und Template-Pfade:
* Skill und Haupt-CLI: `skills-template/zafrida-http-control/`
* Kompatibilitätsstarter für alten Pfad: `skills-cli/zafrida_skill_cli.py`
QR-Code der Austauschgruppe
-----------------------------------
<img src="https://assets.kitploit.com/production/public/readmes/11475/af2e178a9eee68ad3cbdf0c5b002b39f4c18f0128b73575324967291f19eeddc.jpg" alt="ZAFrida与逆向交流群二维码" width="260" />
Funktionsmerkmale
-----------------------------------
* **Geräte- und Prozessverwaltung**
Integriert `frida-ls-devices` und `frida-ps`, unterstützt das Aktualisieren der Geräteliste mit einem Klick sowie das Anzeigen laufender Prozesse, laufender Apps oder installierter Anwendungen.
* **Verbindung in mehreren Modi**
Vollständige Unterstützung der Modi **USB / Remote / Gadget**, mit benutzerdefiniertem Remote-Host und -Port, ohne manuelles Zusammensetzen komplexer Kommandozeilenparameter.
* **Interaktive Skriptausführung (Run / Attach)**
* Unterstützt die beiden Ausführungsaktionen **Run (standardmäßig Spawn)** und **Attach**, statt eines einfachen „Moduswechsels".
* Unterstützt **Force Stop** zum gewaltsamen Beenden der Zielanwendung.
* Integrierte Konsolen-Logausgabe, Logs werden automatisch im Projektverzeichnis `zafrida-logs/` gespeichert.
* **Rechtsklickmenü im JS-/TypeScript-Editor (wichtig)**
* Im Bearbeitungsbereich einer Frida-`.js`- oder `.ts`-Datei kann per Rechtsklick direkt gewählt werden:
* **Run Frida Script**: Führt die aktuelle Datei als Hauptskript aus (standardmäßig Spawn).
* **Attach Frida Script**: Injiziert die aktuelle Datei als Attach-Skript in den bereits laufenden Zielprozess.
* Vor der Ausführung wird die aktuelle Datei automatisch gespeichert und automatisch zum ZAFrida Project gewechselt, zu dem das Skript gehört.
* Geeignet für schnelle PoCs, Demo-Verifikation, den Gadget-Modus oder die sofortige Injektion in bereits laufende Prozesse.
* **Tastenkürzel**:
* Windows / Linux: `Ctrl + Alt + S`
* macOS: `⌘ + ⌥ + S`
* **Snippets-Einfügen per Rechtsklick im Editor**
* Im Rechtsklickmenü des JS-/TypeScript-Editors wird **ZAFrida Frida Snippets** angeboten.
* Häufig verwendete Frida-Codefragmente lassen sich mit einem Klick einfügen, z. B.:
* `Java.perform`-Wrapper-Struktur
* Java-Method-Hook-Template
* `Interceptor.attach` Native Hook
* Der Einfügevorgang folgt der IDE WriteCommandAction und kann sicher rückgängig gemacht/wiederhergestellt werden.
* **Dynamisches Template-System (Kerninnovation)**
* Integrierte gängige Android-/iOS-Hook-Templates (z. B. SSL Pinning Bypass, Method Hook, Native Hook).
* **Checkbox-Steuerung**: Anhaken fügt Code ein, Abhaken kommentiert den Code automatisch aus – kein manuelles Löschen oder Ändern nötig.
* Unterstützt benutzerdefinierte Templates mit Echtzeitvorschau des Template-Codes in der IDE.
* **Getrenntes Design von Run Script + Attach Script**
* Unterstützt das gleichzeitige Bestehen eines Haupt-**Run Script** und eines unabhängigen **Attach Script**.
* Geeignet, um „Hooks zur Startphase" und „Injektionslogik zur Laufzeit" zu entkoppeln, was komplexes Debugging und langfristige Wartung erleichtert.
* **Projektbasierte Konfiguration (ZAFrida Project)**
* Führt das Konzept des ZAFrida Project ein und speichert Gerät, Ziel, Skript, Attach Script, Verbindungsparameter usw. als vollständigen Arbeitskontext.
* Unterstützt in der Project View:
* `New Frida Project` zum Erstellen eines neuen Projekts
* `Select Frida Project` zum schnellen Wechseln des aktuell aktiven Projekts
* `Load Frida Project` zum Importieren eines vorhandenen Projektverzeichnisses
* Nach dem Projektwechsel werden UI-Status und Konfiguration automatisch wiederhergestellt.
* **Intelligente Auflösung der Python-/Frida-Umgebung**
* Standardmäßig wird das Python SDK des aktuellen PyCharm-Projekts aufgelöst; jedes ZAFrida Project kann Interpreter oder Umgebungsverzeichnis einzeln überschreiben.
* Unterstützt lokale system/pyenv-, venv/virtualenv-, Conda-, uv-, Poetry-, Pipenv- und Hatch-Umgebungen.
* Mehrere ZAFrida Projects können denselben Pfad zur gemeinsamen Nutzung einer Umgebung wählen, ohne venv kopieren zu müssen; ideal, um Frida-16/17-Umgebungen getrennt zu pflegen.
* Fehlt `frida-tools` in der aktuellen IDE-Umgebung oder der explizit angegebenen Projektumgebung, wird direkt ein Fehler gemeldet und nicht stillschweigend eine andere Version aus dem System-PATH verwendet; `Test` kann die tatsächliche Frida-Version anzeigen.
* Remote-Python-Interpreter wie SSH, Docker, Docker Compose, WSL können derzeit nicht für lokale Frida-Subprozesse verwendet werden.
* **Frida 17 / TypeScript**
* Dateiauswahl, Rechtsklick Run/Attach und Snippets unterstützen `.js` / `.ts`; die REPL von Frida 17 kompiliert `-l agent.ts` automatisch.
* Die integrierten Templates wurden auf die moderne Module/NativePointer-API von Frida 17 migriert und bleiben gleichzeitig in gängigen Frida-16-Umgebungen nutzbar.
* Die frida-tools REPL führt aus Kompatibilitätsgründen die Standard-Java/ObjC-Bridges mit; bei `import` von npm-/Drittanbieter-Modulen sollten Abhängigkeiten über `frida-create -t agent` oder eine gleichwertige Projektverwaltung eingebunden werden.
* **Lokale Automatisierungsschnittstelle Skills**
* Die lokale Skills HTTP API (standardmäßig deaktiviert) unterstützt Funktionserkennung, Projekt-/Python-Umgebung, Geräte und Prozesse, Run/Attach, Verlaufs-Loglisten und inkrementelles Log-Lesen auf Basis von Byte-Cursorn.
* Die Skill enthält einen begrenzten `wait-device` / `wait-session`-Wiederherstellungsablauf und unterscheidet zwischen sicher wiederholbaren Lesevorgängen und nicht automatisch wiederholbaren Nebenwirkungsoperationen.
* Aktivierung: `Settings/Preferences -> ZAFrida -> Skills HTTP API`, `Enable Skills` anhaken.
* Zugehörige CLI und Templates:
* `skills-template/zafrida-http-control/` (Haupt-Skill und CLI)
* `skills-cli/zafrida_skill_cli.py` (Kompatibilitätsstarter für alten Pfad)
Anwendungsszenarien
-----------------------------------
ZAFrida UI eignet sich für alle Szenarien des Reverse Engineerings mit Frida, insbesondere:
* Penetrationstests und Reverse-Engineering-Analyse von Android-/iOS-Apps.
* Debugging-Prozesse, bei denen häufig zwischen verschiedenen Hook-Skripten gewechselt werden muss.
* Entwickler, die gewohnt sind, mit einer IDE (PyCharm/IDEA) in gemischter Python-, JavaScript- und TypeScript-Entwicklung zu arbeiten.
Technische Dokumentation
-----------------------------------
- **Umgebungsanforderungen**:
- IntelliJ IDEA oder PyCharm (empfohlen 2024.3+)
- Lokal installiertes Python3 und `frida-tools` (`pip install frida-tools`)
- Sicherstellen, dass `frida`, `frida-ps`, `frida-ls-devices` im System-PATH liegen oder der Pfad in den Plugin-Einstellungen angegeben ist.
- **Problemfeedback**: [Github Issues](https://github.com/yilongmd/zafrida-ui/issues)
Projekt starten
-----------------------------------
1. Quellcode klonen: `git clone https://github.com/yilongmd/zafrida-ui.git`
2. Projekt mit IntelliJ IDEA öffnen.
3. Gradle-Task `runIde` ausführen, um die Debug-Umgebung zu starten.
Systemeffekte
-----------------------------------
##### Hauptoberfläche und Run-Panel (Run Panel)
> Bietet Geräteauswahl, Skriptauswahl, Konfiguration des Ausführungsmodus und Konsolenausgabe.

##### Dynamische Template-Verwaltung (Template Panel)
> Links Kategorie auswählen, in der Mitte Templates anhaken, rechts Code in Echtzeitvorschau. Die Checkboxen steuern direkt, ob der Skriptinhalt wirksam wird.

##### Einstellungsoberfläche (Settings)
> Unterstützt benutzerdefinierte Frida-Werkzeugpfade, Remote-Verbindungsadressen und Log-Konfiguration.

##### Projekt-Erstellungsassistent
> Schnelles Erstellen einer standardisierten Frida-Projektstruktur.

Technische Architektur
-----------------------------------
#### Entwicklungsumgebung
- Sprache: Java 21, Java, Build-Skripte verwenden Gradle Kotlin DSL
- Framework: IntelliJ Platform SDK
- Build-Werkzeug: Gradle
- Abhängigkeiten: `frida` `frida-tools` (Python environment)
Danksagung
-----------------------------------
Besonderer Dank gilt den folgenden Persönlichkeiten für ihre Unterstützung mit Frida-JS-Skriptvorlagen für dieses Projekt:
* **小佳**
* **Lane**
* **迷人**
Weitere Mitwirkende und Danksagungen finden Sie unter: [CONTRIBUTORS.md](https://github.com/yilongmd/zafrida-ui/blob/main/CONTRIBUTORS.md)