“黑客技术是一门时刻质疑你所有假设的学科。”
-- Dave Aitel
Haruspex 是一个极速的 IDA 无头插件,用于提取 IDA 反编译器生成的伪代码,其格式应适合导入 IDE,或由静态分析工具(如 Semgrep、weggli 或 oneiromancer)进行解析。

decompile_to_file] 来反编译一个函数,并将其伪代码和类型定义保存到磁盘。获取最新版本的最简单方式是通过 crates.io:
export IDADIR=/path/to/ida # if not set, the build script will check common locations
cargo install haruspex --locked
$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
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.dec 目录中找到提取的伪代码和类型定义:
vim <binary_file>.dec
code <binary_file>.dec
官方仅支持最新的 IDA 版本,但较旧版本也可能可用。下表总结了每个 IDA 版本的最新兼容版本:
[!NOTE] 查看 idalib-rs 文档以获取更多信息。
本项目的开发得到了以下组织的支持:
.cpp 扩展名而不是 .c 来输出伪代码(参见此问题)?| 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 | 当前版本 |
| v9.4.260915 | 当前版本 |