Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
haruspex — Asistente de investigación de vulnerabilidades que extrae pseudocódigo del descompilador IDA Hex-Rays. | Kitploit
Herramientas/GitHubGitHub/0xdea/haruspex
Análisis Estático de Código (SAST)Análisis de VulnerabilidadesIngeniería InversaAnálisis de Binarios
GitHub0xdea/haruspex

haruspex

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

Ver Repositorio
1311044hace 4 díasRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Sitio web

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, distinguiendo las funciones que no se pueden decompilar de errores como la falta de una licencia de Hex-Rays.

Artículos

  • https://hex-rays.com/blog/streamlining-vulnerability-research-idalib-rust-bindings
  • https://hnsecurity.it/blog/streamlining-vulnerability-research-with-ida-pro-and-rust

Véase también

  • https://github.com/0xdea/ghidra-scripts/blob/main/Haruspex.java
  • https://github.com/0xdea/semgrep-rules
  • https://github.com/0xdea/weggli-patterns
  • https://docs.hex-rays.com/release-notes/9_0#headless-processing-with-idalib
  • https://github.com/idalib-rs/idalib
  • https://github.com/xorpse/parascope
  • https://hnsecurity.it/blog/automating-binary-vulnerability-discovery-with-ghidra-and-semgrep

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 (consulta https://hex-rays.com/ida-pro).
  2. Instala LLVM/Clang (consulta 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 (consulta https://hex-rays.com/ida-pro).
  2. Instala LLVM/Clang (consulta 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 de salida junto a <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
    

Compatibilidad

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.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.260714versión actual
v9.4.260915versión actual

[!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:

  • HN Security
  • Hex-Rays a través de su Contributor Program

Registro de cambios

  • CHANGELOG.md

TODO

  • Añadir una prueba de regresión de Semgrep CI para asegurar que el porcentaje de líneas analizadas no disminuya.
  • ¿Usar la extensión .cpp en lugar de .c para generar el pseudocódigo (consulta este issue)?
  • Implementar salida serializada para facilitar el análisis y parseo automatizados.
  • Integrar con el escaneo de Semgrep (consulta https://github.com/0xdea/semgrep-rules).
  • Integrar con el escaneo de weggli (consulta https://github.com/0xdea/weggli-patterns).
  • Mejorar la salida del decompilador al estilo de HexRaysPyTools y abyss.
  • Implementar análisis en paralelo (consulta https://github.com/fugue-re/fugue-mptp).
Descargar herramienta