
Assistente per la ricerca di vulnerabilità che estrae pseudocodice dal decompilatore IDA Hex-Rays.
"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.

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.Il modo più semplice per ottenere l'ultima release è tramite crates.io:
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
In alternativa, puoi compilare dal sorgente:
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
IDADIR sia impostata se la tua installazione di IDA si trova in una posizione non standard.haruspex <binary_file>
<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
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 IDA | Ultima release compatibile |
|---|---|
| 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 | release corrente |
| v9.4.260915 | release corrente |
[!NOTE] Consulta la documentazione di idalib-rs per ulteriori informazioni.
Lo sviluppo di questo progetto è stato supportato dalle seguenti organizzazioni:
.cpp invece di .c per produrre lo pseudocodice (vedi
questa issue)?