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.md file 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

  1. Open a binary in IDA Pro or Binary Ninja.
  2. Press Ctrl+Shift+I – a chat pane appears.
  3. Ask natural‑language questions (e.g., “What does this function do?”) or issue commands (/deobfuscation, /modify …).
  4. Rikugan streams the LLM’s answer, calls the requested tools, and returns results directly in the UI.
  5. Review the generated RIKUGAN.md for 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

Related

  • Project
  • Project
  • Project
  • Project