
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 स्क्रिप्ट उदाहरण यहाँ देखें।
देखें:
अपने 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 स्थापित और उपयोग कर सकते हैं।

Ghidrathon एक स्क्रिप्टिंग अनुभव प्रदान करता है जो Ghidra के Java और Jython एक्सटेंशन के निकट दर्पण करता है, जिसमें GhidraScript स्थिति उदाहरण चर, जैसे currentProgram, और FlatProgramAPI विधियाँ, जैसे findBytes
Python builtins दायरे में उपलब्ध कराना शामिल है। इसका मतलब है कि आपके कोड द्वारा आयात किए गए सभी Python मॉड्यूल इन चर और विधियों तक पहुँच रखते हैं। Ghidrathon, GhidraScript
स्थिति चर को सीधे एक्सेस के बजाय Python फ़ंक्शन कॉल के रूप में उजागर करके Ghidra के Java और Jython एक्सटेंशन से थोड़ा भिन्न होता है, उदाहरण के लिए आपके Python 3 कोड को currentProgram तक पहुँचने के लिए फ़ंक्शन कॉल currentProgram() का उपयोग करना चाहिए। यह छोटा परिवर्तन सुनिश्चित करता है कि निष्पादन के दौरान आपके Python 3 कोड को सही GhidraScript स्थिति चर प्रदान किए जाएँ। कृपया Ghidra के लिए Python 3 स्क्रिप्ट लिखने के बारे में अधिक जानकारी के लिए हमारा Ghidra Python 3 स्क्रिप्ट उदाहरण यहाँ देखें।
Ghidrathon आपके स्थानीय Python इंस्टॉलेशन को ओपन-सोर्स प्रोजेक्ट Jep का उपयोग करके Ghidra से जोड़ता है। अनिवार्य रूप से, आपका स्थानीय Python इंटरप्रेटर आपके सभी Python पैकेजों और मानक Ghidra स्क्रिप्टिंग API तक पहुँच के साथ Ghidra के अंदर चल रहा है। Ghidrathon Python वर्चुअल वातावरण के साथ भी काम करता है, जिससे आप उन पैकेजों को बना, अलग और प्रबंधित कर सकते हैं जिन्हें आप केवल Ghidra में उपयोग के लिए स्थापित करना चाहते हैं। चूँकि Ghidrathon आपके स्थानीय Python इंस्टॉलेशन का उपयोग करता है, इसलिए आपके पास Ghidra के अंदर चलने वाले Python संस्करण और वातावरण पर नियंत्रण होता है।
Jep द्वारा Java में Python एम्बेड करने के तरीके के बारे में अधिक जानकारी के लिए उनका दस्तावेज़ यहाँ देखें।
Ghidrathon ओपन-सोर्स लाइब्रेरी Jep का उपयोग करता है, जो Python को JVM में एम्बेड करने के लिए Java Native Interface (JNI) का उपयोग करती है। Ghidra डेवलपर, यहाँ चर्चा किए गए कारणों से Ghidra में JNI के उपयोग के खिलाफ सलाह देते हैं।
| उपकरण | संस्करण | स्रोत |
|---|
| 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 |