buzzer-re/Rikugan
A reverse-engineering agent for IDA Pro and Binary Ninja
Rikugan (六眼) – AI‑powered reverse‑engineering assistant
What it is – Rikugan is a plug‑in/agent that runs inside IDA Pro or Binary Ninja. It embeds a large‑language‑model (LLM) directly in the disassembler UI and lets you converse with the model to drive analysis tasks. The LLM is used as a reasoning engine; Rikugan orchestrates a set of 60+ built‑in “tools” (e.g., navigate to a function, query cross‑references, decompile, edit types, run scripts) and calls them on the user’s behalf.
How it works –
- The agent runs a generator‑based turn loop: a user message triggers a streamed LLM response; when the model emits a tool‑call token, Rikugan intercepts it, executes the corresponding internal tool, and feeds the result back to the model.
- An orchestrator first maps the binary (imports, exports, strings, key functions) and can spawn isolated sub‑agents that work in parallel, later merging their findings.
- Context (function listings, decompiler output, IL, etc.) is fed to the model so it can reason about the binary, and the agent can persist its notes in a
RIKUGAN.mdfile next to the database.
Key features
| Feature | What you get |
|---|---|
| 60+ analysis tools | Navigation, decompiler queries, string extraction, type annotation, IL/micro‑code edits, script execution, etc. All tools require explicit user approval before they run. |
| Natural‑language patches (experimental) | Describe a change in plain English (/modify …) and Rikugan will locate the relevant code, generate the patch, and apply it. |
| Deobfuscation (experimental, Binary Ninja only) | A dedicated skill that detects control‑flow flattening, opaque predicates, MBA, junk code and removes them via IL writes, cutting typical manual deobfuscation time by ~3×. |
| Parallel sub‑agents | The orchestrator can launch multiple isolated agents to explore different parts of the binary simultaneously and then synthesize a unified report. |
| Profiles | Fine‑grained configuration of which data the LLM may read and which tools it may invoke, plus custom rule definitions. |
| LLM provider agnostic | Works with Anthropic Claude, MiniMax, Gemini, Kimi, open‑source models (LLAMA‑70B, GPT‑120B), any OpenAI‑compatible endpoint, and local Ollama servers. |
| MCP integration | Can reuse skills and servers from Claude Code’s MCP ecosystem, but does not depend on an external MCP client. |
| Persistent memory | Findings are saved to RIKUGAN.md and re‑loaded on subsequent sessions. |
Installation – A one‑liner script detects IDA, Binary Ninja, or both:
# Linux/macOS
curl -fsSL https://raw.githubusercontent.com/buzzer-re/Rikugan/main/install.sh | bash
# Windows (PowerShell)
irm https://raw.githubusercontent.com/buzzer-re/Rikugan/main/install.ps1 | iex
Windows users must also have the latest Visual C++ Redistributable 2015‑2022 (x64) because Rikugan relies on IDA’s bundled PySide6/Shiboken Qt bindings.
Typical workflow
- Open a binary in IDA Pro or Binary Ninja.
- Press Ctrl+Shift+I – a chat pane appears.
- Ask natural‑language questions (e.g., “What does this function do?”) or issue commands (
/deobfuscation,/modify …). - Rikugan streams the LLM’s answer, calls the requested tools, and returns results directly in the UI.
- Review the generated
RIKUGAN.mdfor a permanent record of insights.
Who it’s for – Reverse‑engineers, malware analysts, vulnerability researchers, or anyone who already uses IDA Pro/Binary Ninja and wants AI assistance to speed up navigation, annotation, and deobfuscation without leaving the disassembler.
Limitations / cautions
- The patch and deobfuscation capabilities are marked experimental; results should be manually verified.
- The agent never executes the target binary, but it does run user‑approved scripts inside the host, so a compromised script could affect the host environment.
- Requires a compatible LLM provider and an internet connection (or a local Ollama server) – performance and answer quality depend heavily on the model you choose.
- On macOS/ARM64 IDA Pro with Python 3.14 there is a known Shiboken use‑after‑free bug; the README recommends staying on Python 3.10 for safety.
Why it matters – Rikugan demonstrates that large‑language models can be embedded directly into low‑level analysis tools, turning a traditionally manual, line‑by‑line reverse‑engineering process into an interactive, conversational experience. By exposing a rich toolbox through natural language, it lowers the barrier to complex tasks such as deobfuscation and binary patching while keeping the analyst in control.
Links
- Documentation: https://rikugan.reversing.codes/docs.html
- Architecture overview: https://rikugan.reversing.codes/ARCHITECTURE.html
- Issue tracker: https://github.com/buzzer-re/Rikugan/issues
Related
- Project
- Project
- Project
- Project