
PyCharm / JetBrains IDE 内の Frida UI ツールウィンドウ。
中文 | [English](https://github.com/yilongmd/zafrida-ui/blob/main/README.en-US.md)

ZAFrida UI - PyCharm Frida Plugin
===============
現在のバージョン: 0.3.8
[](LICENSE)
[](https://github.com/yilongmd/zafrida-ui)
[](https://plugins.jetbrains.com/)
[](https://github.com/yilongmd/zafrida-ui)
## 0.3.8 主な更新
- Session パネルで「デバイス」と「接続モード」を 2 行の独立した選択に分離:Device 行には実デバイスのみを表示し、Mode 行で USB / Remote / Gadget とエンドポイントを選択します。Remote/Gadget ループバックの adb ポートフォワーディング、Force Stop、Open App は常に現在選択中の端末に対して作用し、過去のデバイスを誤って使用することがなくなりました。
- 初回起動時およびデバイス更新時に、起動していない adb server を自動的に立ち上げるため、手動で `adb devices` を実行する必要がなくなりました。
- 保存されたデバイスがオンラインでない場合は「未接続」プレースホルダーを表示し、関連操作をブロックします。USB デバイスが 1 台だけ接続されている場合は自動的にそれを使用し、Console に通知します。
- Mode 行の下に実際に実行される adb/frida ルートを表示します。Gadget モードでは Target パッケージ名は読み取り専用ですが、選択してコピーできます。
- HTTP API の `/state` に `connection` 解析結果を追加;`device-select --host` は引き続き使用可能ですが非推奨となり、エンドポイントには `mode-set --host/--port` を使用してください。
## 0.3.7 主な更新
- 各 ZAFrida Project で Python/Frida 環境を個別に選択または共有でき、デフォルトでは現在の PyCharm プロジェクトインタープリターを使用し、venv、Conda、uv、Poetry、Pipenv、Hatch などのローカル環境をサポートします。
- Session UI と Project Settings を再設計し、プラグイン、Python、Frida のバージョン情報を完全に表示するとともに、適応型でドラッグ可能なログパネルとセッション状態を最適化しました。
- `.js` / `.ts`、Frida 16/17、マルチプロジェクト環境の切り替え、および USB、Remote、Gadget の 3 つの接続フローを完全にサポートします。
- ローカル HTTP API、CLI、中国語 Skill のデバイス復旧、セッション待機、増分ログ機能を強化;重複して不安定な MCP アダプターレイヤーを削除しました。
プロジェクト紹介
-----------------------------------
<h3 align="center">PyCharm/IntelliJ 専用に設計された Frida グラフィカルツール</h3>
ZAFrida UI は、PyCharm および JetBrains シリーズ IDE に統合された Frida グラフィカル操作プラグインです。Frida のコマンドライン操作が煩雑で、スクリプト管理が混乱しやすいという問題を解決することを目的としており、デバイス、プロセス、スクリプト、ログを管理するための完全な **UI インタラクション画面** を提供します。
核心的なハイライトは、その **「チェックボックス式」テンプレート管理システム** です。ユーザーはチェックを入れる/外すことで、コードスニペットをメインスクリプトに動的に挿入したりコメントアウトしたりでき、「積み木式」の Hook スクリプト組み立てを実現します。同時に、プラグインには完全な **プロジェクト化管理** (`zafrida-project.xml`) が組み込まれており、マルチデバイス、マルチ環境設定の素早い切り替えをサポートします。
ZAFrida は Frida を置き換えるものではなく、`frida-tools` の強力な UI シェルとして、既存の Python および Frida 環境とシームレスに連携します。
**簡易版 Wiki**: [ZAFrida UI 簡易 Wiki (BBS)](https://github.com/yilongmd/zafrida-ui/blob/main/zafrida_ui_wiki_bbs_zh.md)(これはより簡易な Wiki です)
**詳細使用チュートリアル**: [ZAFrida UI 詳細使用チュートリアル Wiki](https://github.com/yilongmd/zafrida-ui/blob/main/ZAFridaUI_Wiki_zh.md)
## デモ

クイックスタート
-----------------------------------
1. **プラグインのインストール**: IDE プラグインマーケットで "ZAFrida" を検索するか、ディスクからインストールします。
2. **デフォルト環境の設定**: デフォルトでは現在の PyCharm プロジェクトの Python Interpreter を使用します。グローバル `Settings` -> `Tools` -> `ZAFrida` にはツール名/パスのデフォルト値のみが保持されます。
3. **プロジェクトの作成**: プロジェクトビューで右クリック -> `New Frida Project`。
* そのプロジェクトで異なる Frida バージョンが必要な場合は、ZAFrida `Project Settings` を開き、Python インタープリターまたは環境ディレクトリを選択して `Test` をクリックします。
4. **スクリプトの作成/選択**: Run パネルで `agent.js` または `agent.ts` を選択します。
5. **Hook デバッグ**:
* デバイスに接続 (USB または Remote または Gadget)。
* ターゲットプロセスまたはパッケージ名を選択。
* **Run** をクリック。
6. **テンプレートの使用**: `Templates` タブに切り替え、必要な Hook 機能(例:"SSL Pinning Bypass")にチェックを入れると、コードが自動的にスクリプトに注入されます。
7. **Skills 自動化(オプション)**: デフォルトでは無効。`Settings/Preferences -> ZAFrida -> Skills HTTP API` に移動し、`Enable Skills` にチェックを入れるとローカル API を自動起動できます(手動で `Start/Stop` も可能)。CLI とテンプレートの場所:
* Skill とメイン CLI:`skills-template/zafrida-http-control/`
* 旧パス互換ランチャー:`skills-cli/zafrida_skill_cli.py`
交流グループ QR コード
-----------------------------------
<img src="https://assets.kitploit.com/production/public/readmes/11475/af2e178a9eee68ad3cbdf0c5b002b39f4c18f0128b73575324967291f19eeddc.jpg" alt="ZAFridaとリバース交流グループQRコード" width="260" />
機能特性
-----------------------------------
* **デバイスとプロセスの管理**
`frida-ls-devices` と `frida-ps` を統合し、ワンクリックでデバイスリストを更新、実行中のプロセス、実行中の App、またはインストール済みアプリを表示できます。
* **マルチモード接続**
**USB / Remote / Gadget** モードを完全にサポートし、カスタムのリモート Host と Port をサポート、複雑なコマンドラインパラメータを手動で組み立てる必要がありません。
* **インタラクティブスクリプト実行(Run / Attach)**
* 単純な「モード切り替え」ではなく、**Run(デフォルト Spawn)** と **Attach** の 2 つの実行アクションをサポート。
* **Force Stop** によるターゲットアプリの強制停止をサポート。
* コンソールログ出力を内蔵し、ログをプロジェクトディレクトリ `zafrida-logs/` に自動保存。
* **JS / TypeScript エディター右クリックメニュー(重要)**
* Frida の `.js` または `.ts` ファイル編集エリアで右クリックすると、直接選択できます:
* **Run Frida Script**:現在のファイルをメインスクリプトとして実行(デフォルト Spawn)。
* **Attach Frida Script**:現在のファイルをアタッチスクリプトとして実行中のターゲットプロセスに注入。
* 実行前に現在のファイルを自動保存し、スクリプトが属する ZAFrida Project に自動的に切り替えます。
* 迅速な PoC、Demo 検証、Gadget モード、または実行中プロセスへの即時注入に適しています。
* **ショートカットキー**:
* Windows / Linux:`Ctrl + Alt + S`
* macOS:`⌘ + ⌥ + S`
* **エディター右クリック Snippets 挿入**
* JS / TypeScript エディターの右クリックメニューに **ZAFrida Frida Snippets** を提供。
* よく使う Frida コードスニペットをワンクリックで挿入、例えば:
* `Java.perform` ラップ構造
* Java メソッド Hook テンプレート
* `Interceptor.attach` Native Hook
* 挿入プロセスは IDE WriteCommandAction に従い、安全に元に戻す/やり直しが可能。
* **動的テンプレートシステム(核心的イノベーション)**
* Android / iOS のよく使う Hook テンプレート(SSL Pinning Bypass、Method Hook、Native Hook など)を内蔵。
* **チェックボックス制御**:チェックを入れるとコードを挿入、チェックを外すと自動的にコードをコメントアウト、手動で削除・変更する必要がありません。
* カスタムテンプレートをサポートし、IDE 内でテンプレートコードをリアルタイムプレビュー可能。
* **Run Script + Attach Script 分離設計**
* メインの **Run Script** と独立した **Attach Script** の共存をサポート。
* 「起動期 Hook」と「実行期注入ロジック」を分離するのに適しており、複雑なデバッグと長期的なメンテナンスが容易。
* **プロジェクト化設定(ZAFrida Project)**
* ZAFrida Project の概念を導入し、デバイス、ターゲット、スクリプト、Attach Script、接続パラメータなどを 1 つの完全な作業コンテキストとして保存。
* Project View で以下をサポート:
* `New Frida Project` で新規プロジェクトを作成
* `Select Frida Project` で現在アクティブなプロジェクトを素早く切り替え
* `Load Frida Project` で既存のプロジェクトディレクトリをインポート
* プロジェクト切り替え後、UI 状態と設定は自動的に復元されます。
* **スマートな Python / Frida 環境解決**
* デフォルトでは現在の PyCharm プロジェクトの Python SDK を解決;各 ZAFrida Project でインタープリターまたは環境ディレクトリを個別に上書き可能。
* ローカルの system/pyenv、venv/virtualenv、Conda、uv、Poetry、Pipenv、Hatch 環境をサポート。
* 複数の ZAFrida Project で同じパスを選択して環境を共有でき、venv をコピーする必要がありません;Frida 16/17 環境をそれぞれ維持するのに適しています。
* 現在の IDE 環境または明示的なプロジェクト環境に `frida-tools` がない場合は直接エラーとなり、システム PATH 内の別バージョンを暗黙的に使用することはありません;`Test` で実際の Frida バージョンを表示できます。
* SSH、Docker、Docker Compose、WSL などのリモート Python Interpreter は、現時点ではローカル Frida サブプロセスには使用できません。
* **Frida 17 / TypeScript**
* ファイル選択、右クリック Run/Attach、Snippets は `.js` / `.ts` をサポート;Frida 17 の REPL は `-l agent.ts` を自動的にコンパイルします。
* 内蔵テンプレートは Frida 17 のモダンな Module/NativePointer API に移行済みで、Frida 16 の一般的な環境も引き続き利用可能です。
* frida-tools REPL は互換性のために標準の Java/ObjC bridges を携帯します;npm/サードパーティモジュールの `import` を使用する場合は、`frida-create -t agent` または同等のプロジェクト管理で依存関係を管理してください。
* **Skills ローカル自動化インターフェース**
* ローカル Skills HTTP API(デフォルト無効)は、機能検出、プロジェクト/Python 環境、デバイスとプロセス、Run/Attach、履歴ログリスト、およびバイトカーソルベースの増分ログ読み取りをサポートします。
* Skill には境界付きの `wait-device` / `wait-session` 復旧フローが内蔵されており、安全に再試行可能な読み取りと自動再生不可の副作用操作を区別します。
* 有効化方法:`Settings/Preferences -> ZAFrida -> Skills HTTP API` で `Enable Skills` にチェックを入れます。
* 付属 CLI とテンプレート:
* `skills-template/zafrida-http-control/`(メイン Skill と CLI)
* `skills-cli/zafrida_skill_cli.py`(旧パス互換ランチャー)
適用シーン
-----------------------------------
ZAFrida UI は Frida を使用したリバースエンジニアリングのあらゆるシーンに適しており、特に:
* Android / iOS App のペネトレーションテストとリバース分析。
* 異なる Hook スクリプトを頻繁に切り替える必要があるデバッグプロセス。
* IDE (PyCharm/IDEA) を使用して Python、JavaScript、TypeScript の混合開発を行うことに慣れているエンジニア。
技術ドキュメント
-----------------------------------
- **環境要件**:
- IntelliJ IDEA または PyCharm (2024.3+ を推奨)
- ローカルに Python3 および `frida-tools` がインストール済み (`pip install frida-tools`)
- `frida`, `frida-ps`, `frida-ls-devices` がシステム PATH にあるか、プラグイン設定でパスを指定していることを確認。
- **問題フィードバック**: [Github Issues](https://github.com/yilongmd/zafrida-ui/issues)
プロジェクトの起動
-----------------------------------
1. ソースをクローン: `git clone https://github.com/yilongmd/zafrida-ui.git`
2. IntelliJ IDEA でプロジェクトを開きます。
3. Gradle タスク `runIde` を実行してデバッグ環境を起動します。
システム効果
-----------------------------------
##### メイン画面と実行パネル (Run Panel)
> デバイス選択、スクリプト選択、実行モード設定、コンソール出力を提供します。

##### 動的テンプレート管理 (Template Panel)
> 左側でカテゴリを選択し、中央でテンプレートにチェックを入れ、右側でコードをリアルタイムプレビューします。チェックボックスがスクリプト内容の有効/無効を直接制御します。

##### 設定画面 (Settings)
> カスタムの Frida ツールパス、リモート接続アドレス、ログ設定をサポートします。

##### プロジェクト作成ウィザード
> 標準化された Frida プロジェクト構造を素早く作成します。

技術アーキテクチャ
-----------------------------------
#### 開発環境
- 言語: Java 21, Java, ビルドスクリプトは Gradle Kotlin DSL を使用
- フレームワーク: IntelliJ Platform SDK
- ビルドツール: Gradle
- 依存関係: `frida` `frida-tools` (Python environment)
謝辞
-----------------------------------
以下の方々が本プロジェクトに Frida JS スクリプトテンプレートを提供してくださったことに特別な感謝を捧げます:
* **小佳**
* **Lane**
* **迷人**
その他の貢献者と謝辞情報については:[CONTRIBUTORS.md](https://github.com/yilongmd/zafrida-ui/blob/main/CONTRIBUTORS.md) をご覧ください。