Apr 16, 2026

bndb-viewer: a web UI for Binary Ninja databases

An interactive web frontend for exploring Binary Ninja .bndb files, with AI-assisted Rust type recovery.

Heading image of bndb-viewer: a web UI for Binary Ninja databases

Reverse engineering Rust binaries is painful: stripped symbols, mangled names, opaque struct layouts. We built bndb-viewer to make the loop tighter — read the decompile in a browser, resolve a variable's provenance with one keystroke, define a Rust struct and watch the binary update in place.

What it does

  • Decompile / MLIL / disasm views with token-level highlighting
  • F-key: resolve any variable to its symbolic origin (constant / call return / pass-by-ref clobber / function arg)
  • Shift+Y: paste Rust struct source, compile it via rustlayout (the actual Rust compiler), define it in the BinaryView, assign it to a variable — decompiler updates instantly with field names
  • T-key: hand selected lines to a Sonnet agent that produces a Rust snippet, var map, and inferred struct definitions, validated against the binary's access pattern
  • Inline type view: click a struct Foo token, see fields without leaving the function

Architecture

The viewer's a Vue 3 SPA. Two data backends behind a single ApiClient interface: a live mode talking to a Python+Binary Ninja backend, and a snapshot mode that reads embedded JSON. The snapshot below is captured from a session against a stripped Rust example — no live server needed.

Try it

The snapshot above is read-only — mutations show a toast. The full viewer (live mode) is open source: git@osec:renato-osec/cchax.git. Run with:

./run.sh /path/to/your.bndb --port 8081
cd web && npm run dev

Subscribe to our blogs