
rizin के लिए गहन ghidra डीकंपाइलर और sleigh डिसअसेंबलर एकीकरण
यह Rizin के लिए Ghidra डीकंपाइलर और Sleigh डिसअसेंबलर का एक एकीकरण है। यह पूरी तरह से Ghidra के डीकंपाइलर भाग पर आधारित है, जो पूरी तरह से C++ में लिखा गया है, इसलिए Ghidra की स्वयं आवश्यकता नहीं है और प्लगइन को स्व-निहित बनाया जा सकता है। इस परियोजना को शुरू में radare2 के लिए, r2con 2019 में Cutter वार्ता के भाग के रूप में प्रस्तुत किया गया था: https://youtu.be/eHtMiezr7l8?t=950
Usage: pdg # Native Ghidra decompiler plugin
| pdg # Decompile current function with the Ghidra decompiler
| pdgd # Dump the debug XML Dump
| pdgx # Dump the XML of the current decompiled function
| pdgj # Dump the current decompiled function as JSON
| pdgo # Decompile current function side by side with offsets
| pdgs # Display loaded Sleigh Languages
| pdg* # Decompiled code is returned to rizin as comment
निम्नलिखित कॉन्फ़िग चर (e कमांड के लिए) का उपयोग rz-ghidra के व्यवहार को समायोजित करने के लिए किया जा सकता है:
ghidra.cmt.cpp: C++ टिप्पणी शैली
ghidra.cmt.indent: टिप्पणी इंडेंट
ghidra.indent: इंडेंट वृद्धि
ghidra.lang: स्वचालित पहचान को ओवरराइड करने के लिए कस्टम Sleigh ID (जैसे x86:LE:32:default)
ghidra.linelen: अधिकतम पंक्ति लंबाई
ghidra.nl.brace: '{' खोलने से पहले नई पंक्ति
ghidra.nl.else: else से पहले नई पंक्ति
ghidra.sleighhome: SLEIGHHOME
यहाँ, ghidra.sleighhome को एक निर्देशिका की ओर इंगित करना चाहिए जिसमें डीकंपाइलर द्वारा समर्थित आर्किटेक्चर के लिए *.sla, *.lspec, ... फ़ाइलें हों। हालाँकि, rz-pm पैकेज का उपयोग करते समय या नीचे दिखाए अनुसार स्थापित करते समय यह स्वचालित रूप से सेट हो जाता है।
सबसे पहले, सुनिश्चित करें कि इस रिपॉजिटरी में निहित सबमॉड्यूल लाया गया है और अद्यतित है:
git submodule init
git submodule update
फिर, Rizin प्लगइन को निम्नानुसार बनाया और स्थापित किया जा सकता है:
mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX=~/.local ..
make
make install
यहाँ, CMAKE_INSTALL_PREFIX को उस स्थान पर सेट करें जहाँ Rizin प्लगइन को लोड कर सके। प्लगइन के काम करने के लिए इंस्टॉल चरण आवश्यक है क्योंकि इसमें आवश्यक Sleigh फ़ाइलों की स्थापना शामिल है। यदि आप Rizin का git से उपयोग कर रहे हैं, तो CMAKE_PREFIX_PATH को Rizin स्थापना निर्देशिका पर भी सेट करें।
Cutter प्लगइन बनाने के लिए, आपके पास Cutter किसी prefixed के तहत स्रोत से स्थापित होना चाहिए, जिसे वैकल्पिक रूप से -DCMAKE_PREFIX_PATH=<path> के साथ निर्दिष्ट किया जा सकता है, फिर प्लगइन को सक्षम करने के लिए cmake को -DBUILD_CUTTER_PLUGIN=ON पास करें:
/my/path/rz-ghidra> mkdir build && cd build
/my/path/rz-ghidra/build> cmake -DBUILD_CUTTER_PLUGIN=ON -DCMAKE_PREFIX_PATH=/path/to/cutter/prefix -DCMAKE_INSTALL_PREFIX=~/.local ..
/my/path/rz-ghidra/build> make && make install
डिफ़ॉल्ट रूप से, Cutter प्लगइन वर्तमान उपयोगकर्ता की होम निर्देशिका में स्वचालित रूप से चुने गए पथ पर स्थापित होता है। इस पथ को -DCUTTER_INSTALL_PLUGDIR के साथ ओवरराइड किया जा सकता है।
Rizin में तेजी से विकसित होने वाला C API है, इसलिए यह स्पष्ट करना आवश्यक है कि rz-ghidra के कौन से संस्करण Rizin के किन संस्करणों के साथ संगत हैं:
git से Rizin और rz-ghidra का उपयोग करते समय:
dev Rizin शाखा dev का अनुसरण करती है।stable Rizin शाखा stable का अनुसरण करती है।रिलीज़ के संबंध में, rz-ghidra आमतौर पर Rizin के साथ एक साथ जारी किया जाता है और अक्सर समान संस्करण संख्याओं का उपयोग करता है (लेकिन गारंटी नहीं, इन संख्याओं पर निर्भर न हों!)। इसके अलावा, प्रत्येक Rizin रिलीज़ के साथ, rz-ghidra पर rz-0.1.2 जैसा एक टैग बनाया जाता है, जो सटीक रूप से एक rz-ghidra रिलीज़ को इंगित करता है और इंगित करता है कि यह रिलीज़ निर्दिष्ट Rizin संस्करण के साथ संगत है। इन टैग का उपयोग वितरण अनुरक्षकों द्वारा निर्भरताएँ सेट करने के तरीके को देखने के लिए किया जा सकता है।
कृपया ध्यान दें कि यह प्लगइन LGPLv3 के अंतर्गत उपलब्ध है, जो Ghidra के लाइसेंस से अधिक सख्त है!
यह प्रोग्राम मुक्त सॉफ्टवेयर है: आप इसे फिर से वितरित कर सकते हैं और/या संशोधित कर सकते हैं ग्नू लेसर जनरल पब्लिक लाइसेंस की शर्तों के तहत जैसा कि फ्री सॉफ्टवेयर फाउंडेशन द्वारा प्रकाशित किया गया है, या तो लाइसेंस का संस्करण 3, या (आपकी पसंद) किसी भी बाद के संस्करण के तहत।
यह प्रोग्राम इस आशा में वितरित किया जाता है कि यह उपयोगी होगा, लेकिन बिना किसी वारंटी के; यहां तक कि व्यापारिकता या किसी विशेष उद्देश्य के लिए उपयुक्तता की निहित वारंटी के बिना। अधिक जानकारी के लिए ग्नू लेसर जनरल पब्लिक लाइसेंस देखें।
आपको इस प्रोग्राम के साथ ग्नू लेसर जनरल पब्लिक लाइसेंस की एक प्रति प्राप्त हुई होगी। यदि नहीं, तो https://www.gnu.org/licenses/ देखें।