Skip to content

Hexorg/Ouroboros

Repository files navigation

Ouroboros — A Symbolic-Execution Decompiler

Rust License CI/CD egui_version

A fast, research-friendly decompiler built in Rust that recovers high-level structure from binaries using symbolic execution, constraint tracking instead of single static assignment IR models (though it can ingest SSA IR). It emphasizes block pre/post conditions, register/memory deltas, dominator/post-dominator analysis, and structured reconstruction (if/else, loops, SESE regions).

Screenshot


Features

  • Symbolic Execution Core Tracks path constraints and symbolic values to recover call arguments, globals, and side effects.

  • Constraint-Tracking SSA IR VEX-inspired, def-use chains, register/memory deltas, and expression rewriting for clean lifting.

  • CFG + Structural Recovery Dominators, post-dominators, and SESE discovery to form if/else, loops, and early-exit patterns.

  • Calling Convention Inference Heuristics + dataflow to infer parameter/return passing across common ABIs.

  • Rust-first Performance & Safety Zero-cost abstractions where possible; explicit, testable passes.

  • Beautiful UI Thanks and a big shoutout to


Quick Start

Prerequisites

  • Rust (stable). Install via https://rustup.rs/
  • Recommended: llvm-objdump, gdb, or your favorite disassembler for comparison.

Build

git clone https://github.com/Hexorg/Ouroboros.git
cd Ouroboros
cargo build --release

Run

cargo run --release

Upon start, Use the menu bar and select File > Open... Then select a PE32 (or PE32+) binary. Currently, no automated analysis is available. Navigate to a know function start address, hover over the first byte of the instruction and press D to disassemble the instructions until NOP or an invalid instruction is encountered. Then Hover over the first address of the function and press F to decompile the function. This will symbolically execute the function and present decompiled result.

License

Ouroboros is free, open source and permissively licensed! You can choose from

at your option. This means you can select the license you prefer!

About

Decompiler written in Rust

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published