
Ghidra में Python 3 स्क्रिप्टिंग जोड़ने के लिए FLARE टीम का ओपन-सोर्स एक्सटेंशन।
Ghidrathon एक Ghidra एक्सटेंशन है जो Ghidra में Python 3 स्क्रिप्टिंग क्षमताएँ जोड़ता है। क्यों? Ghidra मूल रूप से Java और Jython में स्क्रिप्टिंग का समर्थन करता है। दुर्भाग्य से, कई ओपन-सोर्स विश्लेषण उपकरण, जैसे capa, Unicorn Engine, angr, आदि, Python 3 में लिखे गए हैं, जिससे इन उपकरणों को Ghidra में उपयोग करना कठिन और कुछ मामलों में असंभव हो जाता है। इसके अलावा, सुरक्षा समुदाय ने IDA Pro और Binary Ninja जैसे अन्य SRE फ्रेमवर्क के लिए कई बेहतरीन प्लगइन जारी किए हैं, लेकिन फिर से, क्योंकि इनमें से कई प्लगइन Python 3 का उपयोग करते हैं, उन्हें Ghidra में पोर्ट करना कठिन है। Ghidrathon आपको Ghidra में मौजूदा Python 3 टूलिंग का उपयोग करने और नई टूलिंग विकसित करने में मदद करता है, और आधुनिक Python का उपयोग करके Ghidra को स्क्रिप्ट करने में सहायता करता है, जो Ghidra के UI के साथ कसकर एकीकृत होता है। यह Jython के माध्यम से कार्यान्वित मौजूदा Python 2.7 एक्सटेंशन को प्रतिस्थापित करता है। इसमें इंटरैक्टिव इंटरप्रेटर विंडो, Ghidra Script Manager के साथ एकीकरण, और Ghidra हेडलेस मोड में स्क्रिप्ट निष्पादन शामिल है।

कृपया Ghidra के लिए Python 3 स्क्रिप्ट लिखने के बारे में अधिक जानकारी के लिए हमारा Ghidra Python 3 स्क्रिप्ट उदाहरण यहाँ देखें।
देखें:
| उपकरण | संस्करण | स्रोत |
|---|---|---|
| Ghidrathon | >= 4.0.0 | https://github.com/mandiant/Ghidrathon/releases |
| Python | >= 3.8.0 | https://www.python.org/downloads |
| Jep | == 4.2.0 | https://pypi.org/project/jep |
| Ghidra | >= 10.3.2 | https://github.com/NationalSecurityAgency/ghidra/releases |
| Java | >= 17.0.0 | https://adoptium.net/temurin/releases |
अपने Ghidra वातावरण में Ghidrathon स्थापित करने के लिए निम्नलिखित चरणों का उपयोग करें:
$ python -m pip install -r requirements.txt
$ python ghidrathon_configure.py <absolute_path_to_ghidra_install_dir>
नोट: ghidrathon_configure.py डिफ़ॉल्ट रूप से <absolute_path_to_ghidra_install_dir> में ghidrathon.save नामक फ़ाइल लिखने का प्रयास करता है। ghidrathon_configure.py और Ghidra चलाने से पहले GHIDRATHON_SAVE_PATH पर्यावरण चर सेट करके आप उस पथ को निर्दिष्ट कर सकते हैं जहाँ यह फ़ाइल लिखी जाती है:
$ export GHIDRATHON_SAVE_PATH="/path/to/custom/dir" # Linux/MacOS
$ set GHIDRATHON_SAVE_PATH="C:\path\to\custom\dir" # Windows
नोट: आपको JAVA_HOME नामक पर्यावरण चर सेट करने के लिए संकेत दिया जा सकता है। यह उस JDK के निरपेक्ष पथ को संदर्भित करना चाहिए जिसे आपने अपने Ghidra इंस्टॉल के लिए कॉन्फ़िगर किया है।
.zip) को Ghidra में स्थापित करें:
File > Install Extensions... पर जाएँ+ बटन पर क्लिक करें.zip) पर जाएँOk पर क्लिक करेंExtension Version Mismatch विंडो द्वारा संकेत दिया जाए तो Install Anyway चुनें.zip) को <absolute_path_to_ghidra_install_dir>\Ghidra\Extensions में निकालेंआप नए Python इंटरप्रेटर का उपयोग करके चरण 2 निष्पादित करके Ghidrathon को भिन्न Python इंटरप्रेटर का उपयोग करने के लिए बदल सकते हैं।
आप वर्चुअल वातावरण से चरण 2 निष्पादित करके Ghidrathon के साथ Python वर्चुअल वातावरण का उपयोग कर सकते हैं। किसी भिन्न वर्चुअल वातावरण में स्विच करने के लिए, बस नए वर्चुअल वातावरण से चरण 2 निष्पादित करें।
इंटरप्रेटर विंडो आपके Python 3 इंटरप्रेटर तक इंटरैक्टिव पहुँच प्रदान करती है। इंटरप्रेटर विंडो खोलने के लिए "Window" पर क्लिक करें और "Ghidrathon" चुनें।

Ghidrathon सीधे Ghidra Script Manager के साथ एकीकृत होता है, जिससे आप Ghidra के भीतर Python 3 स्क्रिप्ट बना सकते हैं, संपादित कर सकते हैं और निष्पादित कर सकते हैं। नई Python 3 स्क्रिप्ट बनाने के लिए "Create New Script" पर क्लिक करें और "Python 3" चुनें। अपनी Python 3 स्क्रिप्ट निष्पादित करने के लिए "Run Script" या "Run Editors's Script" पर क्लिक करें और स्क्रिप्ट आउटपुट के लिए Ghidra Console विंडो देखें।

Ghidrathon आपको Ghidra हेडलेस मोड में Python 3 स्क्रिप्ट निष्पादित करने में मदद करता है। अपने Ghidra इंस्टॉलेशन फ़ोल्डर में स्थित analyzeHeadless स्क्रिप्ट निष्पादित करें, अपनी Python 3 स्क्रिप्ट निर्दिष्ट करें, और स्क्रिप्ट आउटपुट के लिए कंसोल विंडो देखें।
$ analyzeHeadless C:\Users\wampus example -process example.o -postScript ghidrathon_example.py
[...]
INFO SCRIPT: C:\Users\wampus\.ghidra\.ghidra_10.0.3_PUBLIC\Extensions\Ghidrathon-master\ghidra_scripts\ghidrathon_example.py (HeadlessAnalyzer)
Function _init @ 0x101000: 3 blocks, 8 instructions
Function FUN_00101020 @ 0x101020: 1 blocks, 2 instructions
Function __cxa_finalize @ 0x101040: 1 blocks, 2 instructions
Function printf @ 0x101050: 1 blocks, 2 instructions
Function _start @ 0x101060: 1 blocks, 13 instructions
Function deregister_tm_clones @ 0x101090: 4 blocks, 9 instructions
Function register_tm_clones @ 0x1010c0: 4 blocks, 14 instructions
Function __do_global_dtors_aux @ 0x101100: 5 blocks, 14 instructions
[...]
INFO REPORT: Post-analysis succeeded for file: /example.o (HeadlessAnalyzer)
INFO REPORT: Save succeeded for processed file: /example.o (HeadlessAnalyzer)
Ghidra को हेडलेस मोड में चलाने के बारे में अधिक जानकारी के लिए <absolute_path_to_ghidra_install_dir>/support/analyzeHeadlessREADME.html देखें।
Ghidrathon विकसित करने के हमारे सबसे बड़े उद्देश्यों में से एक Ghidra में तृतीय-पक्ष Python 3 मॉड्यूल के उपयोग को सक्षम करना था। आप एक मॉड्यूल स्थापित कर सकते हैं और इसे Ghidra के अंदर उसी तरह उपयोग करना शुरू कर सकते हैं जैसे आप एक सामान्य Python सेटअप में करते हैं। यह उन मॉड्यूल पर भी लागू होता है जिन्हें आपने पहले स्थापित किया है। उदाहरण के लिए, हम Ghidra के अंदर ARM कोड का अनुकरण करने के लिए Unicorn स्थापित और उपयोग कर सकते हैं।
