# ling71671/open-reverselab architecture

> Architecture diagram of the GitHub repository ling71671/open-reverselab, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/ling71671/open-reverselab
- Repository: https://github.com/ling71671/open-reverselab

## Overview

Open-ReverseLab is an agent-native reverse-engineering lab: its MCP server exposes analysis tools, while its knowledge base organizes runnable investigation techniques across web, Android, Windows/PE, and general research. A typical user starts with a sample or signal, selects a board or tool, runs analysis, and collects evidence or generated artifacts. The graph emphasizes tool dispatch and the sampled CTF, Android, proxy, and GUI capabilities; wiring among unsampled modules is left out.

Main entry points: [`tools/skills/mcp/ReverseLabToolsMCP/reverse_lab_tools_mcp.py`](https://github.com/ling71671/open-reverselab/blob/main/tools/skills/mcp/ReverseLabToolsMCP/reverse_lab_tools_mcp.py) (MCP server), [`scripts/ctf-website/fingerprint_cve_pipeline.py`](https://github.com/ling71671/open-reverselab/blob/main/scripts/ctf-website/fingerprint_cve_pipeline.py) (Fingerprint to CVE), [`scripts/ctf-website/ctf_autopilot.py`](https://github.com/ling71671/open-reverselab/blob/main/scripts/ctf-website/ctf_autopilot.py) (CTF autopilot), [`gui/app/web/app.js`](https://github.com/ling71671/open-reverselab/blob/main/gui/app/web/app.js) (GUI frontend)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interfaces["Agent Interfaces"]
  node_mcp["MCP server"]
  node_gui["GUI bridge"]
  node_webui["GUI frontend<br/>[app.js]"]
end

subgraph group_analysis["Binary Analysis"]
  node_workspace["Workspace tools<br/>[workspace_crud.py]"]
  node_triage["Sample triage<br/>[triage.py]"]
  node_pe["PE inspection<br/>[pe.py]"]
  node_ghidra["Ghidra analysis<br/>[ghidra_headless.py]"]
  node_ghidra_summary["Analysis summaries<br/>[ghidra_summary.py]"]
  node_notes["Analysis notes<br/>[analysis_notes.py]"]
  node_mutations["Sample mutations<br/>[mutations.py]"]
  node_android["Android analysis<br/>[android_mumu.py]"]
end

subgraph group_web["Web Research"]
  node_ctf["CTF autopilot<br/>[ctf_autopilot.py]"]
  node_intake["CTF intake<br/>[ctf_intake.py]"]
  node_router["Knowledge router<br/>[kb_router.py]"]
  node_probe["HTTP probe<br/>[http_probe.py]"]
  node_fingerprints["Fingerprint to CVE"]
  node_cve_lookup["CVE lookup<br/>[cve_lookup.py]"]
  node_cve_graph["CVE graph<br/>[cve_graph.py]"]
  node_chain_planner["CVE chain planner"]
end

subgraph group_traffic["Traffic Tools"]
  node_mitm["Capture and replay"]
  node_addon["Capture modifiers<br/>[capture_addon.py]"]
  node_proxy_pool["Proxy pool<br/>[proxy_pool.py]"]
  node_proxy_pipeline["Proxy routing<br/>[pipeline.py]"]
end

node_agent(("AI agent"))
node_nvd(("NVD service"))

node_agent -->|"invokes tools"| node_mcp
node_mcp -->|"dispatches"| node_workspace
node_mcp -->|"dispatches"| node_triage
node_mcp -->|"dispatches"| node_pe
node_mcp -->|"dispatches"| node_ghidra
node_mcp -->|"dispatches"| node_ghidra_summary
node_mcp -->|"dispatches"| node_notes
node_mcp -->|"dispatches"| node_mutations
node_mcp -->|"dispatches"| node_android
node_webui -->|"calls API"| node_gui
node_ctf -->|"coordinates"| node_intake
node_ctf -->|"routes signals"| node_router
node_ctf -->|"runs probes"| node_probe
node_fingerprints -.->|"queries CVEs"| node_nvd
node_fingerprints -->|"looks up CVEs"| node_cve_lookup
node_fingerprints -->|"builds graph"| node_cve_graph
node_fingerprints -->|"plans chains"| node_chain_planner
node_mitm -->|"loads addon"| node_addon
node_proxy_pipeline -.->|"uses proxies"| node_proxy_pool

click node_mcp "https://github.com/ling71671/open-reverselab/blob/main/tools/skills/mcp/ReverseLabToolsMCP/reverse_lab_tools_mcp.py"
click node_gui "https://github.com/ling71671/open-reverselab/blob/main/scripts/gui/reverselab_gui_server.py"
click node_webui "https://github.com/ling71671/open-reverselab/blob/main/gui/app/web/app.js"
click node_workspace "https://github.com/ling71671/open-reverselab/blob/main/tools/skills/mcp/ReverseLabToolsMCP/reverselab_mcp/tools/workspace_crud.py"
click node_triage "https://github.com/ling71671/open-reverselab/blob/main/tools/skills/mcp/ReverseLabToolsMCP/reverselab_mcp/tools/triage.py"
click node_pe "https://github.com/ling71671/open-reverselab/blob/main/tools/skills/mcp/ReverseLabToolsMCP/reverselab_mcp/pe.py"
click node_ghidra "https://github.com/ling71671/open-reverselab/blob/main/tools/skills/mcp/ReverseLabToolsMCP/reverselab_mcp/tools/ghidra_headless.py"
click node_ghidra_summary "https://github.com/ling71671/open-reverselab/blob/main/tools/skills/mcp/ReverseLabToolsMCP/reverselab_mcp/tools/ghidra_summary.py"
click node_notes "https://github.com/ling71671/open-reverselab/blob/main/tools/skills/mcp/ReverseLabToolsMCP/reverselab_mcp/tools/analysis_notes.py"
click node_mutations "https://github.com/ling71671/open-reverselab/blob/main/tools/skills/mcp/ReverseLabToolsMCP/reverselab_mcp/tools/mutations.py"
click node_android "https://github.com/ling71671/open-reverselab/blob/main/tools/skills/mcp/ReverseLabToolsMCP/reverselab_mcp/tools/android_mumu.py"
click node_ctf "https://github.com/ling71671/open-reverselab/blob/main/scripts/ctf-website/ctf_autopilot.py"
click node_intake "https://github.com/ling71671/open-reverselab/blob/main/scripts/ctf-website/ctf_intake.py"
click node_router "https://github.com/ling71671/open-reverselab/blob/main/scripts/ctf-website/kb_router.py"
click node_probe "https://github.com/ling71671/open-reverselab/blob/main/scripts/ctf-website/http_probe.py"
click node_fingerprints "https://github.com/ling71671/open-reverselab/blob/main/scripts/ctf-website/fingerprint_cve_pipeline.py"
click node_cve_lookup "https://github.com/ling71671/open-reverselab/blob/main/scripts/ctf-website/cve_lookup.py"
click node_cve_graph "https://github.com/ling71671/open-reverselab/blob/main/scripts/ctf-website/cve_graph.py"
click node_chain_planner "https://github.com/ling71671/open-reverselab/blob/main/scripts/ctf-website/cve_chain_planner.py"
click node_mitm "https://github.com/ling71671/open-reverselab/blob/main/tools/mitmproxy_capture/mitmproxy_capture.py"
click node_addon "https://github.com/ling71671/open-reverselab/blob/main/tools/mitmproxy_capture/capture_addon.py"
click node_proxy_pool "https://github.com/ling71671/open-reverselab/blob/main/tools/proxy_pool/proxy_pool.py"
click node_proxy_pipeline "https://github.com/ling71671/open-reverselab/blob/main/tools/proxy-pipeline/pipeline.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_mcp,node_gui,node_webui toneBlue
class node_workspace,node_triage,node_pe,node_ghidra,node_ghidra_summary,node_notes,node_mutations,node_android toneAmber
class node_ctf,node_intake,node_router,node_probe,node_fingerprints,node_cve_lookup,node_cve_graph,node_chain_planner toneMint
class node_mitm,node_addon,node_proxy_pool,node_proxy_pipeline toneRose
class node_agent,node_nvd toneIndigo
```

## Components

### Agent Interfaces

- [MCP server](https://github.com/ling71671/open-reverselab/blob/main/tools/skills/mcp/ReverseLabToolsMCP/reverse_lab_tools_mcp.py): `tools/skills/mcp/ReverseLabToolsMCP/reverse_lab_tools_mcp.py`
- [GUI bridge](https://github.com/ling71671/open-reverselab/blob/main/scripts/gui/reverselab_gui_server.py): `scripts/gui/reverselab_gui_server.py`
- [GUI frontend](https://github.com/ling71671/open-reverselab/blob/main/gui/app/web/app.js): `gui/app/web/app.js`

### Binary Analysis

- [Workspace tools](https://github.com/ling71671/open-reverselab/blob/main/tools/skills/mcp/ReverseLabToolsMCP/reverselab_mcp/tools/workspace_crud.py): `tools/skills/mcp/ReverseLabToolsMCP/reverselab_mcp/tools/workspace_crud.py`
- [Sample triage](https://github.com/ling71671/open-reverselab/blob/main/tools/skills/mcp/ReverseLabToolsMCP/reverselab_mcp/tools/triage.py): `tools/skills/mcp/ReverseLabToolsMCP/reverselab_mcp/tools/triage.py`
- [PE inspection](https://github.com/ling71671/open-reverselab/blob/main/tools/skills/mcp/ReverseLabToolsMCP/reverselab_mcp/pe.py): `tools/skills/mcp/ReverseLabToolsMCP/reverselab_mcp/pe.py`
- [Ghidra analysis](https://github.com/ling71671/open-reverselab/blob/main/tools/skills/mcp/ReverseLabToolsMCP/reverselab_mcp/tools/ghidra_headless.py): `tools/skills/mcp/ReverseLabToolsMCP/reverselab_mcp/tools/ghidra_headless.py`
- [Analysis summaries](https://github.com/ling71671/open-reverselab/blob/main/tools/skills/mcp/ReverseLabToolsMCP/reverselab_mcp/tools/ghidra_summary.py): `tools/skills/mcp/ReverseLabToolsMCP/reverselab_mcp/tools/ghidra_summary.py`
- [Analysis notes](https://github.com/ling71671/open-reverselab/blob/main/tools/skills/mcp/ReverseLabToolsMCP/reverselab_mcp/tools/analysis_notes.py): `tools/skills/mcp/ReverseLabToolsMCP/reverselab_mcp/tools/analysis_notes.py`
- [Sample mutations](https://github.com/ling71671/open-reverselab/blob/main/tools/skills/mcp/ReverseLabToolsMCP/reverselab_mcp/tools/mutations.py): `tools/skills/mcp/ReverseLabToolsMCP/reverselab_mcp/tools/mutations.py`
- [Android analysis](https://github.com/ling71671/open-reverselab/blob/main/tools/skills/mcp/ReverseLabToolsMCP/reverselab_mcp/tools/android_mumu.py): `tools/skills/mcp/ReverseLabToolsMCP/reverselab_mcp/tools/android_mumu.py`

### Web Research

- [CTF autopilot](https://github.com/ling71671/open-reverselab/blob/main/scripts/ctf-website/ctf_autopilot.py): `scripts/ctf-website/ctf_autopilot.py`
- [CTF intake](https://github.com/ling71671/open-reverselab/blob/main/scripts/ctf-website/ctf_intake.py): `scripts/ctf-website/ctf_intake.py`
- [Knowledge router](https://github.com/ling71671/open-reverselab/blob/main/scripts/ctf-website/kb_router.py): `scripts/ctf-website/kb_router.py`
- [HTTP probe](https://github.com/ling71671/open-reverselab/blob/main/scripts/ctf-website/http_probe.py): `scripts/ctf-website/http_probe.py`
- [Fingerprint to CVE](https://github.com/ling71671/open-reverselab/blob/main/scripts/ctf-website/fingerprint_cve_pipeline.py): `scripts/ctf-website/fingerprint_cve_pipeline.py`
- [CVE lookup](https://github.com/ling71671/open-reverselab/blob/main/scripts/ctf-website/cve_lookup.py): `scripts/ctf-website/cve_lookup.py`
- [CVE graph](https://github.com/ling71671/open-reverselab/blob/main/scripts/ctf-website/cve_graph.py): `scripts/ctf-website/cve_graph.py`
- [CVE chain planner](https://github.com/ling71671/open-reverselab/blob/main/scripts/ctf-website/cve_chain_planner.py): `scripts/ctf-website/cve_chain_planner.py`

### Traffic Tools

- [Capture and replay](https://github.com/ling71671/open-reverselab/blob/main/tools/mitmproxy_capture/mitmproxy_capture.py): `tools/mitmproxy_capture/mitmproxy_capture.py`
- [Capture modifiers](https://github.com/ling71671/open-reverselab/blob/main/tools/mitmproxy_capture/capture_addon.py): `tools/mitmproxy_capture/capture_addon.py`
- [Proxy pool](https://github.com/ling71671/open-reverselab/blob/main/tools/proxy_pool/proxy_pool.py): `tools/proxy_pool/proxy_pool.py`
- [Proxy routing](https://github.com/ling71671/open-reverselab/blob/main/tools/proxy-pipeline/pipeline.py): `tools/proxy-pipeline/pipeline.py`

### Other components

- **AI agent**
- **NVD service**

## Connections

- AI agent → MCP server: invokes tools
- MCP server → Workspace tools: dispatches
- MCP server → Sample triage: dispatches
- MCP server → PE inspection: dispatches
- MCP server → Ghidra analysis: dispatches
- MCP server → Analysis summaries: dispatches
- MCP server → Analysis notes: dispatches
- MCP server → Sample mutations: dispatches
- MCP server → Android analysis: dispatches
- GUI frontend → GUI bridge: calls API
- CTF autopilot → CTF intake: coordinates
- CTF autopilot → Knowledge router: routes signals
- CTF autopilot → HTTP probe: runs probes
- Fingerprint to CVE → NVD service: queries CVEs
- Fingerprint to CVE → CVE lookup: looks up CVEs
- Fingerprint to CVE → CVE graph: builds graph
- Fingerprint to CVE → CVE chain planner: plans chains
- Capture and replay → Capture modifiers: loads addon
- Proxy routing → Proxy pool: uses proxies
