Rust Apache-2.0

Ouroboros

Decompiler written in Rust

H

Hexorg

Dernière activité 2 déc. 2025
Hexorg/Ouroboros

259

étoiles

16

forks

2

issues ouvertes

Ce README est souvent en anglais.

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!

Projets similaires

Java decompiler, assembler, and disassembler

Rust
SStoryyeller
2,3 k étoiles243

Blazing fast and correct x86/x64 disassembler, assembler, decoder, encoder for Rust, .NET, Java, Python, Lua

Rustassemblerdecoderdisassembler
Iicedland
3,6 k étoiles275

Lightweight coding agent that runs in your terminal

Rust
Oopenai
127,1 k étoiles19,8 k