Il s'agit d'une intégration du décompilateur Ghidra et du désassembleur de traîneau pour Rizin. Il est uniquement basé sur la partie décompilère de Ghidrera, qui est entièrement écrite en C ++, donc le Ghidra lui-même n'est pas requis du tout et le plugin peut être construit autonome. Ce projet a été présenté, initialement pour Radare2, à R2Con 2019 dans le cadre de The 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
La configuration VARS suivante (pour la commande e ) peut être utilisée pour ajuster le comportement de 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
Ici, ghidra.sleighhome doit pointer vers un répertoire contenant les fichiers *.sla , *.lspec , ... pour les architectures qui devraient être prises en charge par le décompilateur. Ceci est cependant configuré automatiquement lors de l'utilisation du package RZ-PM ou de l'installation comme indiqué ci-dessous.
Tout d'abord, assurez-vous que le sous-module contenu dans ce référentiel est récupéré et à jour:
git submodule init
git submodule update
Ensuite, le plugin Rizin peut être construit et installé comme suit:
mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX=~/.local ..
make
make install
Ici, définissez le CMAKE_INSTALL_PREFIX sur un emplacement où Rizin peut charger le plugin. L'étape d'installation est nécessaire pour que le plugin fonctionne car il comprend l'installation des fichiers de traîneau nécessaires. Si vous utilisez Rizin depuis GIT, définissez également CMAKE_PREFIX_PATH au répertoire d'installation de Rizin.
Pour construire également le plugin Cutter, vous devez avoir un coupeur installé à partir de Source sous un préfixe, qui peut être éventuellement spécifié avec -DCMAKE_PREFIX_PATH=<path> , puis passer -DBUILD_CUTTER_PLUGIN=ON Cmake pour activer le 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
Par défaut, le plugin Cutter est installé dans un chemin automatique choisi dans le répertoire personnel de l'utilisateur actuel. Ce chemin peut être remplacé avec -DCUTTER_INSTALL_PLUGDIR .
Rizin a une API C en évolution rapidement en évolution, il est donc nécessaire d'être explicite sur les versions de RZ-Ghidrea avec les versions de Rizin:
Lorsque vous utilisez Rizin et Rz-Ghididra de Git:
dev suit le long de Rizin Branch dev .stable suit le long de la branche de Rizin stable . En ce qui concerne les versions, RZ-Ghididra est généralement publié simultanément avec Rizin et utilise souvent les mêmes numéros de version (mais pas garantis, ne dépendent pas de ces chiffres!). De plus, avec chaque version de Rizin, une balise comme rz-0.1.2 est créée sur RZ-Ghidrea, qui pointe exactement vers une version RZ-Ghidra et indique que cette version est compatible avec la version Rizin spécifiée. Ces balises peuvent être utilisées par les mainteneurs de distribution pour rechercher comment configurer des dépendances.
Veuillez noter que ce plugin est disponible sous le LGPLV3 , qui est plus strict que la licence de Ghidra!
Ce programme est un logiciel gratuit: vous pouvez le redistribuer et / ou le modifier en vertu des termes de la licence GNU moins générale publique publiée par la Free Software Foundation, soit la version 3 de la licence, soit (à votre option) n'importe quelle version ultérieure.
Ce programme est distribué dans l'espoir qu'il sera utile, mais sans aucune garantie; Sans même la garantie implicite de qualité marchande ou d'adéquation à un usage particulier. Voir la licence publique générale GNU Leser pour plus de détails.
Vous auriez dû recevoir une copie de la licence publique GNU Unser-General avec ce programme. Sinon, voir https://www.gnu.org/licenses/.