هذا هو تكامل من Ghidra Decompiler و Sleigh Disassembler لـ Rizin. يعتمد فقط على جزء decompiler من Ghidra ، الذي يتم كتابته بالكامل في C ++ ، لذلك فإن Ghidra نفسها ليست مطلوبة على الإطلاق ويمكن أن يكون المكوّن الإضافي مستقلًا ذاتيًا. تم تقديم هذا المشروع ، مبدئيًا لـ RADARE2 ، في R2CON 2019 كجزء من Cutter Talk: 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
يمكن استخدام Vars التكوين التالي (لأمر e ) لضبط سلوك RZ-Ghidra:
ghidra.cmt.cpp: C++ comment style
ghidra.cmt.indent: Comment indent
ghidra.indent: Indent increment
ghidra.lang: Custom Sleigh ID to override auto-detection (e.g. x86:LE:32:default)
ghidra.linelen: Max line length
ghidra.nl.brace: Newline before opening '{'
ghidra.nl.else: Newline before else
ghidra.sleighhome: SLEIGHHOME
هنا ، يجب أن يشير ghidra.sleighhome إلى دليل يحتوي على *.sla ، *.lspec ، ... ملفات للبنية التي يجب أن تدعمها decompiler. ومع ذلك ، يتم إعداد هذا تلقائيًا عند استخدام حزمة 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 تحميل المكون الإضافي منه. تعد خطوة التثبيت ضرورية لصالح البرنامج المساعد لأنه يتضمن تثبيت ملفات الزلاجات اللازمة. إذا كنت تستخدم Rizin من Git ، قم أيضًا بتعيين CMAKE_PREFIX_PATH على دليل تثبيت Rizin.
لإنشاء المكون الإضافي القاطع أيضًا ، يجب أن يكون لديك قاطع مثبت من المصدر ضمن بعض البادئة ، والذي يمكن تحديده اختياريًا باستخدام -DCMAKE_PREFIX_PATH=<path> ، ثم تمرير -DBUILD_CUTTER_PLUGIN=ON cmake لتمكين المكون الإضافي:
/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 المتطورة بسرعة ، لذا من الضروري أن تكون صريحًا حول إصدارات RZ-Ghidra المتوافقة مع إصدارات Rizin:
عند استخدام Rizin و RZ-Ghidra من Git:
dev على طول فرع Rizin dev .stable على طول stable Rizin. فيما يتعلق بالإصدارات ، يتم إصدار RZ-Ghidra بشكل عام في وقت واحد مع Rizin وغالبًا ما يستخدم نفس أرقام الإصدار (ولكن غير مضمون ، لا تعتمد على هذه الأرقام!). أيضًا ، إلى جانب كل RIZIN ، يتم إنشاء علامة مثل rz-0.1.2 على RZ-GHIDRA ، والتي تشير بالضبط إلى إصدار RZ-GHIDRA وتشير إلى أن هذا الإصدار متوافق مع إصدار RIZIN المحدد. يمكن استخدام هذه العلامات من قبل مشرفي التوزيع للبحث عن كيفية إعداد التبعيات.
يرجى ملاحظة أن هذا البرنامج المساعد متاح بموجب LGPLV3 ، وهو أكثر صرامة من ترخيص Ghidra!
هذا البرنامج هو برنامج مجاني: يمكنك إعادة توزيعه و/أو تعديله بموجب شروط رخصة GNU Lesser العامة العامة كما تم نشرها من قبل مؤسسة البرمجيات المجانية ، إما الإصدار 3 من الترخيص ، أو (في خيارك) أي إصدار لاحق.
يتم توزيع هذا البرنامج على أمل أن يكون مفيدًا ، ولكن بدون أي ضمان ؛ بدون حتى الضمان الضمني للتسويق أو اللياقة لغرض معين. راجع رخصة GNU أقل عامة لمزيد من التفاصيل.
يجب أن تكون قد تلقيت نسخة من رخصة GNU Lesser العامة إلى جانب هذا البرنامج. إذا لم يكن كذلك ، راجع https://www.gnu.org/licenses/.