Skip to content

Repository files navigation

augur

build doc

"In fact, I've actually triggered buffer overflows by just entering my real name."

-- A.

Augur is a blazing fast IDA headless plugin that extracts strings and related pseudocode from a binary file. It stores pseudocode of functions that reference strings in an organized directory tree.

Features

  • Blazing fast, headless user experience courtesy of IDA 9.x and idalib-rs Rust bindings.
  • Support for binary targets for any architecture implemented by IDA's Hex-Rays decompiler.
  • Decompilation feature based on the decompile_to_file API exported by haruspex.
  • Pseudocode of each function that references a specific string is stored in a separate directory.

Articles

See also

Installing

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

  1. Download, install, and configure IDA (see https://hex-rays.com/ida-pro).
  2. Install LLVM/Clang (see https://rust-lang.github.io/rust-bindgen/requirements.html).
  3. On Linux/macOS, install as follows:
    export IDADIR=/path/to/ida # if not set, the build script will check common locations
    cargo install augur
    On Windows, instead, use the following commands:
    $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 augur

Compiling

Alternatively, you can build from source:

  1. Download, install, and configure IDA (see https://hex-rays.com/ida-pro).
  2. Install LLVM/Clang (see https://rust-lang.github.io/rust-bindgen/requirements.html).
  3. On Linux/macOS, compile as follows:
    git clone --depth 1 https://github.com/0xdea/augur
    cd augur
    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:
    git clone --depth 1 https://github.com/0xdea/augur
    cd augur
    $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

  1. Make sure IDA is properly configured with a valid license.
  2. Make sure the IDADIR environment variable is set if your IDA installation is in a non-standard location.
  3. Run as follows:
    augur <binary_file>
  4. Find the extracted pseudocode of each decompiled function in the binary_file.str directory, organized by string:
    vim <binary_file>.str
    code <binary_file>.str

Compatibility

Only the latest IDA release is officially supported, but older versions may work as well. The following table summarizes the latest compatible release for each IDA version:

IDA version Latest compatible release
v9.0.241217 v0.2.3
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 current release

Note

Check the idalib-rs documentation for additional information.

Credits

This project's development has been supported by the following organizations:

Changelog

TODO

About

Reverse engineering assistant that extracts strings and related pseudocode from a binary file.

Topics

Resources

Stars

117 stars

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages