
IDA Hex-Raysデコンパイラから疑似コードを抽出する脆弱性研究アシスタント。
「ハッキングとは、常にすべての前提を疑うという規律である。」
-- Dave Aitel
Haruspex は、IDA のデコンパイラが生成した擬似コードを、IDE にインポートしたり、Semgrep、weggli、oneiromancer などの静的解析ツールで解析するのに適した形式で抽出する、超高速な IDA ヘッドレスプラグインです。

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 環境変数が設定されていることを確認します。haruspex <binary_file>
<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 のドキュメントを確認してください。
このプロジェクトの開発は、以下の組織によって支援されています:
.c の代わりに .cpp 拡張子を使用する(この issue を参照)?