"通往可利用漏洞的道路是由不可利用的漏洞铺就的。"
-- Mark Dowd
Rhabdomancer 是一个极速的 IDA 无头插件,用于定位二进制文件中对潜在不安全 API 函数的调用。审计人员可以从这些候选点进行回溯,以找到允许访问不可信输入的路径。

conf/rhabdomancer.toml 轻松自定义已知不良 API 函数列表。获取最新版本的最简单方式是通过 crates.io:
export IDADIR=/path/to/ida # 如果未设置,构建脚本将检查常见位置
cargo install rhabdomancer --locked
$env:LIBCLANG_PATH="\path\to\clang+llvm\bin"
$env:PATH="\path\to\ida;$env:PATH"
$env:IDADIR="\path\to\ida" # 如果未设置,构建脚本将检查常见位置
cargo install rhabdomancer --locked
或者,您也可以从源代码构建:
git clone --depth 1 https://github.com/0xdea/rhabdomancer
cd rhabdomancer
export IDADIR=/path/to/ida # 如果未设置,构建脚本将检查常见位置
cargo build --release --locked
git clone --depth 1 https://github.com/0xdea/rhabdomancer
cd rhabdomancer
$env:LIBCLANG_PATH="\path\to\clang+llvm\bin"
$env:PATH="\path\to\ida;$env:PATH"
$env:IDADIR="\path\to\ida" # 如果未设置,构建脚本将检查常见位置
cargo build --release --locked
conf/rhabdomancer.toml 中自定义已知不良 API 函数列表。您可以通过设置 RHABDOMANCER_CONFIG 环境变量来覆盖默认配置文件位置。IDADIR 环境变量。rhabdomancer <binary_file>
.i64 IDB 文件都将被更新;否则,将创建一个新的 IDB 文件。.i64 IDB 文件。View > Open subviews > Bookmarks[!NOTE] Rhabdomancer 还会在标记的调用位置添加注释。
仅官方支持最新的 IDA 版本,但旧版本也可能正常工作。下表总结了每个 IDA 版本对应的最新兼容版本:
[!NOTE] 有关更多信息,请查阅 idalib-rs 文档。
本项目的开发得到了以下组织的支持:
normalize_name 中规范化的范围,以涵盖更多情况。| IDA 版本 | 最新兼容版本 |
|---|
| v9.0.240925 | v0.2.4 |
| v9.0.241217 | v0.3.5 |
| v9.1.250226 | v0.6.2 |
| v9.2.250908 | v0.7.6 |
| v9.3.260213 | v0.8.1 |
| v9.3.260327 | v0.9.0 |
| v9.3.260421 | v0.9.3 |
| v9.4.260714 | 当前版本 |