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.
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 Footoken, 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


