The Problem
Security researchers and engineers often need to quickly inspect binaries without installing a full reverse‑engineering stack on their workstation. Traditional tools require local compilation, dependency management, and can be constrained by OS or architecture. A browser‑based solution eliminates these barriers, but many existing web front‑ends either limit analysis depth or rely on remote processing, raising privacy concerns.
What This Does
rzweb is a complete, client‑side reverse‑engineering platform built on Rizin and compiled to WebAssembly via the companion rzwasi repository. The codebase is organized as follows: src/components/ – React UI pieces such as Terminal, FileDropZone, and view components (DisassemblyView, GraphView, HexView, StringsView). src/lib/rizin/ – Wrappers that load and control the Rizin WASM instance: RizinLoader.ts initiates the module, while RizinInstance.ts exposes a thin API for command execution. src/hooks/ – useRizinAnalysis.ts orchestrates analysis workflows, and useKeyboardShortcuts.ts handles keybindings. src/stores/ – Zustand stores (fileStore, rizinStore, settingsStore, uiStore) manage state across the app. src/pages/ – Page components (AnalysisPage, HomePage) that compose the UI. src/index.css, tailwind.config.ts, vite.config.ts – Build and styling configuration.
The terminal uses xterm.js for CLI interaction, and the UI relies on React with Tailwind CSS for layout. State is centralized via Zustand, and the project is bootstrapped with Vite.
How To Use It
Setup follows the project’s documented flow, which is reflected in the present configuration files:
1️⃣ Install dependencies (npm is used, as declared in package.json) npm install
2️⃣ Start the dev server (Vite configures HMR and serves the app) npm run dev
Open http://localhost:5173 (or the port Vite reports) in a modern browser. Drop an ELF, PE/PE+, Mach‑O, or Raw binary onto the homepage or use the “Browse” button to load a file. Click Analyze to launch a fresh Rizin invocation; chain dependent commands with semicolons, e.g. s main;pdf.
All processing occurs locally— the binary lives in the browser’s WebASM memory and is never transmitted off‑device.
Real‑World Use
A pentester receives a suspicious Windows PE binary from a client. Instead of spinning up a lab VM, they drag the file onto rzweb’s drop zone. Within seconds the platform lists functions (afl), extracts strings, and displays a control‑flow graph. The analyst runs pdf on a target function to view syntax‑highlighted disassembly, searches for hard‑coded C2 domains in the Strings view, and inspects raw bytes with the Hex view—all without leaving the browser. When the session ends, the WASM module can be cached for offline reuse.
Code Health & Issues
No test files detected – repository‑wide untested code paths; any regression in the Rizin‑WASM bridge or UI components could go unnoticed. No CI/CD pipeline detected – absence of a .github/workflows directory or any automated build/test gate means changes (e.g., upgrades to the Rizin WASM version) must be manually verified. No explicit input‑validation layer beyond Rizin’s own command parsing; malformed or extremely large binaries (>1 MB) may cause the browser to throttle analysis, and error handling around failed WASM loads is minimal.
The repository does include a LICENSE file and basic linting (eslint.config.json, tsconfig.json), which helps maintain code consistency, but the lack of automated testing and continuous integration is a notable gap for a production‑grade tool.
The Bottom Line
rzweb delivers a functional, privacy‑preserving RE environment that runs entirely in the browser, making it ideal for quick binary inspections, teaching, or remote collaborations where installing Rizin is impractical. Its main trade‑off is the absence of automated testing and CI, so teams requiring rigorous regression protection may need to add their own test harness or integrate the platform into an existing CI pipeline. It is well‑suited for individual researchers, educators, and small teams that value immediacy over extensive toolchain automation.