
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 पैनल में "डिवाइस" और "कनेक्शन मोड" को दो अलग पंक्तियों में विभाजित किया गया है: Device पंक्ति में केवल वास्तविक डिवाइस सूचीबद्ध होते हैं, Mode पंक्ति में USB / Remote / Gadget और एंडपॉइंट चुने जाते हैं। Remote/Gadget लूपबैक का adb पोर्ट फ़ॉरवर्डिंग, Force Stop, Open App हमेशा वर्तमान में चयनित फ़ोन पर लागू होते हैं, अब पुराने डिवाइस का गलत उपयोग नहीं होगा।
- पहली बार खोलने और डिवाइस रीफ़्रेश करने पर, चल रहे adb server को स्वचालित रूप से शुरू किया जाता है, अब मैन्युअल रूप से `adb devices` चलाने की आवश्यकता नहीं है।
- सहेजा गया डिवाइस ऑफ़लाइन होने पर "未连接" प्लेसहोल्डर दिखाया जाता है और संबंधित ऑपरेशन अवरुद्ध किए जाते हैं; केवल एक USB डिवाइस कनेक्ट होने पर स्वचालित रूप से उसका उपयोग किया जाता है और 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 तीनों कनेक्शन प्रक्रियाओं का पूर्ण समर्थन।
- स्थानीय HTTP API, CLI और चीनी Skill की डिवाइस रिकवरी, सत्र प्रतीक्षा और इंक्रीमेंटल लॉग क्षमताओं को सुदृढ़ किया गया है; डुप्लिकेट और अस्थिर MCP अडैप्टर परत को हटा दिया गया है।
परियोजना परिचय
-----------------------------------
<h3 align="center">PyCharm/IntelliJ के लिए विशेष रूप से डिज़ाइन किया गया Frida ग्राफ़िकल टूल</h3>
ZAFrida UI एक Frida ग्राफ़िकल ऑपरेशन प्लगइन है जो PyCharm और JetBrains श्रृंखला IDE में एकीकृत है। इसका उद्देश्य 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与逆向交流群二维码" width="260" />
विशेषताएँ
-----------------------------------
* **डिवाइस और प्रक्रिया प्रबंधन**
`frida-ls-devices` और `frida-ps` एकीकृत, एक-क्लिक डिवाइस सूची रीफ़्रेश का समर्थन, चल रही प्रक्रियाओं, चल रहे ऐप्स या इंस्टॉल किए गए ऐप्स को देखें।
* **बहु-मोड कनेक्शन**
**USB / Remote / Gadget** मोड का पूर्ण समर्थन, कस्टम रिमोट Host और Port का समर्थन, जटिल कमांड-लाइन पैरामीटर मैन्युअल रूप से जोड़ने की आवश्यकता नहीं।
* **इंटरैक्टिव स्क्रिप्ट निष्पादन (Run / Attach)**
* **Run (डिफ़ॉल्ट Spawn)** और **Attach** दोनों निष्पादन क्रियाओं का समर्थन, न कि केवल साधारण "मोड स्विचिंग"।
* **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, कनेक्शन पैरामीटर आदि को एक पूर्ण कार्य संदर्भ के रूप में सहेजा जाता है।
* 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 स्क्रिप्ट को बार-बार स्विच करने वाली डिबगिंग प्रक्रिया।
* Python, JavaScript और TypeScript मिश्रित विकास के लिए IDE (PyCharm/IDEA) का उपयोग करने के आदी इंजीनियर।
तकनीकी दस्तावेज़
-----------------------------------
- **वातावरण आवश्यकताएँ**:
- 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)