
Un repositorio de soporte SLEIGH para ISAs de procesadores poco comunes
Módulos de procesador (SLEIGH) de Ghidra para arquitecturas poco comunes de CPU, DSP y GPU. Objetivo: Ghidra 12.1.4.
Este proyecto incorpora a Ghidra el conjunto de arquitecturas cubiertas por Mr-wolf-is-me/IDA-Processor-Modules, una colección de módulos de procesador para IDA Pro. Cada módulo aquí es la contraparte en Ghidra de uno de los módulos de IDA listados allí.
| Módulo | Arquitectura | IDs de lenguaje | Módulo IDA original |
|---|---|---|---|
| PRU | TI PRU / PRU-ICSS, revisiones de núcleo 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 a Blackwell | SASS:LE:64:SM35, SM52, SM60, SM70, SM75, SM80, SM86, SM89, SM90, SM100, SM120 | sass-ida |
El README de cada módulo enumera sus variantes de lenguaje, cuán fielmente coincide con el desensamblador de referencia, qué modela el p-code, las carencias conocidas y cómo ejecutar sus pruebas. STATUS.md registra lo que funciona y lo que no en todos los módulos, además de las lecciones aprendidas.
Los módulos de IDA se distribuyen como zips de release bajo términos que prohíben las obras derivadas; los repositorios en sí solo contienen READMEs, licencias y capturas de pantalla. Este proyecto es una implementación independiente y de sala limpia, no un port de ese código:
dispru/dis7x, GNU binutils, LLVM, NVIDIA nvdisasm).El crédito por la idea y por la elección de estas arquitecturas corresponde al autor de IDA-Processor-Modules.
Cada directorio de módulo es una extensión estándar de Ghidra.
Zips precompilados: el flujo de trabajo Release builds compila cada
módulo para las tres versiones más recientes de Ghidra. Cada etiqueta v* publica los zips en la
página de Releases; los demás pushes los conservan como
artefactos del flujo de trabajo. Un zip solo se instala en la versión de Ghidra indicada en su nombre.
Compila tú mismo los zips de la extensión:
tools/build-release.sh /opt/ghidra_12.1.4_PUBLIC dist # one zip per module in dist/
El script compila las especificaciones SLEIGH con el compilador de esa versión de Ghidra y construye cada módulo con el
wrapper de Gradle que Ghidra incluye en support/gradle. PRU, MicroBlaze y SASS incluyen código Java (extensiones del
cargador ELF), por lo que la compilación necesita un JDK completo con javac (un paquete que solo incluya el JRE no es
suficiente): JDK 21 o superior para Ghidra 12.1, JDK 25 para Ghidra 12.2. Apunte JAVA_HOME a este.
Instale el zip mediante File → Install Extensions en Ghidra y, a continuación, reinicie Ghidra.
Para desarrollo, cree un enlace simbólico de cada módulo en una instalación de Ghidra y compile las especificaciones 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> imprime un desensamblado headless de barrido lineal de un
binario en bruto, lo cual es útil para comprobaciones rápidas.
MIT. Esta licencia cubre únicamente el código de este repositorio. No cubre los módulos originales de IDA, que tienen sus propios términos.