
Asistente de investigación de vulnerabilidades que extrae pseudocódigo del descompilador IDA Hex-Rays.
"Hacking is the discipline of questioning all your assumptions all of the time."
-- Dave Aitel
Haruspex es un plugin headless de IDA extremadamente rápido que extrae el pseudocódigo generado por el decompilador de IDA en un formato que debería ser adecuado para importarse en un IDE, o para ser analizado por herramientas de análisis estático como Semgrep, weggli, o oneiromancer.

decompile_to_file] para decompilar una función y guardar su pseudocódigo y definiciones de tipos en
disco, distinguiendo las funciones que no se pueden decompilar de errores como la falta de una licencia de Hex-Rays.La forma más sencilla de obtener la última versión es a través de crates.io:
export IDADIR=/path/to/ida # if not set, the build script will check common locations
cargo install haruspex --locked
En Windows, en cambio, usa los siguientes comandos:
$env:LIBCLANG_PATH="\path\to\clang+llvm\bin"
$env:PATH="\path\to\ida;$env:PATH"
$env:IDADIR="\path\to\ida" # if not set, the build script will check common locations
cargo install haruspex --locked
Alternativamente, puedes compilar desde el código fuente:
git clone --depth 1 https://github.com/0xdea/haruspex
cd haruspex
export IDADIR=/path/to/ida # if not set, the build script will check common locations
cargo build --release --locked
En Windows, en cambio, usa los siguientes comandos:
git clone --depth 1 https://github.com/0xdea/haruspex
cd haruspex
$env:LIBCLANG_PATH="\path\to\clang+llvm\bin"
$env:PATH="\path\to\ida;$env:PATH"
$env:IDADIR="\path\to\ida" # if not set, the build script will check common locations
cargo build --release --locked
IDADIR esté configurada si tu instalación de IDA se encuentra en una ubicación no estándar.haruspex <binary_file>
<binary_file>, nombrado a partir de
este con su extensión, si la tiene, reemplazada por .dec (por ejemplo, foo.exe y foo producen ambos foo.dec, por lo que los binarios
que difieren solo en su extensión comparten el mismo directorio de salida):
vim foo.dec
code foo.dec
Solo se admite oficialmente la última versión de IDA, pero las versiones anteriores también pueden funcionar. La siguiente tabla resume la última versión compatible para cada versión de IDA:
| Versión de IDA | Última versión compatible |
|---|---|
| v9.0.240925 | v0.2.4 |
| v9.0.241217 | v0.3.5 |
| v9.1.250226 | v0.6.2 |
| v9.2.250908 | v0.7.5 |
| v9.3.260213 | v0.8.1 |
| v9.3.260327 | v0.9.0 |
| v9.3.260421 | v0.9.3 |
| v9.4.260714 | versión actual |
| v9.4.260915 | versión actual |
[!NOTE] Consulta la documentación de idalib-rs para obtener información adicional.
El desarrollo de este proyecto ha sido apoyado por las siguientes organizaciones:
.cpp en lugar de .c para generar el pseudocódigo (consulta
este issue)?