Ini adalah integrasi dari Dekompiler Ghidra dan Disassembler untuk Rizin. Ini semata-mata didasarkan pada bagian dekompiler Ghidra, yang ditulis sepenuhnya dalam C ++, sehingga Ghidra sendiri tidak diperlukan sama sekali dan plugin dapat dibangun sendiri. Proyek ini disajikan, awalnya untuk RACARE2, di R2CON 2019 sebagai bagian dari pemotong: https://youtu.be/ehtmizr7l8?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
VAR VARS berikut (untuk perintah e ) dapat digunakan untuk menyesuaikan perilaku 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
Di sini, ghidra.sleighhome harus menunjuk ke direktori yang berisi *.sla , *.lspec , ... file untuk arsitektur yang harus didukung oleh pembangkit. Namun ini diatur secara otomatis saat menggunakan paket RZ-PM atau menginstal seperti yang ditunjukkan di bawah ini.
Pertama, pastikan submodule yang terkandung dalam repositori ini diambil dan up to date:
git submodule init
git submodule update
Kemudian, plugin Rizin dapat dibangun dan diinstal sebagai berikut:
mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX=~/.local ..
make
make install
Di sini, atur CMAKE_INSTALL_PREFIX ke lokasi di mana Rizin dapat memuat plugin. Langkah instalasi diperlukan agar plugin berfungsi karena termasuk menginstal file giring yang diperlukan. Jika Anda menggunakan Rizin dari Git, atur juga CMAKE_PREFIX_PATH ke direktori instalasi Rizin.
Untuk juga membangun plugin pemotong, Anda harus memasang pemotong dari sumber di bawah beberapa awalan, yang dapat ditentukan secara opsional dengan -DCMAKE_PREFIX_PATH=<path> , lalu lulus -DBUILD_CUTTER_PLUGIN=ON ke cmake untuk mengaktifkan plugin:
/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
Secara default, plugin pemotong dipasang di jalur yang dipilih secara otomatis di direktori home pengguna saat ini. Jalur ini dapat ditimpa dengan -DCUTTER_INSTALL_PLUGDIR .
Rizin memiliki C API yang berkembang pesat sehingga perlu untuk eksplisit tentang versi RZ-ghidra mana yang kompatibel dengan versi Rizin:
Saat menggunakan Rizin dan RZ-Ghidra dari Git:
dev mengikuti di sepanjang Rizin Branch dev .stable mengikuti di sepanjang stable cabang Rizin. Mengenai rilis, RZ-Ghidra umumnya dirilis secara bersamaan dengan Rizin dan sering menggunakan nomor versi yang sama (tetapi tidak dijamin, tidak bergantung pada angka-angka ini!). Juga, bersama dengan setiap rilis Rizin tag seperti rz-0.1.2 dibuat pada RZ-Ghidra, yang persis menunjuk pada rilis RZ-Ghidra dan menunjukkan bahwa rilis ini kompatibel dengan versi Rizin yang ditentukan. Tag ini dapat digunakan oleh pengelola distribusi untuk mencari cara mengatur ketergantungan.
Harap dicatat bahwa plugin ini tersedia di bawah LGPLV3 , yang lebih ketat dari lisensi Ghidra!
Program ini adalah perangkat lunak gratis: Anda dapat mendistribusikannya kembali dan/atau memodifikasinya berdasarkan ketentuan Lisensi Publik Umum GNU yang lebih rendah seperti yang diterbitkan oleh Free Software Foundation, baik versi 3 lisensi, atau (di opsi Anda) versi selanjutnya.
Program ini didistribusikan dengan harapan akan bermanfaat, tetapi tanpa jaminan apa pun; bahkan tanpa jaminan tersirat dari dapat diperjualbelikan atau kebugaran untuk tujuan tertentu. Lihat Lisensi Publik Umum GNU yang lebih rendah untuk lebih jelasnya.
Anda seharusnya menerima salinan Lisensi Publik Umum GNU yang lebih rendah bersama dengan program ini. Jika tidak, lihat https://www.gnu.org/licenses/.