“黑客技术是一门时刻质疑你所有假设的学科。”
-- Dave Aitel
Haruspex 是一款极速的 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 环境变量。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 | 当前版本 |
| v9.4.260915 | 当前版本 |
[!NOTE] 请查看 idalib-rs 文档以获取更多信息。
本项目的开发得到了以下组织的支持:
.cpp 扩展名而不是 .c 来输出伪代码(参见此 issue)?