
Assistent für Schwachstellenforschung, der Pseudocode aus dem IDA-Hex-Rays-Decompiler extrahiert.
"Hacking ist die Disziplin, ständig alle seine Annahmen zu hinterfragen."
-- Dave Aitel
Haruspex ist ein blitzschnelles IDA-Headless-Plugin, das den vom Decompiler von IDA generierten Pseudocode in einem Format extrahiert, das sich zum Import in eine IDE oder zum Parsen durch statische Analysetools wie Semgrep, weggli oder oneiromancer eignen sollte.

decompile_to_file] aufrufen, um eine Funktion zu dekompilieren und ihren Pseudocode sowie ihre Typdefinitionen auf der Festplatte zu speichern, wobei Funktionen, die nicht dekompiliert werden können, von Fehlern wie einer nicht verfügbaren Hex-Rays-Lizenz unterschieden werden.Der einfachste Weg, die neueste Version zu erhalten, ist über crates.io:
export IDADIR=/path/to/ida # if not set, the build script will check common locations
cargo install haruspex --locked
Unter Windows stattdessen die folgenden Befehle verwenden:
$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
Alternativ können Sie aus dem Quellcode bauen:
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
Unter Windows stattdessen die folgenden Befehle verwenden:
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 gesetzt ist, falls sich Ihre IDA-Installation an einem nicht standardmäßigen Ort befindet.haruspex <binary_file>
<binary_file>, benannt nach dieser Datei, wobei deren Erweiterung, falls vorhanden, durch .dec ersetzt wird (z. B. erzeugen foo.exe und foo beide foo.dec, sodass Binärdateien, die sich nur in ihrer Erweiterung unterscheiden, dasselbe Ausgabeverzeichnis verwenden):
vim foo.dec
code foo.dec
Nur die neueste IDA-Version wird offiziell unterstützt, aber ältere Versionen funktionieren möglicherweise ebenfalls. Die folgende Tabelle fasst die neueste kompatible Version für jede IDA-Version zusammen:
| IDA-Version | Neueste kompatible Version |
|---|---|
| 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 | aktuelle Version |
| v9.4.260915 | aktuelle Version |
[!NOTE] Weitere Informationen finden Sie in der Dokumentation zu idalib-rs.
Die Entwicklung dieses Projekts wurde von den folgenden Organisationen unterstützt:
.cpp anstelle von .c verwenden, um Pseudocode auszugeben (siehe dieses Issue)?