#ida #binary-file #reverse-engineering #idalib #vuln-dev

bin+lib rhabdomancer

Vulnerability research assistant that locates all calls to potentially insecure API functions in a binary file

10 releases

new 0.3.0 Jan 17, 2025
0.2.6 Jan 10, 2025
0.2.5 Dec 20, 2024
0.2.2 Nov 25, 2024
0.1.1 Nov 8, 2024

#584 in Command line utilities

Download history 64/week @ 2024-10-30 163/week @ 2024-11-06 208/week @ 2024-11-13 153/week @ 2024-11-20 32/week @ 2024-11-27 135/week @ 2024-12-04 129/week @ 2024-12-11 145/week @ 2024-12-18 2/week @ 2024-12-25 141/week @ 2025-01-08

315 downloads per month

MIT license

23KB
219 lines

rhabdomancer

build doc

"The road to exploitable bugs is paved with unexploitable bugs."

-- Mark Dowd

Rhabdomancer is a blazing fast IDA Pro headless plugin that locates all calls to potentially insecure API functions in a binary file. Auditors can backtrace from these candidate points to find pathways allowing access from untrusted input.

Features

  • Blazing fast, headless user experience courtesy of IDA Pro 9 and Binarly's idalib Rust bindings.
  • Support for C/C++ binary targets compiled for any architecture implemented by IDA Pro.
  • Bad API function call locations are printed to stdout and marked in the IDB.
  • Known bad API functions are grouped in tiers of badness to help prioritize the audit work.
    • [BAD 0] High priority - Functions that are generally considered insecure
    • [BAD 1] Medium priority - Interesting functions that should be checked for insecure use cases.
    • [BAD 2] Low priority - Code paths involving these functions should be carefully checked.
  • The list of known bad API functions can be easily customized by editing conf/rhabdomancer.toml.

Blog post

See also

Installing

The easiest way to get the latest release is via crates.io:

  1. Download, install, and configure IDA Pro (see https://hex-rays.com/ida-pro).
  2. Download and extract the IDA SDK (see https://docs.hex-rays.com/developer-guide).
  3. Install rhabdomancer as follows:
    $ export IDASDKDIR=/path/to/idasdk90
    $ export IDADIR=/path/to/ida # if not set, the build script will check common locations
    $ cargo install rhabdomancer
    

Compiling

Alternatively, you can build from source:

  1. Download, install, and configure IDA Pro (see https://hex-rays.com/ida-pro).
  2. Download and extract the IDA SDK (see https://docs.hex-rays.com/developer-guide).
  3. Compile rhabdomancer as follows:
    $ git clone https://github.com/0xdea/rhabdomancer
    $ cd rhabdomancer
    $ export IDASDKDIR=/path/to/idasdk90 # or edit .cargo/config.toml
    $ export IDADIR=/path/to/ida # if not set, the build script will check common locations
    $ cargo build --release
    

Usage

  1. Make sure IDA Pro is properly configured with a valid license.
  2. Customize the list of known bad API functions in conf/rhabdomancer.toml if needed.
  3. Run rhabdomancer as follows:
    $ rhabdomancer <binary_file>
    
    Any existing .i64 IDB file will be updated; otherwise, a new IDB file will be created.
  4. Open the resulting .i64 IDB file with IDA Pro.
  5. Select View > Open subviews > Bookmarks
  6. Enjoy your results conveniently collected in an IDA Pro window.

Note: rhabdomancer also adds comments at marked call locations.

Tested with

  • IDA Pro 9.0.240925 on macOS arm64 and Linux x64.
  • IDA Pro 9.0.241217 on macOS arm64 and Linux x64.

Note: only the unix target family is currently supported, check idalib documentation if you want to port it yourself to windows (or wasm).

Changelog

TODO

Dependencies

~7–19MB
~268K SLoC