
Ассистент для исследования уязвимостей, который извлекает псевдокод из декомпилятора IDA Hex-Rays.
"Хакинг — это дисциплина постоянного сомнения во всех своих предположениях."
-- Dave Aitel
Haruspex — это сверхбыстрый headless-плагин для IDA, который извлекает псевдокод, сгенерированный декомпилятором IDA, в формате, пригодном для импорта в IDE или для разбора инструментами статического анализа, такими как Semgrep, weggli или oneiromancer.

decompile_to_file], чтобы декомпилировать функцию и сохранить её псевдокод и
определения типов на диск, отличая функции, которые невозможно декомпилировать, от ошибок, таких как
недоступная лицензия Hex-Rays.Самый простой способ получить последний релиз — через crates.io:
export IDADIR=/path/to/ida # if not set, the build script will check common locations
cargo install haruspex --locked
В Windows вместо этого используйте следующие команды:
$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
В качестве альтернативы можно собрать из исходников:
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
В Windows вместо этого используйте следующие команды:
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 задана, если ваша установка IDA находится в нестандартном месте.haruspex <binary_file>
<binary_file>, названном по
имени файла с заменой его расширения, если оно есть, на .dec (например, foo.exe и foo оба дают foo.dec,
так что бинарники, различающиеся только расширением, используют один и тот же выходной каталог):
vim foo.dec
code foo.dec
Официально поддерживается только последний релиз IDA, но более старые версии тоже могут работать. В следующей таблице приведены последние совместимые релизы для каждой версии IDA:
| Версия IDA | Последний совместимый релиз |
|---|---|
| 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 | current release |
| v9.4.260915 | current release |
[!NOTE] Дополнительную информацию см. в документации idalib-rs.
Разработку этого проекта поддерживали следующие организации:
.cpp вместо .c для вывода псевдокода (см.
этот issue)?