
Ghidra मॉड्यूल जो Ethereum स्मार्ट कॉन्ट्रैक्ट बाइटकोड को डिसअसेंबल, डीकंपाइल और विश्लेषित करता है। असुरक्षित निर्देशों का पता लगाता है, छिपे हुए तरीकों को निकालता है, और सुरक्षा ऑडिट के लिए कंट्रोल-फ़्लो ग्राफ़ उत्पन्न करता है।

पिछले कुछ वर्षों में, एथेरियम ब्लॉकचेन में तैनात स्मार्ट अनुबंधों पर हमलों के परिणामस्वरूप प्रोग्रामिंग गलतियों के कारण बड़ी मात्रा में धन चोरी हुआ है। चूंकि स्मार्ट अनुबंध, एक बार संकलित और तैनात होने के बाद, संशोधित और अद्यतन करना जटिल होते हैं, विभिन्न व्यवसायियों ने ब्लॉकचेन में उनकी सुरक्षा की समीक्षा के महत्व का सुझाव दिया है जहां केवल एथेरियम वर्चुअल मशीन (EVM) बाइटकोड उपलब्ध है। इस संबंध में, डिस्सेम्बल और डीकंपाइलेशन के माध्यम से रिवर्स इंजीनियरिंग प्रभावी हो सकती है।
ghidra-EVM स्मार्ट अनुबंधों के रिवर्स इंजीनियरिंग के लिए एक Ghidra मॉड्यूल है। इसका उपयोग एथेरियम ब्लॉकचेन से एथेरियम वर्चुअल मशीन (EVM) बाइटकोड डाउनलोड करने और स्मार्ट अनुबंध को डिस्सेम्बल और डीकंपाइल करने के लिए किया जा सकता है। इसके अलावा, यह निर्माण कोड का विश्लेषण कर सकता है, अनुबंध विधियाँ ढूंढ सकता है और असुरक्षित निर्देशों का पता लगा सकता है।
इसमें एक प्रोसेसर मॉड्यूल, कस्टम लोडर और प्लगइन(s) शामिल हैं जो एथेरियम VM (EVM) बाइटकोड को डिस्सेम्बल करते हैं और एक स्मार्ट अनुबंध का नियंत्रण-प्रवाह ग्राफ (CFG) उत्पन्न करते हैं।
नवीनतम संस्करण Ghidra 9.1.2 API का उपयोग करता है। यह CFG निर्माण प्रक्रिया में Ghidra की सहायता के लिए crytic evm_cfg_builder लाइब्रेरी (https://github.com/crytic/evm_cfg_builder) पर निर्भर करता है।
Ghidra-evm में शामिल हैं:
| स्क्रिप्ट | विवरण |
|---|
| search_codecopy.py | जब किसी स्मार्ट अनुबंध में निर्माण कोड का विश्लेषण किया जाता है, तो हम केवल _dispatcher फ़ंक्शन देख सकते हैं जो रन टाइम कोड को मेमोरी में लिखने के लिए CODECOPY का उपयोग करता है। यह स्क्रिप्ट उपयोगी CODECOPY निर्देशों की खोज करती है और अनुबंध के रनटाइम भाग में छिपे स्मार्ट अनुबंध विधियों को ढूंढती है। |
| search_dangerous_instructions.py | CALL, CALLCODE, SELFDESTRUCT और DELEGATECALL जैसे निर्देशों का कभी-कभी दुरुपयोग किसी अन्य अनुबंध में धन हस्तांतरित करने के लिए किया जा सकता है। यह स्क्रिप्ट उन्हें ढूंढती है और प्रत्येक घटना के लिए एक लेबल बनाती है। |
| load_external_contract.py | ब्लॉकचेन से स्मार्ट अनुबंध बाइटकोड को .evm_h फ़ाइल में डाउनलोड करता है जिसे ghidra-evm में लोड किया जा सकता है। |
ghidra-evm निर्देशिका की सामग्री का उपयोग ghidra_evm को विस्तारित या डीबग करने के लिए Eclipse में प्रोसेसर और लोडर के साथ एक Ghidra मॉड्यूल बनाने के लिए किया जा सकता है।

| ट्यूटोरियल | विवरण |
|---|---|
| Utilization | test.evm के साथ सरल उपयोग निर्देश |
| Analyzing creation bytecode | निर्माण कोड का विश्लेषण करने और छिपी विधियों को खोजने के लिए search_codecopy.py का उपयोग करना |
| Looking for dangerous instructions | SELFDESTRUCT घटना का विश्लेषण करने के लिए search_dangerous_instructions.py का उपयोग करना |
| Downloading smart contract bytecode from the blockchain into Ghidra | ब्लॉकचेन से EVM बाइटकोड को .evm_h फ़ाइल में डाउनलोड करने के लिए load_external_contract.py का उपयोग करना |
Ghidra-evm AGPLv3 के तहत लाइसेंस प्राप्त और वितरित किया गया है।