Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
haruspex — Assistente per la ricerca di vulnerabilità che estrae pseudocodice dal decompilatore IDA Hex-Rays. | Kitploit
Strumenti/GitHubGitHub/0xdea/haruspex
Analisi Statica del Codice (SAST)Analisi delle VulnerabilitàReverse EngineeringAnalisi di Binari
GitHub0xdea/haruspex

haruspex

Assistente per la ricerca di vulnerabilità che estrae pseudocodice dal decompilatore IDA Hex-Rays.

Vedi Repository
13110444 giorni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Sito web

haruspex

build doc

"L'hacking è la disciplina di mettere in discussione tutte le tue assunzioni in ogni momento."

-- Dave Aitel

Haruspex è un plugin headless per IDA estremamente veloce che estrae lo pseudocodice generato dal decompilatore di IDA in un formato che dovrebbe essere adatto per essere importato in un IDE, o analizzato da strumenti di analisi statica come Semgrep, weggli, o oneiromancer.

Funzionalità

  • Esperienza utente headless estremamente veloce grazie a IDA 9.x e ai binding Rust idalib-rs.
  • Supporto per target binari per qualsiasi architettura implementata dal decompilatore Hex-Rays di IDA.
  • Lo pseudocodice di ogni funzione è memorizzato in un file separato nella directory di output per una facile ispezione.
  • Le definizioni di tipo globali e per funzione vengono estratte in file header insieme allo pseudocodice.
  • Crate esterni possono invocare [decompile_to_file] per decompilare una funzione e salvarne lo pseudocodice e le definizioni di tipo su disco, distinguendo le funzioni che non possono essere decompilate dagli errori come una licenza Hex-Rays non disponibile.

Articoli

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

Vedi anche

  • 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

Installazione

Il modo più semplice per ottenere l'ultima release è tramite crates.io:

  1. Scarica, installa e configura IDA (vedi https://hex-rays.com/ida-pro).
  2. Installa LLVM/Clang (vedi https://rust-lang.github.io/rust-bindgen/requirements.html).
  3. Su Linux/macOS, installa come segue:
    export IDADIR=/path/to/ida # if not set, the build script will check common locations
    cargo install haruspex --locked
    
    Su Windows, invece, usa i seguenti comandi:
    $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
    

Compilazione

In alternativa, puoi compilare dal sorgente:

  1. Scarica, installa e configura IDA (vedi https://hex-rays.com/ida-pro).
  2. Installa LLVM/Clang (vedi https://rust-lang.github.io/rust-bindgen/requirements.html).
  3. Su Linux/macOS, compila come segue:
    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
    
    Su Windows, invece, usa i seguenti comandi:
    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
    

Utilizzo

  1. Assicurati che IDA sia configurato correttamente con una licenza valida.
  2. Assicurati che la variabile d'ambiente IDADIR sia impostata se la tua installazione di IDA si trova in una posizione non standard.
  3. Esegui come segue:
    haruspex <binary_file>
    
  4. Trova lo pseudocodice estratto e le definizioni di tipo nella directory di output accanto a <binary_file>, denominata come esso con la sua estensione, se presente, sostituita da .dec (ad esempio, foo.exe e foo producono entrambi foo.dec, quindi i binari che differiscono solo per la loro estensione condividono la stessa directory di output):
    vim foo.dec
    code foo.dec
    

Compatibilità

Solo l'ultima release di IDA è ufficialmente supportata, ma versioni precedenti potrebbero funzionare ugualmente. La seguente tabella riassume l'ultima release compatibile per ogni versione di IDA:

Versione IDAUltima release compatibile
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.260714release corrente
v9.4.260915release corrente

[!NOTE] Consulta la documentazione di idalib-rs per ulteriori informazioni.

Crediti

Lo sviluppo di questo progetto è stato supportato dalle seguenti organizzazioni:

  • HN Security
  • Hex-Rays tramite il loro Contributor Program

Changelog

  • CHANGELOG.md

TODO

  • Aggiungere un test di regressione Semgrep CI per assicurarsi che la percentuale di righe analizzate non diminuisca.
  • Usare l'estensione .cpp invece di .c per produrre lo pseudocodice (vedi questa issue)?
  • Implementare l'output serializzato per facilitare l'analisi e il parsing automatizzati.
  • Integrare con la scansione Semgrep (vedi https://github.com/0xdea/semgrep-rules).
  • Integrare con la scansione weggli (vedi https://github.com/0xdea/weggli-patterns).
  • Migliorare l'output del decompilatore nello stile di HexRaysPyTools e abyss.
  • Implementare l'analisi parallela (vedi https://github.com/fugue-re/fugue-mptp).
Scarica lo strumento