Volver a actualizaciones
Nuevo releaseSep 20, 2026

haruspex v0.10.0

Asistente de investigación de vulnerabilidades que extrae pseudocódigo del descompilador IDA Hex-Rays.

Compartir

haruspex

build doc

"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.

Características

  • Experiencia de usuario headless extremadamente rápida gracias a IDA 9.x y los bindings de Rust idalib-rs.
  • Soporte para objetivos binarios de cualquier arquitectura implementada por el decompilador Hex-Rays de IDA.
  • El pseudocódigo de cada función se almacena en un archivo separado en el directorio de salida para facilitar su inspección.
  • Las definiciones de tipos globales y por función se extraen a archivos de cabecera junto al pseudocódigo.
  • Crates externos pueden invocar [decompile_to_file] para decompilar una función y guardar su pseudocódigo y definiciones de tipos en disco.

Artículos

Véase también

Instalación

La forma más sencilla de obtener la última versión es a través de crates.io:

  1. Descarga, instala y configura IDA (ver https://hex-rays.com/ida-pro).
  2. Instala LLVM/Clang (ver https://rust-lang.github.io/rust-bindgen/requirements.html).
  3. En Linux/macOS, instala de la siguiente manera:
    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
    

Compilación

Alternativamente, puedes compilar desde el código fuente:

  1. Descarga, instala y configura IDA (ver https://hex-rays.com/ida-pro).
  2. Instala LLVM/Clang (ver https://rust-lang.github.io/rust-bindgen/requirements.html).
  3. En Linux/macOS, compila de la siguiente manera:
    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
    

Uso

  1. Asegúrate de que IDA esté configurado correctamente con una licencia válida.
  2. Asegúrate de que la variable de entorno IDADIR esté configurada si tu instalación de IDA se encuentra en una ubicación no estándar.
  3. Ejecuta de la siguiente manera:
    haruspex <binary_file>
    
  4. Encuentra el pseudocódigo extraído y las definiciones de tipos en el directorio binary_file.dec:
    vim <binary_file>.dec
    code <binary_file>.dec
    

Compatibilidad

Solo la última versión de IDA es oficialmente compatible, pero versiones anteriores también pueden funcionar. La siguiente tabla resume la última versión compatible para cada versión de IDA:

IDA versionLatest compatible release
v9.0.240925v0.2.4
v9.0.241217v0.3.5
v9.1.250226v0.6.2
v9.2.250908v0.7.5
v9.3.260213v0.8.1
v9.3.260327v0.9.0
v9.3.260421v0.9.3
v9.4.260714current release
v9.4.260915current release

[!NOTE] Consulta la documentación de idalib-rs para obtener información adicional.

Créditos

El desarrollo de este proyecto ha sido apoyado por las siguientes organizaciones:

Registro de cambios

TODO

Categorías