
Assistant de recherche de vulnérabilités qui extrait du pseudo-code du décompilateur IDA Hex-Rays.
« Le hacking est la discipline qui consiste à remettre en question toutes ses hypothèses, tout le temps. »
-- Dave Aitel
Haruspex est un plugin headless IDA ultra-rapide qui extrait le pseudocode généré par le décompilateur d'IDA dans un format qui devrait convenir à une importation dans un IDE, ou à une analyse par des outils d'analyse statique tels que Semgrep, weggli, ou oneiromancer.

decompile_to_file] pour décompiler une fonction et sauvegarder son pseudocode et ses définitions de types sur disque, en distinguant les fonctions qui ne peuvent pas être décompilées des erreurs telles qu'une licence Hex-Rays indisponible.Le moyen le plus simple d'obtenir la dernière version est via crates.io :
export IDADIR=/path/to/ida # if not set, the build script will check common locations
cargo install haruspex --locked
Sous Windows, en revanche, utilisez les commandes suivantes :
$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
Alternativement, vous pouvez compiler depuis les sources :
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
Sous Windows, en revanche, utilisez les commandes suivantes :
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 définie si votre installation d'IDA se trouve dans un emplacement non standard.haruspex <binary_file>
<binary_file>, nommé d'après celui-ci avec son extension, le cas échéant, remplacée par .dec (par exemple, foo.exe et foo produisent tous deux foo.dec, donc les binaires qui ne diffèrent que par leur extension partagent le même répertoire de sortie) :
vim foo.dec
code foo.dec
Seule la dernière version d'IDA est officiellement prise en charge, mais les versions plus anciennes peuvent également fonctionner. Le tableau suivant résume la dernière version compatible pour chaque version d'IDA :
| Version d'IDA | Dernière version 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 | version actuelle |
| v9.4.260915 | version actuelle |
[!NOTE] Consultez la documentation d'idalib-rs pour plus d'informations.
Le développement de ce projet a été soutenu par les organisations suivantes :
.cpp au lieu de .c pour produire le pseudocode (voir
ce ticket) ?