GhidrAssist
लेखक: Jason Tang
Ghidra में इंटरैक्टिव रिवर्स इंजीनियरिंग सहायता के लिए एक उन्नत LLM-संचालित प्लगइन।
विवरण
GhidrAssist, Ghidra में Large Language Models (LLMs) को एकीकृत करता है ताकि बाइनरी अन्वेषण और रिवर्स इंजीनियरिंग के लिए बुद्धिमान सहायता प्रदान की जा सके। यह किसी भी OpenAI v1-संगत API का समर्थन करता है, जिसमें स्थानीय मॉडल (Ollama, LM-Studio, Open-WebUI) और क्लाउड प्रदाता (OpenAI, Anthropic, Azure) शामिल हैं।
मुख्य विशेषताएँ
मुख्य कार्यक्षमता:
- कोड स्पष्टीकरण - डिसअसेंबली और डीकंपाइल्ड स्यूडो-C दोनों में फ़ंक्शन और निर्देशों की व्याख्या करें
- जोखिम स्तर, गतिविधि प्रोफ़ाइल और API उपयोग दिखाने वाला सुरक्षा विश्लेषण पैनल
- स्वतः अधिलेखन से उपयोगकर्ता-संपादन सुरक्षा के साथ संपादन योग्य सारांश
- इंटरैक्टिव चैट - स्थायी चैट इतिहास के साथ बहु-चरणीय संवादात्मक क्वेरी
- कस्टम क्वेरीज़ - वर्तमान फ़ंक्शन/स्थान से वैकल्पिक संदर्भ के साथ सीधी LLM क्वेरी
Graph-RAG ज्ञान प्रणाली:
- सिमेंटिक नॉलेज ग्राफ़ - बाइनरी विश्लेषण का पदानुक्रमित प्रतिनिधित्व
- 5-स्तरीय सिमेंटिक पदानुक्रम: स्टेटमेंट → ब्लॉक → फ़ंक्शन → मॉड्यूल → बाइनरी
- पूर्व-गणना किए गए LLM सारांश तेज़, LLM-मुक्त क्वेरी को सक्षम करते हैं
- JGraphT ग्राफ़ एल्गोरिदम के साथ SQLite स्थिरता
- सारांश और सुरक्षा एनोटेशन पर फुल-टेक्स्ट खोज (FTS5)
- कम्युनिटी डिटेक्शन - Leiden एल्गोरिदम के माध्यम से स्वचालित मॉड्यूल खोज
- संबंधित फ़ंक्शन को तार्किक मॉड्यूल में समूहित करता है
- सारांश के साथ पदानुक्रमित कम्युनिटी संरचना
- कॉन्फ़िगर करने योग्य गहराई के साथ विज़ुअल ग्राफ़ अन्वेषण
- सुरक्षा फ़ीचर निष्कर्षण - व्यापक सुरक्षा विश्लेषण
- नेटवर्क APIs: POSIX सॉकेट, WinSock, DNS, SSL/TLS, WinHTTP, WinINet
- फ़ाइल I/O APIs: POSIX, Windows, C लाइब्रेरी फ़ंक्शन
- क्रिप्टो APIs: OpenSSL, Windows क्रिप्टो, प्लेटफ़ॉर्म-विशिष्ट
- स्ट्रिंग पैटर्न: IP पते, URLs, डोमेन, फ़ाइल पथ, रजिस्ट्री कुंजियाँ
- जोखिम स्तर वर्गीकरण (LOW/MEDIUM/HIGH) और गतिविधि प्रोफ़ाइलिंग
- सिमेंटिक ग्राफ़ टैब - विज़ुअल नॉलेज ग्राफ़ इंटरफ़ेस
- N-हॉप गहराई अन्वेषण के साथ ग्राफ़ दृश्य
- सभी अनुक्रमित फ़ंक्शन की सूची दृश्य
- सारांशों में सिमेंटिक खोज
- एक-क्लिक पुनः-अनुक्रमण और सुरक्षा विश्लेषण
उन्नत क्षमताएँ:
- विस्तारित सोच/तर्क नियंत्रण - गुणवत्ता बनाम गति के व्यापार-बंद के लिए LLM तर्क गहराई समायोजित करें
- OpenAI o1/o3/o4, विस्तारित सोच वाले Claude, और स्थानीय तर्क मॉडल के लिए समर्थन
- कॉन्फ़िगर करने योग्य प्रयास स्तर: Low (तेज़), Medium (संतुलित), High (गहन)
- प्रति-प्रोग्राम स्थिरता - विभिन्न बाइनरी विभिन्न तर्क स्तरों का उपयोग कर सकते हैं
- प्रदाता-अज्ञेय कार्यान्वयन (Anthropic, OpenAI, Azure, LiteLLM, LMStudio, Ollama)
- ReAct एजेंटिक मोड - संरचित तर्क का उपयोग करके स्वायत्त जांच (Think-Act-Observe)
- LLM आपकी क्वेरी के आधार पर जांच चरण प्रस्तावित करता है
- टूडू सूचियों के माध्यम से प्रगति ट्रैकिंग के साथ व्यवस्थित टूल निष्पादन
- सभी जांच चरण दिखाने वाला पुनरावृत्ति इतिहास संरक्षण
- व्यापक उत्तर और प्रमुख निष्कर्षों के साथ अंतिम संश्लेषण
- सटीक मेट्रिक्स (पुनरावृत्तियाँ, टूल कॉल, अवधि)
- MCP एकीकरण - टूल-आधारित विश्लेषण के लिए Model Context Protocol क्लाइंट
- Ghidra-विशिष्ट टूल के लिए GhidrAssistMCP के साथ कार्य करता है
- स्वचालित फ़ंक्शन निष्पादन के साथ संवादात्मक टूल कॉलिंग
- SSE (Server-Sent Events) ट्रांसपोर्ट के लिए समर्थन
- फ़ंक्शन कॉलिंग - LLM स्वायत्त रूप से बाइनरी नेविगेट कर सकता है और विश्लेषण संशोधित कर सकता है
- फ़ंक्शन और वेरिएबल का नाम बदलें
- पते और क्रॉस-रेफरेंस पर नेविगेट करें
- Ghidra कमांड निष्पादित करें
- एक्शन्स टैब - बल्क विश्लेषण सुधार प्रस्तावित और लागू करें
- सुरक्षा भेद्यता का पता लगाना
- कोड गुणवत्ता विश्लेषण
- स्वचालित रीफैक्टरिंग सुझाव
- RAG (Retrieval Augmented Generation) - प्रासंगिक दस्तावेज़ों के साथ क्वेरी को बेहतर बनाएं
- कस्टम दस्तावेज़ीकरण, एक्सप्लॉइट नोट्स, आर्किटेक्चर संदर्भ जोड़ें
- Lucene-आधारित फुल-टेक्स्ट खोज
- क्वेरी में संदर्भ इंजेक्शन
- RLHF डेटासेट जनरेशन - मॉडल फाइन-ट्यूनिंग के लिए फीडबैक एकत्र करें
आर्किटेक्चर
प्लगइन एक मॉड्यूलर, सेवा-उन्मुख आर्किटेक्चर का उपयोग करता है:
मुख्य सेवाएँ:
- Query Modes: नियमित क्वेरी, MCP-संवर्धित क्वेरी, या पूर्ण एजेंटिक जांच
- ReAct Orchestrator: टूडू ट्रैकिंग और निष्कर्ष संचय के साथ स्वायत्त जांच लूप प्रबंधित करता है
- Conversational Tool Handler: बहु-चरणीय टूल कॉलिंग सत्र प्रबंधित करता है
- MCPToolManager: विशेष टूल के लिए बाहरी MCP सर्वर के साथ इंटरफ़ेस करता है
Graph-RAG बैकएंड:
- BinaryKnowledgeGraph: सिमेंटिक ज्ञान के लिए हाइब्रिड SQLite + JGraphT स्टोरेज
- GraphRAGEngine: पूर्व-गणना किए गए सारांश का उपयोग करने वाला LLM-मुक्त क्वेरी इंजन
- SemanticExtractor: बैच प्रोसेसिंग के साथ LLM-संचालित फ़ंक्शन सारांशीकरण
- SecurityFeatureExtractor: नेटवर्क, फ़ाइल I/O, और क्रिप्टो APIs के लिए स्थैतिक विश्लेषण
- CommunityDetector: मॉड्यूल खोज के लिए Leiden एल्गोरिदम कार्यान्वयन
डेटा परत:
- AnalysisDB: चैट इतिहास, RLHF फीडबैक और नॉलेज ग्राफ़ के लिए SQLite डेटाबेस
- SchemaMigrationRunner: पारदर्शी अपग्रेड के लिए संस्करणित डेटाबेस माइग्रेशन
- RAGEngine: कस्टम संदर्भ इंजेक्शन के लिए Lucene-संचालित दस्तावेज़ खोज
UI घटक:
- टैब-आधारित इंटरफ़ेस: Explain, Query, Actions, Semantic Graph, RAG Management, MCP Servers
- TabController के माध्यम से सेवा ऑर्केस्ट्रेशन
भविष्य का रोडमैप:
- एकत्रित RLHF डेटासेट का उपयोग करके मॉडल फाइन-ट्यूनिंग
- अतिरिक्त MCP टूल एकीकरण
- उन्नत एजेंटिक क्षमताएँ, मल्टी-एजेंट सहयोग
- एम्बेडिंग-आधारित समानता खोज
स्क्रीनशॉट
Screenshot
https://github.com/user-attachments/assets/bd79474a-c82f-4083-b432-96625fef1387
त्वरित आरंभ
- यदि आवश्यक हो, तो बाइनरी रिलीज़ ZIP संग्रह को Ghidra_Install/Extensions/Ghidra निर्देशिका में कॉपी करें।
- Ghidra लॉन्च करें -> File -> Install Extension -> GhidrAssist सक्षम करें।
- एक बाइनरी लोड करें और CodeBrowser लॉन्च करें।
- CodeBrowser -> File -> Configure -> Miscellaneous -> GhidrAssist सक्षम करें।
- CodeBrowser -> Window -> GhidraAssistPlugin।
- सुनिश्चित करें कि RLHF और RAG डेटाबेस पथ आपके वातावरण के लिए उपयुक्त हैं।
- API होस्ट को अपने पसंदीदा API प्रदाता पर इंगित करें और API कुंजी सेट करें।
- (वैकल्पिक) Analysis Options टैब में, विस्तारित सोच का समर्थन करने वाले मॉडल के लिए Reasoning Effort स्तर (None/Low/Medium/High) सेट करें।
- Windows मेनू में GhidrAssist विकल्प के साथ GhidrAssist खोलें और अन्वेषण शुरू करें।
LLM सेटअप
GhidrAssist किसी भी OpenAI v1-संगत API के साथ काम करता है। सेटअप विवरण प्रदाता-विशिष्ट हैं - यहाँ कुछ उपयोगी संसाधन दिए गए हैं:
स्थानीय LLM प्रदाता:
- LM Studio - GUI के साथ आसान स्थानीय मॉडल होस्टिंग
- Ollama - कमांड-लाइन स्थानीय मॉडल प्रबंधन
- Open-WebUI - स्थानीय मॉडल के लिए वेब इंटरफ़ेस
क्लाउड प्रदाता:
LiteLLM प्रॉक्सी (मल्टी-प्रोवाइडर गेटवे):
- LiteLLM - 100+ LLM प्रदाताओं के लिए यूनिफाइड API
- AWS Bedrock, Google Vertex AI, Azure और कई अन्य का समर्थन करता है
- GhidrAssist सेटिंग्स में प्रदाता प्रकार के रूप में "LiteLLM" चुनें
- उचित मैसेज फ़ॉर्मेटिंग के लिए स्वचालित मॉडल फैमिली पहचान
अनुशंसित मॉडल
एजेंटिक मोड के लिए (मजबूत तर्क और टूल उपयोग की आवश्यकता होती है):
- क्लाउड: GPT-5.1, Claude Sonnet 4.5
- स्थानीय: GPT-OSS, Llama 3.3 70B, DeepSeek-R1 70B, Qwen2.5 72B
विस्तारित सोच/तर्क समर्थन वाले मॉडल:
- OpenAI: o1-preview, o1-mini, o3-mini, o4-mini, gpt-5 (
reasoning_effort पैरामीटर का उपयोग करें)
- Anthropic: Claude Sonnet 4.5, Claude Opus 4.5, Claude Haiku 4.5, Claude Opus 4.1/4, Claude Sonnet 4 (
thinking.budget_tokens पैरामीटर का उपयोग करें)
- स्थानीय: Ollama/LMStudio के माध्यम से openai/gpt-oss-20b (प्रयास स्तरों का समर्थन करता है)
तर्क प्रयास दिशानिर्देश:
- Low: त्वरित विश्लेषण, न्यूनतम सोच टोकन (~5-10s, कम लागत)
- Medium: संतुलित तर्क गहराई (~15-30s, मध्यम लागत)
- High: गहन सुरक्षा विश्लेषण (~30-60s, 2x लागत, भेद्यता खोज के लिए अनुशंसित)
नोट: एजेंटिक मोड के लिए मजबूत फ़ंक्शन कॉलिंग और बहु-चरणीय तर्क क्षमताओं वाले मॉडल की आवश्यकता होती है। छोटे मॉडल जटिल जांच में संघर्ष कर सकते हैं। विस्तारित सोच वैकल्पिक है लेकिन जटिल रिवर्स इंजीनियरिंग कार्यों के लिए विश्लेषण गुणवत्ता में काफी सुधार कर सकती है।
टूल-आधारित विश्लेषण के लिए GhidrAssistMCP का उपयोग
GhidrAssistMCP MCP टूल प्रदान करता है जो LLM को Ghidra की विश्लेषण क्षमताओं के साथ सीधे इंटरैक्ट करने की अनुमति देता है।
सेटअप
-
MCP सर्वर प्रारंभ करें
-
GhidrAssist कॉन्फ़िगर करें:
- Tools → GhidrAssist Settings → MCP Servers टैब खोलें
- सर्वर जोड़ें:
http://127.0.0.1:8081 को GhidrAssistMCP के रूप में SSE ट्रांसपोर्ट प्रकार के साथ
-
क्वेरी में MCP सक्षम करें:
- Custom Query टैब में, "Use MCP" चेक करें
- स्वायत्त जांच मोड के लिए वैकल्पिक रूप से "Agentic" सक्षम करें
उपयोग मोड
नियमित MCP क्वेरी:
- "Use MCP" चेकबॉक्स सक्षम करें
- "वर्तमान फ़ंक्शन क्या करता है?" जैसे प्रश्न पूछें
- LLM डीकंपिलेशन, क्रॉस-रेफरेंस आदि प्राप्त करने के लिए टूल कॉल कर सकता है
एजेंटिक मोड (अनुशंसित):
- "Use MCP" और "Agentic" दोनों चेकबॉक्स सक्षम करें
- "इस फ़ंक्शन में भेद्यताएँ खोजें" या "कॉल ग्राफ़ का विश्लेषण करें" जैसे जटिल प्रश्न पूछें
- ReAct एजेंट निम्न कार्य करेगा:
- टूडू सूची के रूप में जांच चरण प्रस्तावित करना
- जानकारी एकत्र करने के लिए व्यवस्थित रूप से टूल निष्पादित करना
- प्रगति ट्रैक करना और निष्कर्ष संचित करना
- साक्ष्य के साथ व्यापक उत्तर संश्लेषित करना
उदाहरण क्वेरी:
- "इस फ़ंक्शन में कौन-सी सुरक्षा भेद्यताएँ मौजूद हैं?"
- "उपयोगकर्ता इनपुट से इस कॉल तक डेटा प्रवाह का पता लगाएं"
- "ग्लोबल वेरिएबल X को संशोधित करने वाले सभी फ़ंक्शन खोजें"
- "वर्तमान फ़ंक्शन में त्रुटि हैंडलिंग का विश्लेषण करें"
सिमेंटिक ग्राफ़ का उपयोग (Graph-RAG)
सिमेंटिक ग्राफ़ टैब हर क्वेरी के लिए LLM कॉल की आवश्यकता के बिना बाइनरी विश्लेषण परिणामों का अन्वेषण करने के लिए एक नॉलेज ग्राफ़ इंटरफ़ेस प्रदान करता है।
आरंभ करना
-
बाइनरी को अनुक्रमित करें:
- सिमेंटिक ग्राफ़ टैब खोलें
- संरचनात्मक संबंध निकालने के लिए "ReIndex Binary" पर क्लिक करें
- LLM सारांश उत्पन्न करने के लिए "Semantic Analysis" पर क्लिक करें (API की आवश्यकता है)
- प्रगति स्टेटस बार में दिखाई जाती है
-
ग्राफ़ का अन्वेषण करें:
- सूची दृश्य: सारांश और सुरक्षा फ़्लैग के साथ सभी अनुक्रमित फ़ंक्शन ब्राउज़ करें
- ग्राफ़ दृश्य: कॉन्फ़िगर करने योग्य N-हॉप गहराई के साथ कॉल संबंधों को विज़ुअलाइज़ करें
- खोज दृश्य: सारांश और सुरक्षा एनोटेशन में फुल-टेक्स्ट खोज
-
सुरक्षा विश्लेषण:
- सुरक्षा-प्रासंगिक फ़ीचर स्कैन करने के लिए "Security Analysis" पर क्लिक करें
- परिणामों में शामिल हैं: नेटवर्क APIs, फ़ाइल I/O, क्रिप्टो उपयोग, स्ट्रिंग पैटर्न
- जोखिम स्तर (LOW/MEDIUM/HIGH) पहचानी गई सुविधाओं के आधार पर निर्धारित किए जाते हैं
Explain टैब एकीकरण
Explain टैब में किसी फ़ंक्शन को देखते समय:
- यदि फ़ंक्शन अनुक्रमित है, तो पूर्व-गणना किया गया सारांश तुरंत दिखाया जाता है
- सुरक्षा पैनल प्रदर्शित करता है: जोखिम स्तर, गतिविधि प्रोफ़ाइल, उपयोग किए गए APIs
- सारांश संशोधित करने के लिए "Edit" पर क्लिक करें (स्वतः अधिलेखन से सुरक्षित)
- LLM के साथ सारांश पुनः उत्पन्न करने के लिए "Refresh" का उपयोग करें
लाभ
- तेज़ क्वेरी: पूर्व-गणना किए गए सारांश बार-बार की क्वेरी के लिए LLM विलंबता को समाप्त करते हैं
- ऑफ़लाइन विश्लेषण: API कनेक्टिविटी के बिना अनुक्रमित डेटा ब्राउज़ करें
- सुरक्षा फोकस: सुरक्षा-प्रासंगिक कोड पैटर्न का स्वचालित पता लगाना
- मॉड्यूल खोज: कम्युनिटी डिटेक्शन संबंधित फ़ंक्शन को स्वचालित रूप से समूहित करता है
होमपेज
https://symgraph.ai
न्यूनतम संस्करण
इस प्लगइन के लिए Ghidra के निम्नलिखित न्यूनतम संस्करण की आवश्यकता है:
लाइसेंस
यह प्लगइन MIT लाइसेंस के अंतर्गत जारी किया गया है।