Это интеграция декомпилятора Ghidra и разборщика сани для Ризина. Он основан исключительно на декомпиляторной части Ghidra, которая написана полностью в C ++, поэтому сама Ghidra вообще не требуется, а плагин может быть построен самостоятельно. Этот проект был представлен, изначально для Radare2, на R2CON 2019 как часть разговора о реце: 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
Следующие конфигурации VAR (для команды 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 , ... файлы для архитектур, которые должны поддерживаться декомпилятором. Однако это автоматически настроено при использовании пакета 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 из 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
По умолчанию плагин резака установлен в автоматически выбранном пути в домашнем каталоге текущего пользователя. Этот путь можно переопределить с помощью -DCUTTER_INSTALL_PLUGDIR .
У Ризина быстро развивающийся C API, поэтому необходимо явно относиться к тому, какие версии rz-ghidra совместимы с какими версиями Ризина:
При использовании Rizin и RZ-Ghidra из GIT:
dev следует вдоль Rizin Branch dev .stable следует вдоль stable Ризина. Что касается выпусков, RZ-Ghidra обычно выпускается одновременно с Rizin и часто использует те же номера версий (но не гарантируется, не зависят от этих чисел!). Кроме того, наряду с каждым выпуском Rizin, тег, такой как rz-0.1.2 создается на RZ-Ghidra, что точно указывает на выпуск RZ-Ghidra и указывает, что этот выпуск совместим с указанной версией Rizin. Эти теги могут быть использованы содействиями дистрибуциям, чтобы посмотреть, как настроить зависимости.
Обратите внимание, что этот плагин доступен под LGPLV3 , который является более строгим, чем лицензия Гидры!
Эта программа представляет собой бесплатное программное обеспечение: вы можете перераспределить его и/или изменить ее в соответствии с условиями GNU Lesser General Public License, опубликованной Фондом Free Software, либо версией 3 лицензии, либо (по варианту) любой более поздней версии.
Эта программа распространяется в надежде, что она будет полезна, но без каких -либо гарантий; даже без подразумеваемой гарантии торговой точки зрения или пригодности для определенной цели. Смотрите GNU меньшую общую публичную лицензию для получения более подробной информации.
Вы должны были получить копию GNU Lesser General Public Public License вместе с этой программой. Если нет, см. Https://www.gnu.org/licenses/.