
Un dépôt de support SLEIGH pour des jeux d'instructions de processeurs rares
Modules de processeur Ghidra (SLEIGH) pour des architectures CPU, DSP et GPU peu courantes. Cible : Ghidra 12.1.4.
Ce projet apporte à Ghidra l'ensemble des architectures couvertes par Mr-wolf-is-me/IDA-Processor-Modules, une collection de modules de processeur pour IDA Pro. Chaque module ici est l'équivalent Ghidra de l'un des modules IDA qui y sont listés.
| Module | Architecture | ID de langage | Module IDA d'origine |
|---|---|---|---|
| PRU | TI PRU / PRU-ICSS, révisions de cœur V0–V4 | PRU:LE:32:v0 … PRU:LE:32:v4 | pru-ida |
| MicroBlaze | AMD/Xilinx MicroBlaze, 32/64 bits, BE/LE | MicroBlaze:{BE,LE}:{32,64}:default | microblaze-ida |
| xCORE | XMOS xCORE XS1, XS2 (xCORE-200), XS3 (xcore.ai) | xCORE:LE:32:XS1, XS2, XS3 | xcore-ida |
| C7x | TI C7000 DSP (C7100, C7120, C7504, C7524) | C7x:LE:64:C7100, C7120, C7504, C7524 | c7x-ida |
| SASS | NVIDIA GPU SASS, de Kepler à Blackwell | SASS:LE:64:SM35, SM52, SM60, SM70, SM75, SM80, SM86, SM89, SM90, SM100, SM120 | sass-ida |
Le README de chaque module liste ses variantes de langage, sa proximité avec le désassembleur de référence, ce que modélise le p-code, les lacunes connues et la manière d'exécuter ses tests. STATUS.md suit ce qui fonctionne et ce qui ne fonctionne pas pour tous les modules, ainsi que les enseignements tirés.
Les modules IDA sont distribués sous forme de zips de version selon des conditions qui interdisent les œuvres dérivées ; les dépôts eux-mêmes ne contiennent que des README, des licences et des captures d'écran. Ce projet est une implémentation indépendante, en clean-room, et non un portage de ce code :
dispru/dis7x, GNU binutils, LLVM, NVIDIA nvdisasm).Le crédit pour l'idée et pour le choix de ces architectures revient à l'auteur de IDA-Processor-Modules.
Chaque répertoire de module est une extension Ghidra standard.
Zips précompilés : le workflow Release builds compile chaque
module pour les trois dernières versions de Ghidra. Chaque tag v* publie les zips sur la
page Releases ; les autres push les conservent comme
artefacts de workflow. Un zip ne s'installe que dans la version de Ghidra indiquée dans son nom.
Compiler vous-même les zips d'extension :
tools/build-release.sh /opt/ghidra_12.1.4_PUBLIC dist # one zip per module in dist/
Le script compile les spécifications SLEIGH avec le compilateur de cette version de Ghidra et construit chaque module avec le
wrapper Gradle fourni par Ghidra dans support/gradle. PRU, MicroBlaze et SASS incluent du code Java (extensions de
chargeur ELF), donc la compilation nécessite un JDK complet avec javac (un paquet JRE seul ne
suffit pas) : JDK 21 ou plus récent pour Ghidra 12.1, JDK 25 pour Ghidra 12.2. Pointez JAVA_HOME vers celui-ci.
Installez le zip via File → Install Extensions dans Ghidra, puis redémarrez Ghidra.
Pour le développement, créez un lien symbolique de chaque module dans une installation de Ghidra et compilez les spécifications SLEIGH :
export GHIDRA_INSTALL_DIR=/opt/ghidra_12.1.4_PUBLIC
tools/link-modules.sh
for d in */data/languages; do "$GHIDRA_INSTALL_DIR/support/sleigh" -a "$d"; done
tools/ghidra-dis.sh <language-id> <raw.bin> affiche un désassemblage linéaire headless d'un
binaire brut, ce qui est utile pour des vérifications rapides.
MIT. Cette licence couvre uniquement le code de ce dépôt. Elle ne couvre pas les modules IDA originaux, qui ont leurs propres conditions.