"The road to exploitable bugs is paved with unexploitable bugs."
-- Mark Dowd
Rhabdomancer is a blazing fast IDA Pro headless plugin that locates calls to potentially insecure API functions in a binary file. Auditors can backtrace from these candidate points to find pathways allowing access to untrusted input.

conf/rhabdomancer.toml.The easiest way to get the latest release is via crates.io:
sh
export IDADIR=/path/to/ida # if not set, the build script will check common locations
cargo install rhabdomancer
On Windows, instead, use the following commands:
powershell
$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 rhabdomancerAlternatively, you can build from source:
sh
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 --release
On Windows, instead, use the following commands:
powershell
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" # if not set, the build script will check common locations
cargo build --releaseconf/rhabdomancer.toml if needed. You can override the default
configuration file location by setting the RHABDOMANCER_CONFIG environment variable.IDADIR environment variable is set if your IDA Pro installation is in a non-standard location.sh
rhabdomancer <binary_file>
Any existing .i64 IDB file will be updated; otherwise, a new IDB file will be created..i64 IDB file with IDA Pro.View > Open subviews > Bookmarks[!NOTE] Rhabdomancer also adds comments at marked call locations.
Only the latest IDA Pro release is officially supported, but older versions may work as well. The following table summarizes the latest compatible release for each IDA Pro version:
| IDA Pro version | Latest compatible release |
|---|---|
| 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 | current release |
[!NOTE] Check the idalib documentation for additional information.
normalize_name to account for more cases.$ claude mcp add rhabdomancer \
-- python -m otcore.mcp_server <graph>