
新发布Aug 20, 2026
rhabdomancer v0.10.0
漏洞研究助手,用于定位二进制文件中调用潜在不安全 API 函数的位置。
rhabdomancer
"通往可利用漏洞的道路由不可利用漏洞铺就。"
-- Mark Dowd
Rhabdomancer 是一款极快的 IDA 无头插件,用于定位二进制文件中调用潜在不安全 API 函数的位置。审计人员可以从这些候选点回溯,以找到允许访问不可信输入的路径。

Features
- 借助 IDA 9.x 和 idalib-rs Rust 绑定,提供极速无头用户体验。
- 支持针对 IDA 所支持的任意架构编译的 C/C++ 二进制目标。
- 危险 API 函数调用位置会输出到 stdout,并在 IDB 中标记。
- 已知危险 API 函数按风险等级分组,以帮助确定审计工作的优先级。
- [BAD 0] 高优先级——通常被认为不安全的函数。
- [BAD 1] 中优先级——应检查是否存在不安全用例的值得关注的函数。
- [BAD 2] 低优先级——涉及这些函数的代码路径应仔细检查。
- 可以通过编辑
conf/rhabdomancer.toml轻松自定义已知危险 API 函数列表。
Articles
- https://hex-rays.com/blog/streamlining-vulnerability-research-idalib-rust-bindings
- https://hnsecurity.it/blog/streamlining-vulnerability-research-with-ida-pro-and-rust
See also
- https://github.com/0xdea/ghidra-scripts/blob/main/Rhabdomancer.java
- https://docs.hex-rays.com/release-notes/9_0#headless-processing-with-idalib
- https://github.com/idalib-rs/idalib
- https://books.google.it/books/about/The_Art_of_Software_Security_Assessment.html
Installing
获取最新版本最简单的方式是通过 crates.io:
- 下载、安装并配置 IDA(参见 https://hex-rays.com/ida-pro)。
- 安装 LLVM/Clang(参见 https://rust-lang.github.io/rust-bindgen/requirements.html)。
- 在 Linux/macOS 上,按如下方式安装:
在 Windows 上,请改用以下命令:
export IDADIR=/path/to/ida # if not set, the build script will check common locations cargo install rhabdomancer$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 rhabdomancer
Compiling
或者,你也可以从源代码构建:
- 下载、安装并配置 IDA(参见 https://hex-rays.com/ida-pro)。
- 安装 LLVM/Clang(参见 https://rust-lang.github.io/rust-bindgen/requirements.html)。
- 在 Linux/macOS 上,按如下方式编译:
在 Windows 上,请改用以下命令:
git clone --depth 1 https://github.com/0xdea/rhabdomancer cd rhabdomancer export IDADIR=/path/to/ida # if not set, the build script will check common locations cargo build --releasegit 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" # if not set, the build script will check common locations cargo build --release
Usage
- 确保 IDA 已使用有效许可证正确配置。
- 如有需要,自定义
conf/rhabdomancer.toml中的已知危险 API 函数列表。你可以通过设置RHABDOMANCER_CONFIG环境变量来覆盖默认配置文件位置。 - 如果你的 IDA 安装在非标准位置,请确保设置了
IDADIR环境变量。 - 按如下方式运行:
任何现有的
rhabdomancer <binary_file>.i64IDB 文件都将被更新;否则,将创建一个新的 IDB 文件。 - 使用 IDA 打开生成的
.i64IDB 文件。 - 选择
View>Open subviews>Bookmarks - 尽情享受将结果便捷地收集到 IDA 窗口中的乐趣。
[!NOTE] Rhabdomancer 还会在标记的调用位置添加注释。
Compatibility
官方仅支持最新的 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.6 |
| v9.3.260213 | v0.8.1 |
| v9.3.260327 | v0.9.0 |
| v9.3.260421 | v0.9.3 |
| v9.4.260714 | 当前版本 |
[!NOTE] 有关更多信息,请参阅 idalib-rs 文档。
Credits
本项目的开发得到了以下组织的支持:
Changelog
待办事项
- 进一步丰富已知危险 API 函数列表(参见 https://github.com/0xdea/semgrep-rules)。
- 考虑扩大
normalize_name中规范化的范围,以涵盖更多情况。 - 实现一套基于 VulFi 和 VulnFanatic 风格的基础规则集。