
ghidra-mcp v6.0.0
एमसीपी सर्वर जो घिड्रा के रिवर्स इंजीनियरिंग को एआई उपकरणों से जोड़ता है: डिकंपाइलेशन, पी-कोड एमुलेशन, लाइव डिबगिंग, डेटा प्रवाह विश्लेषण, बैच संचालन और कन्वेंशन प्रवर्तन के लिए 256 उपकरण, हेडलेस और जीयूआई मोड में।
Ghidra MCP Server
यदि आपको यह उपयोगी लगे, तो कृपया ⭐ स्टार करें — इससे दूसरों को इसे खोजने में मदद मिलती है!
यदि घिड्रा एमसीपी आपका समय बचाता है, तो परियोजना को प्रायोजित करने पर विचार करें। एकमुश्त और आवर्ती दोनों प्रकार का समर्थन संगतता अपडेट, उत्पादन सुदृढ़ीकरण, दस्तावेज़ीकरण और नई टूलिंग के लिए धन जुटाने में मदद करता है।
एक प्रोडक्शन-रेडी मॉडल कॉन्टेक्स्ट प्रोटोकॉल (MCP) सर्वर जो घिड्रा की शक्तिशाली रिवर्स इंजीनियरिंग क्षमताओं को आधुनिक AI टूल्स और ऑटोमेशन फ्रेमवर्क से जोड़ता है। 271 MCP टूल्स, युद्ध-परीक्षित AI वर्कफ़्लो, और उपलब्ध सबसे व्यापक घिड्रा-एमसीपी एकीकरण — अब P-कोड एमुलेशन, लाइव डिबगर एकीकरण, और PCode-ग्राफ डेटा प्रवाह विश्लेषण सहित।
क्यों घिड्रा एमसीपी?
अधिकांश घिड्रा एमसीपी कार्यान्वयन आपको कुछ रीड-ओनली टूल्स देते हैं और बस इतना ही। यह परियोजना अलग है — इसे एक रिवर्स इंजीनियर ने बनाया है जो इसे डेमो के रूप में नहीं, बल्कि वास्तविक बाइनरी पर दैनिक रूप से उपयोग करता है।
- 271 MCP टूल्स — किसी भी प्रतिस्पर्धी कार्यान्वयन से 3 गुना अधिक। सिर्फ पढ़ने के संचालन नहीं — नाम बदलने, टाइप करने, टिप्पणी करने, संरचना निर्माण, स्क्रिप्ट निष्पादन, पी-कोड एमुलेशन और लाइव डिबगिंग के लिए पूर्ण लेखन पहुंच।
- युद्ध-परीक्षित AI वर्कफ़्लो — सैकड़ों फ़ंक्शनों में परिष्कृत प्रलेखित वर्कफ़्लो (V5)। चरण-दर-चरण संकेत, हंगेरियन नोटेशन संदर्भ, बैच प्रोसेसिंग गाइड और अनाथ कोड खोज शामिल हैं।
- प्रोडक्शन-ग्रेड विश्वसनीयता — परमाणु लेनदेन, बैच संचालन (93% API कॉल में कमी), कॉन्फ़िगरेबल टाइमआउट और सुरुचिपूर्ण त्रुटि हैंडलिंग। कोई मूक विफलता नहीं।
- क्रॉस-बाइनरी दस्तावेज़ीकरण स्थानांतरण — SHA-256 फ़ंक्शन हैश मिलान स्वचालित रूप से बाइनरी संस्करणों में दस्तावेज़ीकरण प्रसारित करता है। एक बार दस्तावेज़ीकृत करें, हर जगह लागू करें।
- पूर्ण घिड्रा सर्वर एकीकरण — साझा घिड्रा सर्वर से कनेक्ट करें, रिपॉजिटरी प्रबंधित करें, संस्करण नियंत्रण, चेकआउट/चेकइन वर्कफ़्लो और बहु-उपयोगकर्ता सहयोग।
- हेडलेस और GUI मोड — घिड्रा GUI के साथ या बिना चलाएं। CI/CD पाइपलाइनों और बड़े पैमाने पर स्वचालित विश्लेषण के लिए डॉकर-रेडी।
- डिज़ाइन द्वारा परिप्रेक्ष्यपूर्ण — v5.0 नामकरण परंपराओं, प्रकार सुरक्षा और दस्तावेज़ीकरण मानकों को टूल लेयर में स्थानांतरित करता है। AI एजेंट और मानव इंजीनियर हर प्रॉम्प्ट में स्टाइल गाइड के बिना सुसंगत आउटपुट उत्पन्न करते हैं।
परंपरा प्रवर्तन
आप वहां रहे हैं: एक परियोजना में छह महीने बाद आपको एक ही कोडबेस में ProcessItem, process_items, handleItem, और ItemProc मिलते हैं — चार फ़ंक्शन एक ही काम कर रहे हैं, चार अलग-अलग सत्रों या इंजीनियरों द्वारा बिना किसी साझा अनुबंध के नामित। इसे ठीक करने में आवश्यकता से अधिक समय लगता है, और समस्या फिर से होगी।
v5.0 परंपराओं को "याद रखने वाली चीजों" से टूल लेयर में स्थानांतरित करता है, जहां उन्हें वास्तव में लागू किया जा सकता है।
| स्तर | व्यवहार | उदाहरण |
|---|---|---|
| स्वचालित-सुधार | चुपचाप लागू किया गया | uint32 पर count फ़ील्ड → सेव पर स्वचालित रूप से उपसर्ग dwCount |
| चेतावनी | परिवर्तन होता है, चेतावनी वापस की जाती है | processData → "नाम क्रिया के साथ PascalCase होना चाहिए: ProcessData" |
| अस्वीकार | परिवर्तन स्पष्टीकरण के साथ अवरुद्ध | undefined → undefined प्रकार परिवर्तन → "कोई-ऑप अस्वीकृत, प्रकार अपरिवर्तित" |
AI एजेंटों के लिए, इसका अर्थ है हर सत्र, हर मॉडल, हर रन में सुसंगत आउटपुट — बिना हर प्रॉम्प्ट में स्टाइल गाइड चिपकाए। टूल नियमों को जानता है; मॉडल को बस कॉल करना है।
टीमों के लिए, यह समीक्षा टिप्पणी के उस पूरे वर्ग को समाप्त करता है जो कहता है "यह हमारी नामकरण परंपरा नहीं है।" परंपरा मध्यस्थता कोड समीक्षा में नहीं, बल्कि टूल में रहती है।
बड़े पैमाने पर एकल कार्य के लिए, analyze_function_completeness आपको 0–100% का स्कोर देता है जो ईमानदारी से मापता है: संरचनात्मक कटौती (अनफिक्सेबल कंपाइलर आर्टिफैक्ट) आपके प्रभावी स्कोर में माफ कर दी जाती है, लॉग-स्केलिंग एक खराब श्रेणी को बाकी सब कुछ दफनाने से रोकती है, और स्तरीय प्लेट टिप्पणी गुणवत्ता का मतलब है कि आप जानते हैं कि वास्तव में क्या गायब है और क्यों।
🌟 विशेषताएँ
कोर MCP एकीकरण
- पूर्ण MCP संगतता — मॉडल कॉन्टेक्स्ट प्रोटोकॉल का पूर्ण कार्यान्वयन
- 271 MCP टूल्स — बाइनरी विश्लेषण के हर पहलू को कवर करने वाली व्यापक API सतह
- प्रोडक्शन-रेडी विश्वसनीयता — परमाणु लेनदेन, बैच संचालन, कॉन्फ़िगरेबल टाइमआउट
- रीयल-टाइम विश्लेषण — घिड्रा के विश्लेषण इंजन के साथ लाइव एकीकरण
संगतता नोट: MCP टूल नाम GitHub Copilot CLI और CAPI सत्यापन के लिए सामान्यीकृत किए जाते हैं। एक्सपोज़्ड टूल नाम केवल लोअरकेस अक्षरों, अंकों, अंडरस्कोर और हाइफ़न का उपयोग करते हैं; स्थिर ब्रिज टूल्स के साथ टकराव से बचने के लिए
/debugger/statusजैसे नेस्टेड HTTP पथ को आवश्यकता पड़ने परdebugger_status_2जैसे नामों से विज्ञापित किया जाता है।
बाइनरी विश्लेषण क्षमताएँ
- फ़ंक्शन विश्लेषण — डीकंपाइलेशन, कॉल ग्राफ, क्रॉस-रेफरेंस, पूर्णता स्कोरिंग
- डेटा प्रवाह विश्लेषण — किसी भी वेरिएबल या रजिस्टर से PCode-ग्राफ मान प्रसार (आगे/पीछे)
- डेटा संरचना खोज — फ़ील्ड विश्लेषण और नामकरण सुझावों के साथ संरचना/यूनियन/एनम निर्माण
- स्ट्रिंग निष्कर्षण — रेगेक्स खोज, गुणवत्ता फ़िल्टरिंग और स्ट्रिंग-एंकर्ड फ़ंक्शन खोज
- आयात/निर्यात विश्लेषण — सिंबल टेबल, बाह्य स्थान, क्रमांकित आयात समाधान
- मेमोरी और डेटा निरीक्षण — रॉ मेमोरी रीड, बाइट पैटर्न खोज, ऐरे सीमा पहचान
- क्रॉस-बाइनरी दस्तावेज़ीकरण — फ़ंक्शन हैश मिलान और संस्करणों में दस्तावेज़ीकरण प्रसार
गतिशील विश्लेषण (v5.4.0)
- P-कोड एमुलेशन — घिड्रा के
EmulatorHelperके माध्यम से किसी भी फ़ंक्शन को अलग-थलग चलाएं; मिलीसेकंड में ब्रूट-फोर्स API हैश समाधान - लाइव डिबगर एकीकरण — घिड्रा के TraceRmi फ्रेमवर्क पर 17 Java एंडपॉइंट + 22 Python ब्रिज टूल्स (Windows PE पर dbgeng, अन्यथा gdb/lldb): अटैच, स्टेप, ब्रेकपॉइंट, रजिस्टर, मेमोरी रीड, नॉन-ब्रेकिंग फ़ंक्शन ट्रेसिंग, ASLR-जागरूक स्थैतिक↔गतिशील एड्रेस अनुवाद
AI-संचालित रिवर्स इंजीनियरिंग वर्कफ़्लो
- फ़ंक्शन दस्तावेज़ीकरण वर्कफ़्लो V5 — हंगेरियन नोटेशन, प्रकार ऑडिटिंग और स्वचालित सत्यापन स्कोरिंग के साथ पूर्ण फ़ंक्शन दस्तावेज़ीकरण के लिए 7-चरणीय प्रक्रिया
- बैच दस्तावेज़ीकरण — एक साथ कई फ़ंक्शनों का दस्तावेज़ीकरण करने के लिए समांतर उप-एजेंट प्रेषण
- अनाथ कोड खोज — स्वचालित स्कैनर ज्ञात कोड के बीच अंतराल में अज्ञात फ़ंक्शन ढूंढता है
- डेटा प्रकार जांच — संरचना खोज और फ़ील्ड विश्लेषण के लिए व्यवस्थित वर्कफ़्लो
- क्रॉस-संस्करण मिलान — विभिन्न बाइनरी संस्करणों में हैश-आधारित फ़ंक्शन मिलान
विकास और ऑटोमेशन
- घिड्रा स्क्रिप्ट प्रबंधन — पूरी तरह से MCP के माध्यम से घिड्रा स्क्रिप्ट बनाएं, चलाएं, अपडेट करें और हटाएं
- मल्टी-प्रोग्राम समर्थन — कई खुले प्रोग्रामों के बीच स्विच करें और उनकी तुलना करें
- बैच संचालन — बल्क रिनेमिंग, कमेंटिंग, टाइपिंग और लेबल प्रबंधन (93% कम API कॉल)
- हेडलेस सर्वर — घिड्रा GUI के बिना पूर्ण विश्लेषण — डॉकर और CI/CD तैयार
- परियोजना और संस्करण नियंत्रण — प्रोजेक्ट बनाएं, फ़ाइलें प्रबंधित करें, घिड्रा सर्वर एकीकरण
- विश्लेषण नियंत्रण — प्रोग्रामेटिक रूप से घिड्रा एनालाइज़र को सूचीबद्ध करें, कॉन्फ़िगर करें और ट्रिगर करें
🚀 त्वरित आरंभ
पूर्वापेक्षाएँ
- Java 21 LTS (OpenJDK अनुशंसित)
- Apache Maven 3.9+
- Ghidra 12.1.2 (या संगत संस्करण)
- Python 3.10+ uv के साथ (अनुशंसित) या pip + venv
साझा घिड्रा सर्वर उपयोगकर्ता: Ghidra 12.1.2 क्लाइंट को 12.1, 12.0.5, या नए संगत संस्करण पर घिड्रा सर्वर की आवश्यकता होती है। 12.1 क्लाइंट से इस प्लगइन का उपयोग करने से पहले सर्वर को अपग्रेड करें।
Ghidra 12.1.2 Jython को एक वैकल्पिक एक्सटेंशन के रूप में शामिल करता है। Java स्क्रिप्ट डिफ़ॉल्ट रूप से काम करती हैं, लेकिन
ghidra_scripts/में.pyस्क्रिप्ट को File > Install Extensions से Jython एक्सटेंशन स्थापित करने और Ghidra को पुनरारंभ करने की आवश्यकता होती है।
स्थापना
सभी प्लेटफ़ॉर्म के लिए अनुशंसित: सीधे
python -m tools.setupका उपयोग करें।
ensure-prereqsरनटाइम Python आवश्यकताओं के साथ-साथ स्थानीय Maven रिपॉजिटरी में आवश्यक Ghidra JARs स्थापित करता है।deployबिल्ड आउटपुट की प्रतिलिपि बनाता है, उपयोगकर्ता-प्रोफ़ाइल एक्सटेंशन स्थापित करता है, और Ghidra उपयोगकर्ता कॉन्फ़िग को पैच करता है।
- रिपॉजिटरी को क्लोन करें:
git clone https://github.com/bethington/ghidra-mcp.git
cd ghidra-mcp
``` ```bash
git clone https://github.com/bethington/ghidra-mcp.git
cd ghidra-mcp
- अनुशंसित: पहले environment preflight चलाएं: ```text
python -m tools.setup preflight --ghidra-path "F:\ghidra_12.1.2_PUBLIC"
- बनाएं और Ghidra में तैनात करें: ```text
python -m tools.setup ensure-prereqs --ghidra-path "F:\ghidra_12.1.2_PUBLIC"
python -m tools.setup build
python -m tools.setup deploy --ghidra-path "F:\ghidra_12.1.2_PUBLIC"
deploy जब आवश्यक हो, पहले से चल रहे मिलान वाले Ghidra इंस्टेंस को सहेजता/बंद करता है, एक्सटेंशन स्थापित करता है, Ghidra प्रारंभ करता है, MCP स्वास्थ्य की प्रतीक्षा करता है, और स्कीमा स्मोक चेक चलाता है।
- वैकल्पिक सख्त/मैन्युअल मोड (उन्नत): ```text
Skip automatic prerequisite setup
python -m tools.setup build python -m tools.setup deploy --ghidra-path "F:\ghidra_12.1.2_PUBLIC" - कमांड सहायता दिखाएँ: ```text
python -m tools.setup --help
- वैकल्पिक केवल-निर्माण मोड (उन्नत/समस्या निवारण): ```text
python -m tools.setup build
समर्थित बिल्ड पथ: python -m tools.setup build Maven के अंतर्गत काम करता है और रिपोजिटरी कार्यों और दस्तावेज़ों द्वारा उपयोग किया जाने वाला विहित कार्यप्रवाह है। ```bash
Manual Maven build (requires Ghidra deps already installed in local .m2)
mvn clean package assembly:single -DskipTests
## 1.4. समर्थन
यह उपकरण जैसा है वैसा ही प्रदान किया जाता है। समस्याओं, सुविधा अनुरोधों या योगदान के लिए, कृपया GitHub Issues और Pull Requests का उपयोग करें।
## 1.5. लाइसेंस
यह परियोजना MIT License के अंतर्गत लाइसेंस प्राप्त है - विस्तार के लिए [LICENSE](https://github.com/bethington/ghidra-mcp/blob/main/LICENSE) फ़ाइल देखें।
## 1.6. आभार
खुले-स्रोत समुदाय और उन सभी योगदानकर्ताओं को विशेष धन्यवाद जिन्होंने परीक्षण, प्रतिक्रिया और कोड योगदान के माध्यम से इस उपकरण को बेहतर बनाने में मदद की। ```bash
# Secondary/manual Gradle build path only (not used by tools.setup or VS Code tasks)
GHIDRA_INSTALL_DIR=/path/to/ghidra gradle buildExtension
स्थापना (लिनक्स — उबंटू/डेबियन)
- रिपॉजिटरी क्लोन करें: ```bash
git clone https://github.com/bethington/ghidra-mcp.git
cd ghidra-mcp
- सिस्टम आवश्यकताएँ स्थापित करें (यदि पहले से स्थापित नहीं हैं): ```bash
sudo apt update && sudo apt install -y openjdk-21-jdk maven python3 python3-pip python3-venv curl jq unzip
Debian/Kali/Ubuntu 23.04+ नोट (PEP 668): ये डिस्ट्रोस सिस्टम Python को बाह्य रूप से प्रबंधित चिह्नित करते हैं, इसलिए एक सादा
pip installerror: externally-managed-environmentके साथ विफल होता है।--break-system-packagesके साथ इसके आसपास काम न करें — यह apt-प्रबंधित उपकरणों को दूषित कर सकता है। इसके बजाय uv का उपयोग करें (अनुशंसित — यह स्वचालित रूप से एक परियोजना-स्थानीय.venvबनाता और प्रबंधित करता है, और यही इस रेपो के कमांड उपयोग करते हैं):curl -LsSf https://astral.sh/uv/install.sh | sh uv run bridge-mcp-ghidra # resolves deps into .venv and starts the bridgeया एक क्लासिक वर्चुअल एनवायरनमेंट:
python3 -m venv .venv && source .venv/bin/activate pip install -e . bridge-mcp-ghidra
- पर्यावरण प्रीफ्लाइट चलाएं: ```bash
python -m tools.setup preflight --ghidra-path ~/ghidra_12.1.2_PUBLIC
- Ghidra पर बनाएँ और तैनात करें (एकल कमांड): ```bash
python -m tools.setup ensure-prereqs --ghidra-path ~/ghidra_12.1.2_PUBLIC
python -m tools.setup build
python -m tools.setup deploy --ghidra-path ~/ghidra_12.1.2_PUBLIC
यह निम्नलिखित करेगा:
- Ghidra JAR निर्भरताओं को आपके स्थानीय
~/.m2/repositoryमें स्थापित करें - Maven के साथ
GhidraMCP-<version>.zipबनाएं - एक्सटेंशन को
~/.config/ghidra/ghidra_<version>_PUBLIC/Extensions/में निकालें LastExtensionImportDirectoryके साथpreferencesको अपडेट करें- Python आवश्यकताओं को स्थापित करें
- वैकल्पिक: केवल Maven निर्भरताएँ सेटअप करें: ```bash
python -m tools.setup install-ghidra-deps --ghidra-path ~/ghidra_12.1.2_PUBLIC
- कमांड सहायता दिखाएँ: ```bash
python -m tools.setup --help
लिनक्स पथ: एक्सटेंशन
$HOME/.config/ghidra/ghidra_<version>_PUBLIC/Extensions/GhidraMCP/में स्थापित होता है। घिड्रा कॉन्फ़िग फ़ाइलें$HOME/.config/ghidra/ghidra_<version>_PUBLIC/में हैं।
स्थापना (macOS — Homebrew)
- पूर्वापेक्षाएँ स्थापित करें: ```bash
brew install openjdk@21 maven python ghidra
- रिपॉज़िटरी को क्लोन करें: ```bash
git clone https://github.com/bethington/ghidra-mcp.git
cd ghidra-mcp
- Ghidra JARs को local Maven में स्थापित करें: ```bash
python -m tools.setup install-ghidra-deps
--ghidra-path /opt/homebrew/opt/ghidra/libexec - निर्माण और तैनाती: ```bash
python -m tools.setup ensure-prereqs
--ghidra-path /opt/homebrew/opt/ghidra/libexec python -m tools.setup build python -m tools.setup deploy
--ghidra-path /opt/homebrew/opt/ghidra/libexec
एक्सटेंशन ~/Library/ghidra/ghidra_12.1.2_PUBLIC/Extensions/GhidraMCP/ में स्थापित है।
नोट: Homebrew पथ का उपयोग करते समय
--ghidra-versionआवश्यक है क्योंकि पथ में कोई संस्करण स्ट्रिंग नहीं है।
- Ghidra प्रारंभ करें और प्लगइन सक्षम करें: ```bash
/opt/homebrew/opt/ghidra/libexec/ghidraRun
मुख्य प्रोजेक्ट विंडो में: Tools > GhidraMCP > Start MCP Server
- कर्सर/क्लॉड MCP कॉन्फ़िगर करें (
~/.cursor/mcp.json): ```json { "mcpServers": { "ghidra": { "command": "uv", "args": ["run", "--directory", "/path/to/ghidra-mcp", "bridge-mcp-ghidra"] } } }
स्थापना (Arch Linux — AUR)
@Pandoriaantje सामुदायिक AUR पैकेजों का रखरखाव करते हैं:
ghidra-mcp-git—mainशाखा का अनुसरण करता हैghidra-mcp— टैग किए गए रिलीज़ का अनुसरण करता है
अपने पसंदीदा AUR हेल्पर से इंस्टॉल करें, उदाहरण के लिए:```bash yay -S ghidra-mcp # or ghidra-mcp-git
### मूल उपयोग
#### विकल्प 1: Stdio परिवहन (AI उपकरणों के लिए अनुशंसित)```bash
uv run bridge-mcp-ghidra # or: python -m bridge_mcp_ghidra
Autohand Code में ब्रिज जोड़ने के लिए एक क्लोन किए गए चेकआउट से:```bash autohand mcp add ghidra uv run --directory /path/to/ghidra-mcp bridge-mcp-ghidra
Add `--scope project` को `ghidra` से पहले जोड़ें ताकि सर्वर को आपके उपयोगकर्ता कॉन्फ़िगरेशन के बजाय वर्तमान प्रोजेक्ट के `.autohand` कॉन्फ़िगरेशन में सहेजा जा सके।
#### विकल्प 2: स्ट्रीमेबल HTTP ट्रांसपोर्ट (वेब/HTTP क्लाइंट के लिए अनुशंसित)```bash
uv run bridge-mcp-ghidra --transport streamable-http --mcp-host 127.0.0.1 --mcp-port 8081
HTTP ट्रांसपोर्ट के लिए MCP क्लाइंट कॉन्फ़िग (अपने क्लाइंट के MCP कॉन्फ़िग फ़ाइल में जोड़ें):```json { "mcpServers": { "ghidra-mcp-http": { "url": "http://127.0.0.1:8081/mcp" } } }
ब्राउज़र-आधारित क्लाइंट (उदा., [MCP Inspector](https://github.com/modelcontextprotocol/inspector)) बिना किसी अतिरिक्त कॉन्फ़िगरेशन के काम करते हैं: HTTP ट्रांसपोर्ट CORS प्रीफ़्लाइट (`OPTIONS`) अनुरोधों का उत्तर देते हैं और `mcp-session-id` / `mcp-protocol-version` हेडर को स्क्रिप्ट्स के लिए उजागर करते हैं। अनुमत मूल Host-हेडर नीति को दर्शाते हैं — किसी भी पोर्ट पर लूपबैक हमेशा अनुमत होता है, साथ ही बाइंड होस्ट और `GHIDRA_MCP_ALLOWED_HOSTS` में सूचीबद्ध कोई भी होस्ट।
#### विकल्प 3: SSE ट्रांसपोर्ट (अब अप्रचलित — इसके बजाय streamable-http का उपयोग करें)```bash
uv run bridge-mcp-ghidra --transport sse --mcp-host 127.0.0.1 --mcp-port 8081
ब्रिज उन्नत फ़्लैग्स
| फ़्लैग | डिफ़ॉल्ट | विवरण |
|---|---|---|
--transport | stdio | stdio (AI उपकरण), streamable-http (वेब क्लाइंट), sse (अप्रचलित) |
--mcp-host | 127.0.0.1 | HTTP ट्रांसपोर्ट के लिए होस्ट बांधें |
--mcp-port | — | HTTP ट्रांसपोर्ट के लिए पोर्ट |
--lazy | बंद | केवल डिफ़ॉल्ट टूल समूहों को कनेक्ट करने पर लोड करें। तेज़ स्टार्टअप, लेकिन MCP क्लाइंट जो tools/list_changed का समर्थन नहीं करते, उन्हें अधूरा टूल सूची दिखाई देगी। Claude Code के लिए अनुशंसित नहीं है। |
--no-lazy | (डिफ़ॉल्ट) | कनेक्ट करने पर सभी टूल समूहों को तुरंत लोड करें। अधिकांश AI क्लाइंट के लिए आवश्यक। |
--default-groups | listing,function,program | अल्पविराम से अलग किए गए समूह जो --lazy सेट होने पर कनेक्ट करने पर लोड होते हैं। |
कठोर प्रोग्राम रूटिंग (मल्टी-प्रोग्राम सुरक्षा)
GHIDRA_MCP_REQUIRE_PROGRAM_SELECTORS=1 सेट करें ताकि ब्रिज किसी भी program-scoped कॉल को अस्वीकार करे जो प्रोग्राम चयनकर्ता को छोड़ता है, कॉल को सर्वर के साझा 'चालू प्रोग्राम' (जिसे switch_program और सक्रिय GUI टैब स्थानांतरित करते हैं) पर चलने देने के बजाय स्पष्ट त्रुटि लौटाए।```bash
export GHIDRA_MCP_REQUIRE_PROGRAM_SELECTORS=1
uv run bridge-mcp-ghidra
इसके बिना, `program=` को छोड़ने वाला कॉल वर्तमान प्रोग्राम के विरुद्ध चलता है, जो एकल-प्रोग्राम कार्यप्रवाह के लिए ठीक है लेकिन एक बार कई प्रोग्राम खुले होने पर खतरनाक हो जाता है: कॉल बिना किसी त्रुटि के गलत बाइनरी को पढ़ या संपादित कर सकता है। जब एक से अधिक क्लाइंट एक सर्वर साझा करते हैं तो खतरा और भी बदतर होता है, क्योंकि प्रत्येक क्लाइंट उस current-program ग्लोबल को दूसरों के नीचे से हटा देता है।
सख्त मोड चालू होने पर, प्रत्येक प्रोग्राम-स्कोप्ड कॉल को अपने लक्ष्य का नाम बताना होगा। यह उन सभी चयनकर्ताओं को कवर करता है जो एक खुले प्रोग्राम को चुनते हैं: सादा `program=` और क्रॉस-प्रोग्राम टूल्स के `source_program`/`target_program` या `program_a`/`program_b` (आवश्यक घोषित, लेकिन सर्वर अभी भी वर्तमान प्रोग्राम पर वापस आ जाता है जब एक खाली आता है)। भूला हुआ चयनकर्ता गलत बाइनरी में मौन लेखन के बजाय पहली बुरी कॉल पर एक तेज़ त्रुटि के रूप में सामने आता है। बिना प्रोग्राम चयनकर्ता वाले उपकरण (`open_program` और `close_program` `path`/`name` लेते हैं) अप्रभावित रहते हैं। डिफ़ॉल्ट रूप से बंद: चर अनसेट होने पर ब्रिज कॉल अपरिवर्तित भेजता है।
#### टूल-कॉन्टेक्स्ट ओवरहेड को कम करना
ब्रिज एक बड़ी सूची प्रस्तुत करता है। मॉडल के टूल सतह को छोटा रखने के लिए, `--lazy` के साथ चलाएं (कनेक्ट होने पर केवल `listing,function,program` लोड करता है) और मॉडल को सब कुछ पंजीकृत करने के बजाय मांग पर बाकी की **खोज** करने दें:
- `search_tools("rename function")` — **संपूर्ण** सूची में कीवर्ड खोज, जिसमें वे उपकरण शामिल हैं जिनका समूह लोड नहीं है। प्रत्येक परिणाम बताता है कि क्या यह अभी कॉल करने योग्य है और यदि नहीं, तो इसे सक्षम करने के लिए सटीक `load_tool_group(...)` कॉल।
- `list_tool_groups()` — सभी श्रेणियों और उनकी लोड स्थिति को सूचीबद्ध करें।
- `load_tool_group("datatype")` / `unload_tool_group("datatype")` — रनटाइम पर एक श्रेणी लोड या हटाएं।
- `check_tools("rename_or_label,batch_set_comments")` — पुष्टि करें कि विशिष्ट उपकरण अभी कॉल करने योग्य हैं।
`search_tools` उत्सुक और `--lazy` दोनों मोड में काम करता है, इसलिए `tools/list_changed` का सम्मान करने वाले एजेंटों को अग्रिम संदर्भ लागत के बिना पूरी खोज मिलती है।
#### वैकल्पिक: स्टैंडअलोन डिबगर सर्वर प्रारंभ करें```bash
uv sync --group debugger
uv run python -m debugger
डिबगर सर्वर डिफ़ॉल्ट रूप से http://127.0.0.1:8099/ पर सुनता है और MCP ब्रिज द्वारा उजागर किए गए debugger_* प्रॉक्सी टूल्स के लिए आवश्यक है।
डिबगर सर्वर फ़्लैग्स:
| फ़्लैग | डिफ़ॉल्ट | विवरण |
|---|---|---|
--port | 8099 | HTTP सर्वर पोर्ट |
--host | 127.0.0.1 | बाइंड पता (0.0.0.0 LAN पर एक्सपोज़ करने के लिए) |
--exports-dir | — | ऑर्डिनल-टू-नेम रिज़ॉल्यूशन के लिए dll_exports/ निर्देशिका का पथ |
--log-level | INFO | DEBUG, INFO, WARNING, या ERROR |
यदि आप डिफ़ॉल्ट पोर्ट या होस्ट बदलते हैं तो ब्रिज को खोजने के लिए .env में GHIDRA_DEBUGGER_URL सेट करें।
Ghidra में
- Ghidra प्रारंभ करें और CodeBrowser विंडो खोलें
- CodeBrowser में, प्लगिन को File > Configure > Configure All Plugins > GhidraMCP के माध्यम से सक्षम करें
- वैकल्पिक: CodeBrowser > Edit > Tool Options > GhidraMCP HTTP Server के माध्यम से कस्टम पोर्ट कॉन्फ़िगर करें
- सर्वर को Tools > GhidraMCP > Start MCP Server के माध्यम से प्रारंभ करें
- सर्वर डिफ़ॉल्ट रूप से
http://127.0.0.1:8089/पर चलता है
सत्यापित करें कि यह काम कर रहा है```bash
Quick health check
curl http://127.0.0.1:8089/check_connection
Expected: "Connected: GhidraMCP plugin running with program ''"
Get version info
curl http://127.0.0.1:8089/get_version
## इस परियोजना को समर्थन दें
यदि Ghidra MCP आपका इंजीनियरिंग या रिवर्स-इंजीनियरिंग का समय बचाता है, तो कृपया [परियोजना को प्रायोजित करने](https://github.com/sponsors/bethington) पर विचार करें।
- एकमुश्त प्रायोजन बग फिक्स, संगतता अपडेट और रिलीज़ कार्य के लिए धन जुटाने में मदद करता है।
- आवर्ती प्रायोजन रखरखाव, दस्तावेज़ीकरण और उत्पादन सख्तीकरण को जारी रखने में मदद करता है।
- कंपनी का समर्थन ब्रिज, हेडलेस सर्वर, डीबगर एकीकरण और वर्कफ़्लो टूलिंग के लिए दीर्घकालिक विश्वसनीयता को प्राथमिकता देने में मदद करता है।
## 🔒 सुरक्षा
GhidraMCP को **केवल localhost विकास** के लिए डिज़ाइन किया गया है। डिफ़ॉल्ट कॉन्फ़िगरेशन — HTTP सर्वर `127.0.0.1` से बंधा हुआ, बिना प्रमाणीकरण — एक विश्वसनीय एकल-उपयोगकर्ता वर्कस्टेशन पर सुरक्षित है और v5.4.1 से पहले के व्यवहार से मेल खाता है।
**यदि आप सर्वर को लूपबैक से आगे उजागर करते हैं, तो पहले इन तीन पर्यावरण चर को कॉन्फ़िगर करें।** बिना टोकन के गैर-लूपबैक बाइंड पर सर्वर शुरू होने से मना कर देता है।
| Env var | प्रभाव |
|---|---|
| `GHIDRA_MCP_AUTH_TOKEN` | जब सेट किया जाता है, तो हर HTTP अनुरोध को `Authorization: Bearer <token>` ले जाना चाहिए। समय-सुरक्षित तुलना। `/mcp/health`, `/health`, `/check_connection` को छूट दी गई है। |
| `GHIDRA_MCP_ALLOW_SCRIPTS` | `/run_script_inline` और `/run_ghidra_script` को सक्षम करने के लिए `1`, `true`, या `yes` पर सेट करें। **v5.4.1 से डिफ़ॉल्ट रूप से बंद** — ये एंडपॉइंट Ghidra प्रक्रिया के विरुद्ध मनमाना Java निष्पादित करते हैं। हेडलेस मोड में यह सर्वर स्टार्टअप पर OSGi `BundleHost` प्रारंभ (Felix framework, ~सैकड़ों ms) को भी ट्रिगर करता है; यदि आपको स्क्रिप्ट निष्पादन की आवश्यकता नहीं है तो इसे बंद छोड़ दें। |
| `GHIDRA_MCP_FILE_ROOT` | जब किसी निर्देशिका पथ पर सेट किया जाता है, तो फ़ाइलसिस्टम-पथ एंडपॉइंट (`/load_program`, `/import_file`, `/open_project`, `/delete_file`, आदि) इनपुट को कैननिकलाइज़ करते हैं और इसे इस रूट के अंतर्गत आने की आवश्यकता होती है। पथ-ट्रैवर्सल को रोकता है। |
नाम-गुणवत्ता प्रवर्तन सुरक्षा से अलग है। डिफ़ॉल्ट रूप से,
`rename_function_by_address` और वैश्विक लेखन एंडपॉइंट उन नामों को अस्वीकार करते हैं जो
अंतर्निहित गुणवत्ता गेट में विफल होते हैं, और स्ट्रक्चर फ़ील्ड लेखन अंतर्निहित
फ़ील्ड उपसर्ग परंपरा को लागू करते हैं। **Edit > Tool
Options > GhidraMCP HTTP Server > Strict Naming Enforcement** के साथ अंतर्निहित परंपरा परत को अक्षम करें। वही Tool Options
चेकबॉक्स `rename_data`, `rename_global_variable`,
`set_global`, `apply_data_type` उपसर्ग/प्रकार गार्ड, और स्ट्रक्चर-फ़ील्ड
हंगेरियन उपसर्ग ऑटो-फिक्स को `create_struct`, `add_struct_field`, और
`modify_struct_field` में शामिल करता है। यह सेटिंग MCP सर्वर शुरू होने या
पुनरारंभ होने पर पढ़ी जाती है। जब प्रवर्तन अक्षम किया जाता है, तब भी फ़ंक्शन/ग्लोबल
परंपरा चेतावनियाँ वापस की जाती हैं।
### उदाहरण: प्रमाणीकरण के साथ एक निजी LAN को उजागर करना```bash
export GHIDRA_MCP_AUTH_TOKEN=$(openssl rand -hex 32)
export GHIDRA_MCP_ALLOW_SCRIPTS=1 # only if your workflow needs it
export GHIDRA_MCP_FILE_ROOT=/srv/ghidra/inputs
java -jar GhidraMCPHeadless.jar --bind 0.0.0.0 --port 8089
Ghidra सर्वर प्रमाणीकरण
जब साझा Ghidra सर्वर से कनेक्ट होते हैं, तो GhidraMCP पासवर्ड संवाद को स्वचालित रूप से दबा सकता है। यह क्रेडेंशियल्स को इस क्रम में हल करता है (पहला गैर-रिक्त मान जीतता है):
संगतता नोट: Ghidra 12.1.2 क्लाइंट को Ghidra सर्वर 12.1.2, 12.0.5, या नए संगत सर्वर की आवश्यकता होती है. पुराने साझा सर्वर 12.1 क्लाइंट अपग्रेड के लिए सुरक्षित लक्ष्य नहीं हैं.
GHIDRA_SERVER_PASSWORDपर्यावरण चर (या Ghidra स्थापना निर्देशिका में.envफ़ाइल या~)~/.ghidra-cred— आपकी होम डायरेक्ट्री में एकल-पंक्ति पासवर्ड फ़ाइल<ghidra-install-dir>/.ghidra-cred
उपयोगकर्ता नाम इसी प्रकार हल होता है: GHIDRA_SERVER_USER env var → user.name सिस्टम गुण।
यदि कोई पासवर्ड नहीं मिलता है, तो Ghidra अपना सामान्य GUI प्रॉम्प्ट दिखाता है। मौन प्रमाणीकरण सक्षम करने के लिए इन्हें .env में सेट करें (पूर्ण ब्लॉक के लिए .env.template देखें)।
v5.4.0 → v5.4.1 से माइग्रेशन
- स्क्रिप्ट एंडपॉइंट अब डिफ़ॉल्ट रूप से बंद हैं। यदि आप
/run_script_inlineया/run_ghidra_scriptपर निर्भर थे, तोGHIDRA_MCP_ALLOW_SCRIPTS=1निर्यात करें। यह एक जानबूझकर किया गया ब्रेकिंग चेंज है; पिछला डिफ़ॉल्ट असुरक्षित था। - केवल Localhost परिनियोजन को किसी बदलाव की आवश्यकता नहीं है। Auth, बाइंड अस्वीकृति, और पथ-रूट जाँच सभी ऑप्ट-इन हैं।
❓ समस्या निवारण
"GhidraMCP" मेनू Tools में दिखाई नहीं दे रहा है
कारण: प्लगइन सक्षम नहीं है या गलत तरीके से स्थापित किया गया है।
समाधान:
- सत्यापित करें कि एक्सटेंशन स्थापित है: File > Install Extensions — GhidraMCP सूचीबद्ध होना चाहिए
- प्लगइन सक्षम करें: File > Configure > Configure All Plugins > GhidraMCP (बॉक्स चेक करें)
- स्थापना/सक्षम करने के बाद Ghidra को पुनरारंभ करें
सर्वर प्रतिक्रिया नहीं दे रहा / कनेक्शन अस्वीकृत
कारण: सर्वर प्रारंभ नहीं हुआ या गलत पोर्ट।
समाधान:
- सुनिश्चित करें कि आपने सर्वर प्रारंभ किया: Tools > GhidraMCP > Start MCP Server
- कॉन्फ़िगर किया गया पोर्ट जांचें: Edit > Tool Options > GhidraMCP HTTP Server
- जांचें कि पोर्ट उपयोग में है या नहीं: ```bash
Linux/macOS
lsof -i :8089Windows
netstat -ano | findstr :8089 - Ghidra कंसोल में त्रुटियों की जाँच करें: Window > Console
pip install error: externally-managed-environment के साथ विफल होता है
कारण: PEP 668. डेबियन-परिवार के वितरण (Debian 12+, Kali, Ubuntu 23.04+) सिस्टम Python को बाह्य रूप से प्रबंधित के रूप में चिह्नित करते हैं, इसलिए वैश्विक pip install apt-प्रबंधित पैकेजों की सुरक्षा के लिए अवरुद्ध है।
समाधान: एक वर्चुअल वातावरण का उपयोग करें — कभी --break-system-packages न करें। अनुशंसित मार्ग uv है, जो स्वचालित रूप से एक प्रोजेक्ट-स्थानीय .venv का प्रबंधन करता है:```bash
curl -LsSf https://astral.sh/uv/install.sh | sh
cd ghidra-mcp
uv run bridge-mcp-ghidra
या एक क्लासिक venv:```bash
python3 -m venv .venv && source .venv/bin/activate
pip install -e .
bridge-mcp-ghidra
python -m debugger pybag या comtypes के लिए ModuleNotFoundError के साथ विफल होता है
कारण: स्टैंडअलोन डीबगर सर्वर वैकल्पिक विंडोज-मात्र Python निर्भरताओं का उपयोग करता है जो डिफ़ॉल्ट रूप से स्थापित नहीं होती हैं।
समाधान:```text uv sync --group debugger uv run python -m debugger
यदि आपके पास एक वैश्विक Python और एक प्रोजेक्ट venv दोनों हैं, तो सुनिश्चित करें कि आप एक ही इंटरप्रेटर में इंस्टॉल करें और चलाएं।
### 500 आंतरिक सर्वर त्रुटियाँ
**कारण:** सर्वर-साइड अपवाद, अक्सर प्रोग्राम डेटा की कमी के कारण।
**समाधान:**
1. सुनिश्चित करें कि CodeBrowser में एक बाइनरी लोड की गई है
2. पहले स्वचालित विश्लेषण चलाएँ: **Analysis > Auto Analyze**
3. Java अपवादों के लिए Ghidra कंसोल (**Window > Console**) जाँचें
4. कुछ संचालनों के लिए पूरी तरह से विश्लेषित बाइनरी आवश्यक है
### 404 नहीं मिला त्रुटियाँ
**कारण:** एंडपॉइंट मौजूद नहीं है या गलत URL है।
**समाधान:**
1. एंडपॉइंट की उपस्थिति सत्यापित करें: `curl http://127.0.0.1:8089/get_version`
2. एंडपॉइंट नाम में टाइपो की जाँच करें
3. सुनिश्चित करें कि आप सही HTTP विधि (GET बनाम POST) का उपयोग कर रहे हैं
### Python Ghidra स्क्रिप्ट्स "No script provider found" से विफल होती हैं
**कारण:** Ghidra 12.1.2 में, Jython समर्थन अब डिफ़ॉल्ट रूप से सक्षम नहीं है।
`.py` स्क्रिप्ट्स को बंडल Jython एक्सटेंशन की आवश्यकता होती है; Python 3
स्क्रिप्ट्स को Ghidra Script Manager के बजाय PyGhidra का उपयोग करना चाहिए।
**समाधान:**
1. Ghidra Front End में, **File > Install Extensions** खोलें।
2. **Jython** चेक करें, Ghidra को पुनरारंभ करें, फिर Script Manager को रिफ्रेश करें।
3. नए ऑटोमेशन के लिए, Java Ghidra स्क्रिप्ट्स या PyGhidra को प्राथमिकता दें।
### एक्सटेंशन Install Extensions में दिखाई नहीं दे रहा है
**कारण:** JAR फ़ाइल गलत स्थान पर है।
**समाधान:**
1. मैन्युअल इंस्टॉल स्थान: `~/.ghidra/ghidra_12.1.2_PUBLIC/Extensions/GhidraMCP/lib/GhidraMCP.jar`
2. या उपयोग करें: **File > Install Extensions > Add** और ZIP फ़ाइल चुनें
3. सुनिश्चित करें कि JAR/ZIP आपके Ghidra संस्करण के लिए बनाया गया था
### बिल्ड "Ghidra dependencies not found" से विफल होता है
**कारण:** Ghidra JARs स्थानीय Maven रिपॉजिटरी में स्थापित नहीं हैं।
**समाधान:**```text
# Windows (recommended)
python -m tools.setup install-ghidra-deps --ghidra-path "C:\ghidra_12.1.2_PUBLIC"
📊 उत्पादन प्रदर्शन
- MCP उपकरण: 271 उपकरण पूरी तरह से कार्यान्वित
- गति: अधिकांश कार्यों के लिए उप-सेकंड प्रतिक्रिया
- दक्षता: बैच संचालन के माध्यम से एपीआई कॉल में 93% की कमी
- विश्वसनीयता: सर्व-या-कुछ नहीं अर्थशास्त्र के साथ परमाणु लेनदेन
- एआई वर्कफ़्लोज़: सैकड़ों वास्तविक फ़ंक्शनों में परिष्कृत सिद्ध दस्तावेज़ीकरण प्रॉम्प्ट
- परिनियोजन: स्वचालित संस्करण-जागरूक परिनियोजन स्क्रिप्ट
🛠️ एपीआई संदर्भ
271 एमसीपी उपकरण जो HTTP एंडपॉइंट द्वारा समर्थित हैं, कैटलॉग श्रेणी के अनुसार समूहित। tests/endpoints.json से python -m tools.gen_readme_api_reference --write द्वारा उत्पन्न; /mcp/schema पर लाइव स्कीमा रनटाइम पर आधिकारिक है। उपयोग पैटर्न: docs/prompts/TOOL_USAGE_GUIDE.md।
प्रोग्राम और सत्र प्रबंधन
analysis_status- खुले प्रोग्राम के लिए ऑटो-विश्लेषण स्थिति प्राप्त करेंclose_program- प्रोजेक्ट पथ या नाम द्वारा एक खुले प्रोग्राम को बंद करेंcreate_property_map- पते द्वारा कुंजीबद्ध टाइप किए गए मानों को संग्रहीत करने के लिए एक उपयोगकर्ता गुण मानचित्र बनाएंdelete_property_map- एक उपयोगकर्ता गुण मानचित्र और उसमें मौजूद सभी मानों को हटाएंexit_ghidra- Ghidra को सहेजें और बाहर निकलेंget_address_spaces- प्रोग्राम में सभी भौतिक और ओवरले पता स्थानों की सूची बनाएं (ओवरले में is_overlay फ्लैग और overlayed_space नाम शामिल है)get_current_program_info- वर्तमान प्रोग्राम जानकारी प्राप्त करेंget_language_metadata- प्रोग्राम का भाषा विवरण डंप करें: पता स्थान, रजिस्टर, डिफ़ॉल्ट प्रतीक, एंडियननेस, पॉइंटर आकार (मुद्दा #192)get_program_options- प्रकार, वर्तमान मान, डिफ़ॉल्ट और विवरणों के साथ एक प्रोग्राम विकल्प समूह में सभी विकल्प पढ़ेंget_property- एक गुण मानचित्र में एक पते पर संग्रहीत मान पढ़ेंimport_file- डिस्क से एक बाइनरी फ़ाइल को वर्तमान Ghidra प्रोजेक्ट में आयात करें और इसे खोलेंlist_open_programs- खुले प्रोग्रामों की सूची बनाएंlist_option_groups- प्रोग्राम विकल्प समूहों की सूची बनाएं (जैसे,list_properties- पेजिनेशन के साथ एक गुण मानचित्र में संग्रहीत (पता, मान) प्रविष्टियों की सूची बनाएंlist_property_maps- उपयोगकर्ता-परिभाषित गुण मानचित्रों की सूची बनाएं — प्रति-पता कुंजी→मान भंडारopen_program- प्रोजेक्ट से प्रोग्राम खोलेंreanalyze- एक प्रोग्राम पर पूर्ण ऑटो-विश्लेषण ट्रिगर करेंremove_program_option- एक प्रोग्राम विकल्प समूह से एक विकल्प हटाएंremove_property- एक गुण मानचित्र में एक एकल पते पर संग्रहीत मान को हटाएंsave_all_programs- सभी खुले प्रोग्रामों को सहेजेंsave_program- वर्तमान प्रोग्राम को सहेजेंset_image_base- प्रोग्राम का आधार पता सेट करें (सभी पतों को रीबेस करता है)set_program_option- एक टाइप किया गया प्रोग्राम विकल्प सेट करेंset_property- एक गुण मानचित्र में एक पते पर एक मान सेट करेंswitch_program- वर्तमान प्रोग्राम स्विच करें
परियोजना संगठन
create_folder- प्रोजेक्ट में एक फ़ोल्डर बनाएंdelete_file- प्रोजेक्ट से एक फ़ाइल हटाएंdelete_project- एक Ghidra प्रोजेक्ट हटाएंlist_projects- उपलब्ध Ghidra प्रोजेक्ट्स की सूची बनाएंmove_file- एक फ़ाइल को किसी अन्य प्रोजेक्ट फ़ोल्डर में ले जाएंmove_folder- एक फ़ोल्डर को किसी अन्य स्थान पर ले जाएंproject_info- चल रहे उपकरणों और खुले प्रोग्रामों सहित विस्तृत परियोजना जानकारी प्राप्त करें
हेडलेस परियोजना और प्रोग्राम जीवनचक्र
स्टैंडअलोन हेडलेस सर्वर (GhidraMCPHeadlessServer) पर उपलब्ध।
archive_project- वर्तमान में खुले प्रोजेक्ट को Ghidra-मूल .gar फ़ाइल में संग्रहित करेंcheckin_program- एक खुले प्रोग्राम को साझा Ghidra सर्वर में एक नए संस्करण के रूप में वापस चेक इन करेंclose_project- वर्तमान में खुले प्रोजेक्ट को बंद करेंcreate_project- एक नया Ghidra प्रोजेक्ट बनाएंexport_program- एक खुले या प्रोजेक्ट-निवासी प्रोग्राम को Ghidra ज़िप फ़ाइल (.gzf) में निर्यात करेंget_project_info- वर्तमान में खुले प्रोजेक्ट के बारे में जानकारी प्राप्त करेंimport_program- एक Ghidra ज़िप फ़ाइल (.gzf) को वर्तमान में खुले प्रोजेक्ट में target_folder (डिफ़ॉल्ट '/') के अंतर्गत एक नई DomainFile के रूप में आयात करेंload_program- विश्लेषण के लिए हेडलेस सर्वर में एक बाइनरी फ़ाइल लोड करेंload_program_from_project- Ghidra प्रोजेक्ट से प्रोग्राम लोड करें (हेडलेस)open_project- एक मौजूदा Ghidra प्रोजेक्ट (.gpr फ़ाइल या निर्देशिका) खोलेंrestore_project- एक Ghidra .gar संग्रह कोparent_dir/project_nameपर एक नए डिस्क-आधारित प्रोजेक्ट में पुनर्स्थापित करेंserver_status- हेडलेस सर्वर कनेक्शन स्थिति जांचें
सूचीकरण और गणना
list_bookmarks- बुकमार्क सूचीबद्ध करेंlist_calling_conventions- उपलब्ध कॉलिंग कन्वेंशन सूचीबद्ध करेंlist_classes- नेमस्पेस/क्लास नाम सूचीबद्ध करेंlist_data_items- परिभाषित डेटा सूचीबद्ध करेंlist_data_items_by_xrefs- xref गणना द्वारा क्रमबद्ध डेटा सूचीबद्ध करेंlist_exports- निर्यातित प्रतीक सूचीबद्ध करेंlist_external_locations- बाहरी स्थान सूचीबद्ध करेंlist_functions- पतों के साथ फ़ंक्शन सूचीबद्ध करेंlist_functions_enhanced- मेटाडेटा के साथ फ़ंक्शन सूचीबद्ध करेंlist_globals- वैश्विक चर सूचीबद्ध करेंlist_imports- आयातित प्रतीक सूचीबद्ध करेंlist_methods- पेजिनेशन के साथ सभी फ़ंक्शन नाम सूचीबद्ध करेंlist_namespaces- सभी नेमस्पेस सूचीबद्ध करेंlist_scripts- उपलब्ध Ghidra स्क्रिप्ट सूचीबद्ध करेंlist_segments- मेमोरी सेगमेंट सूचीबद्ध करेंlist_strings- परिभाषित स्ट्रिंग्स सूचीबद्ध करें
संदर्भ और लुकअप
get_current_address- कर्सर पता प्राप्त करें (केवल GUI)get_current_function- कर्सर पर फ़ंक्शन प्राप्त करें (केवल GUI)get_current_selection- CodeBrowser सूची में हाइलाइट किए गए पता श्रेणियाँ प्राप्त करें (केवल GUI)get_entry_points- प्रोग्राम प्रवेश बिंदु प्राप्त करेंget_enum_values- गणना मान प्राप्त करेंget_external_location- बाहरी स्थान विवरण प्राप्त करेंget_full_call_graph- पूर्ण कॉल ग्राफ प्राप्त करेंget_function_by_address- पते पर फ़ंक्शन प्राप्त करेंget_function_call_graph- कॉल ग्राफ प्राप्त करेंget_function_callees- कॉल किए गए फ़ंक्शन प्राप्त करेंget_function_callers- कॉल करने वाले फ़ंक्शन प्राप्त करेंget_function_count- लोड किए गए प्रोग्राम में फ़ंक्शनों की संख्या लौटाएंget_function_jump_targets- जंप लक्ष्य प्राप्त करेंget_function_labels- फ़ंक्शन में लेबल प्राप्त करेंget_function_variables- एक फ़ंक्शन में सभी चर सूचीबद्ध करेंget_struct_layout- संरचना लेआउट प्राप्त करेंget_valid_data_types- मान्य डेटा प्रकार नाम प्राप्त करें
खोज
find_similar_functions- समान फ़ंक्शन खोजेंsearch_byte_patterns- बाइट पैटर्न खोजेंsearch_data_types- डेटा प्रकार खोजेंsearch_functions- नाम से फ़ंक्शन खोजेंsearch_functions_enhanced- उन्नत फ़ंक्शन खोजsearch_strings- रेगेक्स/सबस्ट्रिंग पैटर्न द्वारा परिभाषित स्ट्रिंग खोजें
विघटन और डिसअसेम्बली
decompile_function- फ़ंक्शन को विघटित करेंdisassemble_bytes- बाइट श्रेणी को डिसअसेम्बल करेंdisassemble_function- फ़ंक्शन को डिसअसेम्बल करेंforce_decompile- ताजा विघटन बलपूर्वक करें
फ़ंक्शन टैग, चर और विशेषताएँ
add_function_tag- एक या अधिक टैग को एक फ़ंक्शन से संलग्न करेंbatch_add_function_tags- एक लेनदेन में कई फ़ंक्शनों में टैग संलग्न करेंbatch_remove_function_tags- एक लेनदेन में कई फ़ंक्शनों से टैग अलग करेंclear_flow_and_repair- एक सीड श्रेणी पर Ghidra का GUI 'क्लियर फ्लो और मरम्मत' क्रिया चलाएं: सीड से पहुंचने योग्य निर्देश प्रवाह को साफ करता है, फिर फ़ंक्शन निकायों की मरम्मत करता है और बनाए रखे गए प्रवाह को पुनः डिसअसेम्बल करता है (clear_data=false, clear_labels=false, repair=true के साथ ClearFlowAndRepairCmd)create_function_tag- एक वैकल्पिक टिप्पणी के साथ एक प्रोग्राम-व्यापी फ़ंक्शन टैग परिभाषा बनाएंdelete_function_tag- एक प्रोग्राम-व्यापी फ़ंक्शन टैग परिभाषा हटाएंget_function_tags- एक विशिष्ट फ़ंक्शन को निर्दिष्ट सभी टैग सूचीबद्ध करेंlist_class_members- C++ क्लास के सदस्य फ़ंक्शन सूचीबद्ध करेंlist_function_tags- उनके उपयोग गणना के साथ सभी प्रोग्राम-व्यापी फ़ंक्शन टैग परिभाषाएँ सूचीबद्ध करेंremove_function_tag- एक फ़ंक्शन से एक या अधिक टैग अलग करेंsearch_functions_by_tag- सभी फ़ंक्शन सूचीबद्ध करें जिनमें एक निर्दिष्ट टैग संलग्न हैset_decompiler_variable_type- नाम से एक डिकम्पाइलर (उच्च-स्तरीय) चर या पैरामीटर प्रकार सेट करेंset_function_no_return- नो-रिटर्न विशेषता सेट करेंset_function_tag_comment- एक मौजूदा प्रोग्राम-व्यापी फ़ंक्शन टैग पर टिप्पणी/विवरण अद्यतन करेंset_function_this_type- अंतर्निहित 'this' पॉइंटर का डिकम्पाइलर/डेटाबेस प्रकार सेट करें (x86 __thiscall/__fastcall पर ECX)set_variables- परमाणु रूप से कई चरों के लिए प्रकार और नाम सेट करें
क्रॉस-रेफरेंस
add_memory_reference- दो मेमोरी पतों के बीच एक उपयोगकर्ता-परिभाषित क्रॉस-रेफरेंस बनाएं जिसे ऑटो-विश्लेषक अनुमान नहीं लगा सकता (रनटाइम-पॉप्युलेटेड पॉइंटर टेबल, vtable, लेट-बाउंड फ़ंक्शन पॉइंटर, छूटी हुई जंप/स्विच टेबल)get_bulk_xrefs- कई पतों के लिए xrefs प्राप्त करेंget_function_xrefs- फ़ंक्शन क्रॉस-रेफरेंस प्राप्त करेंget_xrefs_from- पते से संदर्भ प्राप्त करेंget_xrefs_to- पते के संदर्भ प्राप्त करेंremove_reference- एक पते से दूसरे पते पर मेमोरी क्रॉस-रेफरेंस हटाएं — add_memory_reference का विलोम
डेटा प्रकार और संरचनाएँ
add_struct_field- स्ट्रक्ट फ़ील्ड जोड़ेंanalyze_global_completeness- एक वैश्विक चर के दस्तावेज़ीकरण पूर्णता को एक बजटीय 0-100 पैमाने पर स्कोर करें — analyze_function_completeness का डेटा-पता एनालॉगapply_data_type- डेटा प्रकार लागू करेंaudit_global- एक वैश्विक चर की दस्तावेज़ीकरण स्थिति का ऑडिट करेंaudit_globals_in_function- एक कॉल में एक फ़ंक्शन के भीतर से संदर्भित प्रत्येक वैश्विक चर का ऑडिट करेंbatch_set_variable_types- एकाधिक चर प्रकार सेट करेंclone_data_type- डेटा प्रकार क्लोन करेंcreate_array_type- सारणी प्रकार बनाएंcreate_data_type_category- डेटा प्रकार श्रेणी बनाएंcreate_enum- गणना बनाएंcreate_function_signature- फ़ंक्शन हस्ताक्षर प्रकार बनाएंcreate_pointer_type- पॉइंटर प्रकार बनाएंcreate_struct- संरचना बनाएंcreate_typedef- typedef बनाएंcreate_union- यूनियन बनाएंdelete_data_type- डेटा प्रकार हटाएंembed_struct_field- एक संरचना फ़ील्ड को मान द्वारा एक एम्बेडेड स्ट्रक्ट प्रकार से बदलें (जैसे,get_data_type_size- डेटा प्रकार आकार बाइट्स में प्राप्त करेंget_type_size- डेटा प्रकार आकार और जानकारी प्राप्त करेंimport_data_types- GDT से डेटा प्रकार आयात करेंlist_data_type_categories- डेटा प्रकार श्रेणियाँ सूचीबद्ध करेंlist_data_types- डेटा प्रकार सूचीबद्ध करेंmodify_struct_field- स्ट्रक्ट फ़ील्ड संशोधित करेंmodify_struct_field_type- नाम या ऑफ़सेट (offset:N) द्वारा एक संरचना फ़ील्ड का प्रकार सेट करेंmove_data_type_to_category- डेटा प्रकार को श्रेणी में ले जाएंrecreate_struct- एक चरण में एक संरचना बदलें: वैकल्पिक रूप से एक मौजूदा समान-नाम वाले प्रकार को हटाएं, फिर फ़ील्ड JSON के साथ बनाएं (create_struct के समान आकार)remove_struct_field- स्ट्रक्ट फ़ील्ड हटाएंresize_struct- कुल बाइट आकार द्वारा एक मौजूदा संरचना को बढ़ाएं या घटाएंresolve_duplicate_type- सरल नाम से डुप्लिकेट डेटा प्रकार खोजें; जब एक बड़ा विहित प्रकार मौजूद हो तो अप्रयुक्त /Demangler आकार-1 स्टब्स हटाएंset_function_prototype- फ़ंक्शन प्रोटोटाइप सेट करें (रिटर्न प्रकार, पैरामीटर प्रकार, कॉलिंग कन्वेंशन)set_global- परमाणु रूप से एक वैश्विक चर पर नाम + प्रकार + प्लेट-टिप्पणी + सारणी लंबाई लागू करेंset_local_variable_type- चर प्रकार सेट करेंset_parameter_type- पैरामीटर प्रकार सेट करेंset_variable_storage- चर भंडारण सेट करेंvalidate_data_type- डेटा प्रकार सिंटैक्स मान्य करेंvalidate_data_type_exists- जांचें कि क्या डेटा प्रकार मौजूद हैvalidate_function_prototype- फ़ंक्शन प्रोटोटाइप मान्य करें
नामकरण और लेबल
batch_create_labels- एकाधिक लेबल बनाएंbatch_delete_labels- एकाधिक लेबल हटाएंbatch_rename_function_components- बैच फ़ंक्शन घटकों का नाम बदलेंcreate_label- लेबल बनाएंdelete_label- पते पर लेबल हटाएंrename_data- डेटा प्रतीक का नाम बदलेंrename_external_location- बाहरी स्थान का नाम बदलेंrename_function- नाम से फ़ंक्शन का नाम बदलेंrename_function_by_address- पते से फ़ंक्शन का नाम बदलेंrename_global_variable- वैश्विक चर का नाम बदलेंrename_label- लेबल का नाम बदलेंrename_or_label- लेबल का नाम बदलें या बनाएंrename_variable- एक फ़ंक्शन में एक चर का नाम बदलेंrename_variables- बैच चरों का नाम बदलें
टिप्पणियाँ और बुकमार्क
batch_set_comments- एकाधिक टिप्पणियाँ सेट करेंclear_function_comments- एक फ़ंक्शन के लिए सभी टिप्पणियाँ साफ़ करेंdelete_bookmark- बुकमार्क हटाएंget_comment- किसी भी पते पर सूची टिप्पणियाँ (प्लेट/प्री/ईओएल/पोस्ट/दोहराने योग्य) प्राप्त करें, जिसमें डेटा पते शामिल हैं (get_plate_comment के विपरीत जिसके लिए एक फ़ंक्शन आवश्यक है)get_plate_comment- प्लेट टिप्पणी प्राप्त करेंset_bookmark- बुकमार्क सेट करेंset_comment- किसी भी पते पर दिए गए प्रकार (प्लेट/प्री/ईओएल/पोस्ट/दोहराने योग्य) की एक सूची टिप्पणी सेट करें, जिसमें डेटा पते शामिल हैंset_decompiler_comment- PRE_COMMENT सेट करेंset_disassembly_comment- EOL_COMMENT सेट करेंset_plate_comment- प्लेट टिप्पणी सेट करें
विश्लेषण
analyze_api_call_chains- एपीआई कॉल श्रृंखलाओं का विश्लेषण करेंanalyze_call_graph- फ़ंक्शन कॉल ग्राफ पैटर्न का विश्लेषण करेंanalyze_control_flow- नियंत्रण प्रवाह का विश्लेषण करेंanalyze_data_region- डेटा क्षेत्र का विश्लेषण करेंanalyze_dataflow- एक फ़ंक्शन के माध्यम से मान प्रसार का पता लगाएं (PCode ग्राफ, आगे/पीछे)analyze_for_documentation- समग्र RE दस्तावेज़ीकरण विश्लेषण (डीकम्पाइल + वर्गीकरण + चर + पूर्णता)analyze_function_complete- व्यापक एकल-कॉल फ़ंक्शन विश्लेषणanalyze_function_completeness- दस्तावेज़ीकरण पूर्णता का विश्लेषण करेंanalyze_struct_field_usage- स्ट्रक्ट फ़ील्ड उपयोग का विश्लेषण करेंapply_data_classification- डेटा वर्गीकरण लागू करेंbatch_analyze_completeness- कई फ़ंक्शनों के लिए बैच में पूर्णता का विश्लेषण करेंbatch_apply_documentation- एक कॉल में एक फ़ंक्शन के लिए सभी दस्तावेज़ीकरण लागू करेंbatch_decompile- एक बार में कई फ़ंक्शनों को डीकम्पाइल करेंcan_rename_at_address- जांचें कि क्या पते का नाम बदला जा सकता हैclear_instruction_flow_override- फ्लो ओवरराइड साफ़ करेंconfigure_analyzer- एक विश्लेषण प्लगइन कॉन्फ़िगर करेंcreate_function- पते पर फ़ंक्शन बनाएंcreate_memory_block- मेमोरी ब्लॉक बनाएंdelete_function- पते पर फ़ंक्शन हटाएंdetect_array_bounds- सारणी सीमाओं का पता लगाएंdetect_crypto_constants- क्रिप्टो स्थिरांक का पता लगाएंdetect_malware_behaviors- मैलवेयर व्यवहार का पता लगाएंextract_iocs_with_context- संदर्भ के साथ IOCs निकालेंfind_anti_analysis_techniques- एंटी-विश्लेषण तकनीक खोजेंfind_code_gaps- निष्पादन योग्य मेमोरी में फ़ंक्शनों के बीच अपरिभाषित बाइट्स के अंतराल खोजेंfind_dead_code- डेड कोड खोजेंfind_next_undefined_function- अगला अपरिभाषित फ़ंक्शन खोजेंget_assembly_context- असेंबली संदर्भ प्राप्त करेंget_field_access_context- फ़ील्ड एक्सेस संदर्भ प्राप्त करेंget_function_pcode- एक फ़ंक्शन के लिए कच्चा P-कोड डंप करें (मुद्दा #192)inspect_memory_content- मेमोरी बाइट्स का निरीक्षण करेंlist_analyzers- उपलब्ध विश्लेषण प्लगइन सूचीबद्ध करेंread_memory- कच्ची मेमोरी पढ़ेंrun_analysis- वर्तमान प्रोग्राम पर ऑटो-विश्लेषण चलाएंsearch_instructions- म्नेमोनिक और/या ऑपरेंड सबस्ट्रिंग द्वारा निर्देश खोजेंsuggest_field_names- फ़ील्ड नाम सुझाएं
क्रॉस-बाइनरी दस्तावेज़ीकरण और संग्रह
archive_ingest_function- एक एकल फ़ंक्शन के दस्तावेज़ीकरण को क्रॉस-वर्जन संग्रह में शामिल करें (bsim Postgres पर re_kb.functions)archive_ingest_program- एक प्रोग्राम में प्रत्येक फ़ंक्शन को बल्क-इन्जेस्ट करके क्रॉस-वर्जन दस्तावेज़ीकरण संग्रह में शामिल करेंbatch_string_anchor_report- स्रोत फ़ाइल स्ट्रिंग्स और उनके FUN_* फ़ंक्शनों की रिपोर्टbulk_fuzzy_match- बल्क क्रॉस-बाइनरी फ़ंक्शन मिलानfind_similar_functions_fuzzy- क्रॉस-बाइनरी फ़ज़ी फ़ंक्शन मिलानmerge_program_documentation- बल्क मर्ज: मिलान पतों पर एक प्रोग्राम से दूसरे में सभी RE दस्तावेज़ीकरण (फ़ंक्शन नाम, हस्ताक्षर, प्लेट टिप्पणियाँ, EOL/PRE/POST पर निर्देश टिप्पणियाँ, गैर-डिफ़ॉल्ट लेबल और वैश्विक प्रतीक) कॉपी करें
उपयोगिता और दस्तावेज़ीकरण स्थानांतरण
apply_function_documentation- फ़ंक्शन दस्तावेज़ीकरण लागू करेंcheck_connection- स्वास्थ्य जांच एंडपॉइंटcompare_programs_documentation- प्रोग्रामों में दस्तावेज़ीकरण की तुलना करेंconvert_number- आधारों के बीच संख्या परिवर्तित करेंdiff_functions- दो फ़ंक्शनों का अंतर देखेंfind_undocumented_by_string- स्ट्रिंग का संदर्भ देने वाले अदस्तावेज़ित फ़ंक्शन खोजेंget_bulk_function_hashes- बल्क फ़ंक्शन हैश प्राप्त करेंget_function_documentation- फ़ंक्शन दस्तावेज़ीकरण निर्यात करेंget_function_hash- फ़ंक्शन हैश प्राप्त करेंget_function_signature- फ़ंक्शन फीचर हस्ताक्षर प्राप्त करेंget_metadata- प्रोग्राम मेटाडेटा प्राप्त करेंget_version- प्लगइन संस्करण प्राप्त करेंhealth- हेडलेस सर्वर के लिए स्वास्थ्य जांच एंडपॉइंटmcp_health- HTTP सर्वर स्वास्थ्य: पूल आँकड़े, अपटाइम, मेमोरी, सक्रिय अनुरोध गणनाmcp_schema- एंडपॉइंट मेटाडेटा के साथ मशीन-पठनीय एपीआई स्कीमाtool_goto_address- CodeBrowser सूची और डिकम्पाइलर को एक विशिष्ट पते पर नेविगेट करेंtool_launch_codebrowser- CodeBrowser में एक फ़ाइल खोलें, यदि आवश्यक हो तो एक नया लॉन्च करेंtool_running_tools- सभी चल रहे Ghidra टूल विंडो सूचीबद्ध करें
एम्यूलेशन
emulate_function- नियंत्रित रजिस्टर/मेमोरी इनपुट के साथ एक एकल फ़ंक्शन का एम्यूलेट करेंemulate_hash_batch- ब्रूट-फोर्स एपीआई हैश रिज़ॉल्यूशन
स्क्रिप्टिंग
run_ghidra_script- आउटपुट कैप्चर के साथ स्क्रिप्ट चलाएंrun_script_inline- इनलाइन स्क्रिप्ट कोड चलाएं
Ghidra सर्वर और संस्करण नियंत्रण
server_admin_set_permissions- एक रिपॉजिटरी पर उपयोगकर्ता अनुमतियाँ सेट करेंserver_admin_terminate_all_checkouts- एक फ़ोल्डर में सभी चेकआउट को पुनरावर्ती रूप से समाप्त करेंserver_admin_terminate_checkout- एक एकल फ़ाइल पर सभी चेकआउट समाप्त करेंserver_admin_users- सर्वर पर सभी उपयोगकर्ताओं को सूचीबद्ध करेंserver_authenticate- प्रोग्रामेटिक प्रमाणीकरण के लिए सर्वर क्रेडेंशियल पंजीकृत करेंserver_checkouts- एक फ़ोल्डर में सभी चेक आउट फ़ाइलों को सूचीबद्ध करें, जिसमें सर्वर-साइड चेकआउट शामिल हैंserver_connect- Ghidra सर्वर से कनेक्ट करेंserver_disconnect- Ghidra सर्वर से डिस्कनेक्ट करेंserver_repositories- कनेक्टेड सर्वर पर रिपॉजिटरी सूचीबद्ध करेंserver_repository_create- सर्वर पर एक नई रिपॉजिटरी बनाएंserver_repository_file- सर्वर रिपॉजिटरी से फ़ाइल जानकारी प्राप्त करेंserver_repository_files- एक सर्वर रिपॉजिटरी फ़ोल्डर में फ़ाइलें सूचीबद्ध करेंserver_version_control_add- संस्करण नियंत्रण में एक फ़ाइल जोड़ेंserver_version_control_checkin- एक संस्करण-नियंत्रित फ़ाइल चेक इन करेंserver_version_control_checkout- एक संस्करण-नियंत्रित फ़ाइल चेक आउट करेंserver_version_control_undo_checkout- एक फ़ाइल चेकआउट पूर्ववत करेंserver_version_history- एक फ़ाइल के लिए संस्करण इतिहास प्राप्त करें
डीबगर (Ghidra TraceRmi — केवल GUI)
Windows होस्ट पर जहां ब्रिज का WinDbg डीबगर प्रॉक्सी सक्रिय है (GHIDRA_DEBUGGER_URL), टकराने वाले नामों को _2 प्रत्यय मिलता है (जैसे debugger_status_2)।
debugger_dynamic_to_static- वर्तमान ट्रेस से एक रनटाइम डायनामिक पते को वापस स्थिर Ghidra प्रोग्राम पते में अनुवाद करेंdebugger_interrupt- चल रहे लक्ष्य को बाधित करें (इसमें घुसें)debugger_launch- Ghidra के Trace RMI डीबगर लॉन्चर के माध्यम से एक निष्पादन योग्य लॉन्च करेंdebugger_launch_offers- वर्तमान प्रोग्राम के लिए उपलब्ध डीबगर लॉन्च/अटैच विकल्प सूचीबद्ध करेंdebugger_list_breakpoints- वर्तमान ट्रेस में सभी ब्रेकपॉइंट सूचीबद्ध करेंdebugger_modules- डीबग किए गए प्रोसेस में लोड किए गए मॉड्यूल (DLLs/EXEs) सूचीबद्ध करेंdebugger_read_memory- डीबग किए गए प्रोसेस से मेमोरी पढ़ेंdebugger_registers- वर्तमान डीबग ट्रेस स्नैपशॉट से सीपीयू रजिस्टर पढ़ेंdebugger_remove_breakpoint- एक पते पर एक ब्रेकपॉइंट हटाएंdebugger_resume- डीबग किए गए प्रोसेस का निष्पादन फिर से शुरू करेंdebugger_set_breakpoint- ट्रेस में एक पते पर एक सॉफ़्टवेयर निष्पादन ब्रेकपॉइंट सेट करेंdebugger_stack_trace- वर्तमान थ्रेड के लिए कॉल स्टैक बैकट्रेस प्राप्त करेंdebugger_static_to_dynamic- एक स्थिर Ghidra प्रोग्राम पते को वर्तमान ट्रेस में एक रनटाइम डायनामिक पते में अनुवाद करेंdebugger_status- डीबगर स्थिति प्राप्त करें: सक्रिय ट्रेस, थ्रेड, निष्पादन स्थिति, मॉड्यूल गणनाdebugger_step_into- अगले निर्देश में एकल-चरण (कॉल का अनुसरण करता है)debugger_step_out- वर्तमान फ़ंक्शन से बाहर निकलें (रिटर्न तक चलाएं)debugger_step_over- अगले निर्देश पर कदम (कॉल का अनुसरण नहीं करता)debugger_traces- सभी खुले डीबग ट्रेस सूचीबद्ध करें
सिस्टम
prompt_policy- अस्थायी रूप से स्कोप्ड ऑटोमेशन प्रॉम्प्ट हैंडलिंग सक्षम, अक्षम या क्वेरी करें
ब्रिज स्थैतिक उपकरणपायथन ब्रिज में ही परिभाषित (इंस्टेंस डिस्कवरी, टूल-ग्रुप प्रबंधन); Ghidra कनेक्शन से पहले भी हमेशा उपलब्ध। ब्रिज 22 debugger_* WinDbg टूल्स को भी प्रॉक्सी करता है जब GHIDRA_DEBUGGER_URL स्टैंडअलोन डीबगर सर्वर की ओर इंगित करता है।
check_tools- रिपोर्ट करें कि वर्तमान में कौन से टूल पंजीकृत और कॉल करने योग्य हैंconnect_instance- ब्रिज को किसी विशिष्ट Ghidra इंस्टेंस से कनेक्ट करेंimport_file- डिस्क से एक बाइनरी को वर्तमान प्रोजेक्ट में आयात करें और इसे खोलेंlist_instances- चल रहे Ghidra MCP इंस्टेंस खोजें (UDS + TCP पोर्ट स्कैन)list_tool_groups- टूल ग्रुप और उनकी लोड स्थिति सूचीबद्ध करेंload_tool_group- MCP क्लाइंट के साथ एक टूल ग्रुप के डायनामिक टूल पंजीकृत करेंsearch_tools- कीवर्ड द्वारा पूर्ण टूल कैटलॉग खोजेंunload_tool_group- एक टूल ग्रुप के डायनामिक टूल को अपंजीकृत करें
संस्करण इतिहास के लिए CHANGELOG.md देखें।
🏗️ आर्किटेक्चर```
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ AI/Automation │◄──►│ MCP Bridge │◄──►│ Ghidra Plugin │ │ Tools │ │ (bridge_mcp_ │ │ (GhidraMCP.jar) │ │ (Claude, etc.) │ │ ghidra/) │ │ │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ │ │ MCP Protocol HTTP REST Ghidra API (stdio/streamable-http) (localhost:8089) (Program, Listing)
### घटक
- **python/bridge_mcp_ghidra/** — पायथन MCP सर्वर पैकेज (`ghidra-mcp-bridge` व्हील के रूप में भेजा जाता है; `bridge-mcp-ghidra` कंसोल स्क्रिप्ट) जो MCP प्रोटोकॉल को HTTP कॉल में अनुवाद करता है (225 कैटलॉग प्रविष्टियाँ)
- **GhidraMCP.jar** — गिड्रा प्लगइन जो HTTP के माध्यम से विश्लेषण क्षमताओं को उजागर करता है (175 GUI एंडपॉइंट्स)
- **GhidraMCPHeadlessServer** — स्टैंडअलोन हेडलेस सर्वर — 183 एंडपॉइंट्स, कोई GUI आवश्यक नहीं
- **ghidra_scripts/** — सामान्य कार्यों के लिए ऑटोमेशन स्क्रिप्ट्स का संग्रह
## 🔧 विकास
### स्रोत से बनाना```bash
# Recommended: direct Python-first workflow
python -m tools.setup ensure-prereqs --ghidra-path "C:\ghidra_12.1.2_PUBLIC"
python -m tools.setup build
python -m tools.setup deploy --ghidra-path "C:\ghidra_12.1.2_PUBLIC"
# Version bump (updates all maintained version references atomically)
python -m tools.setup bump-version --new X.Y.Z
The authoritative build system today is Maven. tools.setup, the VS Code tasks, and the documented deploy flow all build through pom.xml and write artifacts to target/. build.gradle remains in the repo as a manual fallback for direct Ghidra/Gradle users, but it is not the primary path.
Command Reference
| कमांड | यह क्या करता है |
|---|---|
ensure-prereqs | Python निर्भरताएँ + Ghidra Maven JARs एक साथ इंस्टॉल करें। नई मशीन पर यहाँ से शुरू करें। |
preflight | बिना कोई बदलाव किए Python, बिल्ड टूल, Ghidra पथ, और JAR उपलब्धता को मान्य करें। नेटवर्क पहुँच की जाँच करने के लिए --strict जोड़ें। |
build | Maven के माध्यम से प्लगइन JAR और एक्सटेंशन ZIP बनाएँ (या Gradle जब TOOLS_SETUP_BACKEND=gradle हो)। |
deploy | निर्मित एक्सटेंशन को Ghidra प्रोफ़ाइल में कॉपी करें और स्वतः-सक्रियण के लिए FrontEndTool.xml को पैच करें। |
start-ghidra | कॉन्फ़िगर की गई Ghidra स्थापना लॉन्च करें। |
clean | Maven/Gradle बिल्ड आउटपुट (target/, build/) हटाएँ। |
clean-all | बिल्ड आउटपुट के साथ-साथ स्थानीय कैश आर्टिफैक्ट्स (.m2 Ghidra JARs, आदि) हटाएँ। |
install-ghidra-deps | केवल Ghidra JARs को ~/.m2 में इंस्टॉल करें। जब बिल्ड वातावरण बदलता है तो उपयोगी। |
install-python-deps | uv sync के माध्यम से Python निर्भरता समूह स्थापित करें। |
run-tests | Java ऑफ़लाइन परीक्षण सूट चलाएँ (लाइव Ghidra की आवश्यकता नहीं)। |
verify-version | जाँचें कि संस्करण स्ट्रिंग्स pom.xml, CHANGELOG.md, और README.md में सुसंगत हैं। |
bump-version --new X.Y.Z | सभी संस्करण संदर्भों को परमाणु रूप से अद्यतन करें। git टैग बनाने के लिए --tag पास करें। |
अधिकांश कमांड द्वारा स्वीकार किए जाने वाले सामान्य फ़्लैग:
| फ़्लैग | विवरण |
|---|---|
--ghidra-path PATH | Ghidra स्थापना निर्देशिका। डिफ़ॉल्ट रूप से .env से GHIDRA_PATH। |
--dry-run | कार्यों को निष्पादित किए बिना प्रिंट करें। |
--force | पहले से मौजूद होने पर भी Ghidra JARs को पुनर्स्थापित करें (install-ghidra-deps, ensure-prereqs). |
--with-debugger | डीबगर Python आवश्यकताओं को बलपूर्वक स्थापित करें (केवल Windows). |
--use-debugger-toggle | यह निर्णय लेने के लिए कि डीबगर डिप्स स्थापित करें या नहीं, .env से INSTALL_DEBUGGER_DEPS पढ़ें। |
--test TIER | (deploy केवल) लाइव डिप्लॉय रिग्रेशन टियर जैसे release या debugger-live में ऑप्ट-इन करें। |
--strict | (preflight केवल) Maven Central और PyPI के लिए नेटवर्क पहुँच की भी जाँच करें। |
डिप्लॉय परीक्षण टियर ऑप्ट-इन हैं क्योंकि बेंचमार्क टियर सक्रिय Ghidra प्रोजेक्ट में Benchmark.dll और BenchmarkDebug.exe को आयात/रीसेट कर सकते हैं। रिलीज़ काटने से पहले --test release का उपयोग करें, या जब आप चाहते हैं कि आपकी मशीन पर हर डिप्लॉय लाइव बेंचमार्क रिग्रेशन चलाए, तो स्थानीय .env में GHIDRA_MCP_DEPLOY_TESTS=release सेट करें। देखें Testing and Release Regression।```text
Standard first-time setup and deploy
python -m tools.setup ensure-prereqs --ghidra-path "C:\ghidra_12.1.2_PUBLIC" python -m tools.setup build python -m tools.setup deploy --ghidra-path "C:\ghidra_12.1.2_PUBLIC"
Preflight check before deploying
python -m tools.setup preflight --strict --ghidra-path "C:\ghidra_12.1.2_PUBLIC"
Version bump and tag
python -m tools.setup bump-version --new X.Y.Z --tag
Run offline Java tests
python -m tools.setup run-tests
Show full help
python -m tools.setup --help
### परियोजना संरचना```
ghidra-mcp/
├── pyproject.toml # uv project (ghidra-mcp-bridge wheel + dependency groups)
├── python/bridge_mcp_ghidra/ # MCP server package (Python, 225 catalog entries)
├── src/main/java/ # Ghidra plugin + headless server (Java)
│ └── com/xebyte/
│ ├── GhidraMCPPlugin.java # GUI plugin (196 endpoints)
│ ├── headless/ # Headless server (183 endpoints)
│ └── core/ # Shared service layer (12 services)
├── debugger/ # Optional standalone debugger server (port 8099)
├── ghidra_scripts/ # Automation scripts for batch workflows
├── tests/ # Python unit tests + endpoint catalog
│ ├── unit/ # Catalog consistency, schema, tool function tests
│ └── endpoints.json # Endpoint specification (225 entries)
├── docs/ # Documentation
│ ├── prompts/ # AI workflow prompts (V5 documentation workflows)
│ ├── releases/ # Version release notes
│ └── project-management/ # Contributor planning docs (Gradle migration, etc.)
├── tools/setup/ # Build and deployment CLI (python -m tools.setup)
├── fun-doc/ # Internal RE curation tool — not part of the MCP plugin
│ # Priority-queue worker, LLM scoring, web dashboard.
│ # See fun-doc/README.md for details.
└── .github/workflows/ # CI/CD pipelines
लाइब्रेरी निर्भरताएँ
कम्पाइलेशन से पहले Ghidra JARs को आपके स्थानीय Maven रिपॉजिटरी (~/.m2/repository) में इंस्टॉल किया जाना चाहिए।
यह प्रति मशीन एक बार का सेटअप है, और फिर से जब आपका Ghidra वर्ज़न बदलता है।
-Deploy अब डिफ़ॉल्ट रूप से ये स्वचालित रूप से इंस्टॉल करता है।
यह टूल निम्नलिखित के बीच वर्ज़न संगति लागू करता है:
pom.xml(ghidra.version)--ghidra-pathवर्ज़न सेगमेंट (जैसे,ghidra_12.1.2_PUBLIC)
यदि ये मेल नहीं खाते हैं, तो डिप्लॉयमेंट स्पष्ट त्रुटि के साथ तुरंत विफल हो जाता है।
समस्या निवारण: वर्ज़न बेमेल
यदि आपको वर्ज़न बेमेल त्रुटि दिखती है, तो दोनों मानों को संरेखित करें:
pom.xml→ghidra.version--ghidra-pathवर्ज़न सेगमेंट (ghidra_X.Y.Z_PUBLIC)
फिर पुनः चलाएँ:```text python -m tools.setup preflight --ghidra-path "C:\ghidra_12.1.2_PUBLIC"
- `index.js` डोक्यूसॉरस के लिए डिफ़ॉल्ट टेम्पलेट को संशोधित करता है; अधिक विवरण नीचे देखें। यह डोक्यूसॉरस कॉन्फ़िगरेशन फ़ाइल, config.json, से जानकारी का उपयोग करता है, जो डोक्यूसॉरस साइट निर्देशिका (शीर्ष-स्तर) में रखी जाती है। स्क्रिप्ट चलाने के बाद, `website/siteConfig.js` डिफ़ॉल्ट से तदनुसार संशोधित हो जाता है।```text
# Windows
python -m tools.setup install-ghidra-deps --ghidra-path "C:\path\to\ghidra_12.1.2_PUBLIC"
आवश्यक लाइब्रेरीज़ (14 JARs, ~37MB):
| लाइब्रेरी | स्रोत पथ | उद्देश्य |
|---|---|---|
| Base.jar | Features/Base/lib/ | मुख्य Ghidra कार्यक्षमता |
| Decompiler.jar | Features/Decompiler/lib/ | डिकंपाइलेशन इंजन |
| PDB.jar | Features/PDB/lib/ | Microsoft PDB प्रतीक समर्थन |
| FunctionID.jar | Features/FunctionID/lib/ | फ़ंक्शन पहचान |
| SoftwareModeling.jar | Framework/SoftwareModeling/lib/ | प्रोग्राम मॉडल API |
| Project.jar | Framework/Project/lib/ | प्रोजेक्ट प्रबंधन |
| Docking.jar | Framework/Docking/lib/ | UI डॉकिंग फ्रेमवर्क |
| Generic.jar | Framework/Generic/lib/ | सामान्य उपयोगिताएँ |
| Utility.jar | Framework/Utility/lib/ | मुख्य उपयोगिताएँ |
| Gui.jar | Framework/Gui/lib/ | GUI घटक |
| FileSystem.jar | Framework/FileSystem/lib/ | फ़ाइल सिस्टम समर्थन |
| Graph.jar | Framework/Graph/lib/ | ग्राफ/कॉल ग्राफ विश्लेषण |
| DB.jar | Framework/DB/lib/ | डेटाबेस संचालन |
| Emulation.jar | Framework/Emulation/lib/ | P-कोड अनुकरण |
नोट: लाइब्रेरीज़ रिपॉजिटरी में शामिल नहीं हैं (
.gitignoreदेखें)। निर्माण से पहले आपको उन्हें अपने Ghidra इंस्टॉलेशन से स्थापित करना होगा।
ऑटोमेशन प्रवेश बिंदु:
python -m tools.setupसमर्थित सेटअप/निर्माण/तैनाती/संस्करण इंटरफ़ेस हैensure-prereqs,build,deploy,preflight,clean-all, औरbump-versionका सीधे उपयोग करें- ये कमांड वर्तमान में प्रामाणिक Java निर्माण बैकएंड के रूप में Maven का उपयोग करते हैं
विकास सुविधाएँ
- स्वचालित तैनाती: संस्करण-जागरूक तैनाती स्क्रिप्ट
- बैच संचालन: API कॉल को 93% तक कम करता है
- परमाणु लेन-देन: सब-या-कुछ नहीं शब्दार्थ
- व्यापक लॉगिंग: डीबग और ट्रेस क्षमताएँ
📚 दस्तावेज़ीकरण
मुख्य दस्तावेज़ीकरण
- दस्तावेज़ीकरण सूची - पूर्ण दस्तावेज़ीकरण नेविगेशन
- प्रोजेक्ट संरचना - परियोजना संगठन गाइड
- परीक्षण और रिलीज़ रिग्रेशन - स्थानीय परीक्षण, CI, लाइव Ghidra रिग्रेशन, और रिलीज़ गेट
- नामकरण परंपराएँ - कोड नामकरण मानक
- हंगेरियन नोटेशन - चर नामकरण गाइड
AI कार्यप्रवाह प्रॉम्प्ट
- फ़ंक्शन दस्तावेज़ीकरण V5 — प्राथमिक कार्यप्रवाह: हंगेरियन नोटेशन, प्रकार ऑडिटिंग, और सत्यापन स्कोरिंग के साथ 7-चरणीय प्रक्रिया
- बैच दस्तावेज़ीकरण V5 — बहु-फ़ंक्शन प्रसंस्करण के लिए समानांतर उप-एजेंट प्रेषण
- अनाथ कोड खोज — अज्ञात फ़ंक्शन के लिए स्वचालित स्कैनर
- डेटा प्रकार जाँच — व्यवस्थित संरचना खोज
- क्रॉस-संस्करण मिलान — हैश-आधारित फ़ंक्शन मिलान
- त्वरित प्रारंभ प्रॉम्प्ट — सरलीकृत शुरुआती कार्यप्रवाह
- सभी प्रॉम्प्ट — पूर्ण प्रॉम्प्ट सूची
रिलीज़ इतिहास
- पूर्ण चेंजलॉग - सभी संस्करण रिलीज़ नोट्स
- रिलीज़ नोट्स - विस्तृत रिलीज़ दस्तावेज़ीकरण
🐳 हेडलेस सर्वर (Docker)
GhidraMCP में ग्राफिकल यूज़र इंटरफ़ेस (GUI) के बिना स्वचालित विश्लेषण के लिए एक हेडलेस सर्वर मोड शामिल है।
Docker के साथ त्वरित प्रारंभ```bash
Build and run
docker-compose up -d ghidra-mcp
Test connection
curl http://localhost:8089/check_connection
Connection OK - GhidraMCP Headless Server v5.17.0
### हेडलेस API कार्यप्रवाह```bash
# 1. Load a binary
curl -X POST -d "file=/data/program.exe" http://localhost:8089/load_program
# 2. Run auto-analysis (identifies functions, strings, data types)
curl -X POST http://localhost:8089/run_analysis
# 3. List discovered functions
curl "http://localhost:8089/list_functions?limit=20"
# 4. Decompile a function
curl "http://localhost:8089/decompile_function?address=0x401000"
# 5. Get metadata
curl http://localhost:8089/get_metadata
मुख्य हेडलेस एंडपॉइंट्स
| एंडपॉइंट | विधि | विवरण |
|---|---|---|
/load_program | POST | विश्लेषण के लिए बाइनरी फ़ाइल लोड करें |
/run_analysis | POST | Ghidra स्वचालित-विश्लेषण चलाएँ |
/list_functions | GET | सभी खोजे गए फ़ंक्शन सूचीबद्ध करें |
/list_exports | GET | निर्यातित प्रतीक सूचीबद्ध करें |
/list_imports | GET | आयातित प्रतीक सूचीबद्ध करें |
/decompile_function | GET | फ़ंक्शन को C कोड में डीकंपाइल करें |
/create_function | POST | पते पर फ़ंक्शन बनाएँ |
/get_metadata | GET | प्रोग्राम मेटाडेटा प्राप्त करें |
/create_project | POST | Ghidra प्रोजेक्ट बनाएँ |
/list_analyzers | GET | उपलब्ध विश्लेषक सूचीबद्ध करें |
/server/status | GET | Ghidra सर्वर कनेक्शन जाँचें |
कॉन्फ़िगरेशन
Docker के लिए पर्यावरण चर:
GHIDRA_MCP_PORT- सर्वर पोर्ट (डिफ़ॉल्ट: 8089)GHIDRA_MCP_BIND_ADDRESS- बाइंड पता (डिफ़ॉल्ट: Docker में 0.0.0.0)JAVA_OPTS- JVM विकल्प (डिफ़ॉल्ट: -Xmx4g -XX:+UseG1GC)
🤝 योगदान
विस्तृत योगदान दिशानिर्देशों के लिए CONTRIBUTING.md देखें।
त्वरित आरंभ
- रिपॉजिटरी को फ़ोर्क करें
- एक फ़ीचर ब्रांच बनाएँ (
git checkout -b feature/amazing-feature) - अपने परिवर्तन बनाएँ और परीक्षण करें (
mvn clean package assembly:single -DskipTestsयाGHIDRA_INSTALL_DIR=/path/to/ghidra gradle buildExtension) - आवश्यकतानुसार दस्तावेज़ीकरण अपडेट करें
- अपने परिवर्तन कमिट करें (
git commit -m 'Add amazing feature') - ब्रांच पर पुश करें (
git push origin feature/amazing-feature) - एक पुल अनुरोध खोलें
📄 लाइसेंस
यह प्रोजेक्ट अपाचे लाइसेंस 2.0 के तहत लाइसेंस प्राप्त है - विवरण के लिए LICENSE फ़ाइल देखें।
🏆 उत्पादन स्थिति
| मीट्रिक | मान |
|---|---|
| संस्करण | 5.17.0 |
| MCP उपकरण | 249 पूरी तरह से लागू |
| GUI एंडपॉइंट्स | 196 (GhidraMCPPlugin) |
| हेडलेस एंडपॉइंट्स | 195 (GhidraMCPHeadlessServer) |
| संकलन | ✅ 100% सफलता |
| बैच दक्षता | 93% API कॉल में कमी |
| एआई वर्कफ़्लो | 7 सिद्ध दस्तावेज़ीकरण वर्कफ़्लो |
| Ghidra स्क्रिप्ट्स | स्वचालन स्क्रिप्ट्स शामिल |
| दस्तावेज़ीकरण | AI प्रॉम्प्ट्स के साथ व्यापक |
संस्करण इतिहास और रिलीज़ नोट्स के लिए CHANGELOG.md देखें।
🙏 आभार
यह प्रोजेक्ट मूल रूप से अगस्त 2025 में LaurieWired/GhidraMCP से व्युत्पन्न हुआ था और तब से इसे काफी हद तक फिर से लिखा और विस्तारित किया गया है। हम प्रारंभिक बिंदु के रूप में LaurieWired के मूल कार्य को स्वीकार करते हैं। लाइसेंस एट्रिब्यूशन के लिए NOTICE देखें।
👥 योगदानकर्ता
इस प्रोजेक्ट को समर्पित योगदानकर्ताओं के कार्य से लाभ हुआ है:
मुख्य योगदानकर्ता
@heeen — महत्वपूर्ण योगदान:
- क्रॉस-बाइनरी तुलना के लिए फ़ज़ी फ़ंक्शन मिलान और संरचित डिफ़ (#13)
- स्क्रिप्ट निष्पादन में सुधार और बग फिक्स (#12)
- नए API एंडपॉइंट:
save_program,exit_ghidra,delete_function,create_memory_block,run_script_inline(#11) - आर्किटेक्चरल दृष्टि: एनोटेशन-संचालित डिज़ाइन, UDS ट्रांसपोर्ट, Python ब्रिज ऑप्टिमाइज़ेशन प्रस्ताव
@huehuehuehueing — महत्वपूर्ण योगदान:
-
पता-स्थान उपसर्ग समर्थन — संपूर्ण एंडपॉइंट सतह पर पता पार्सिंग में
<space>:<hex>सिंटैक्स (जैसे,mem:1000,code:ff00) जोड़ा गया, जिससे एम्बेडेड फर्मवेयर जैसे मल्टी-स्पेस लक्ष्यों को अनलॉक किया गया (#84, #65 बंद) -
वैकल्पिक
programपैरामीटर + आवश्यक-पैराम स्कीमा फिक्स — हर एंडपॉइंट परprogramको समझदार currentProgram फ़ॉलबैक के साथ वैकल्पिक बनाया गया, और कई आवश्यक-बनाम-वैकल्पिक स्कीमा बग्स को ठीक किया गया जो कैटलॉग को विरासत में मिले थे (#92) -
#44 (डेटा-प्रकार / एनम टूल्स) को बीज दिया — वह मुद्दा जिसने v5.0 एनम + स्ट्रक्ट प्रवर्तन परत को प्रेरित किया
-
Ghidra टीम - अविश्वसनीय रिवर्स इंजीनियरिंग प्लेटफ़ॉर्म के लिए
-
मॉडल कॉन्टेक्स्ट प्रोटोकॉल - मानकीकृत AI एकीकरण ढांचे के लिए
-
योगदानकर्ता - परीक्षण, प्रतिक्रिया और सुधारों के लिए
🔗 संबंधित परियोजनाएँ
- re-universe — बड़े पैमाने पर बाइनरी समानता विश्लेषण के लिए Ghidra BSim PostgreSQL प्लेटफ़ॉर्म। AI-संचालित रिवर्स इंजीनियरिंग वर्कफ़्लो के लिए GhidraMCP के साथ पूरी तरह से मेल खाता है।
- cheat-engine-server-python — गतिशील मेमोरी विश्लेषण और डीबगिंग के लिए MCP सर्वर।
एंटरप्राइज़-ग्रेड विश्वसनीयता और व्यापक बाइनरी विश्लेषण क्षमताओं के साथ उत्पादन परिनियोजन के लिए तैयार।