buzzer-re/Rikugan

A reverse-engineering agent for IDA Pro and Binary Ninja

Rikugan (육안) – AI 기반 리버스 엔지니어링 어시스턴트

소개 – Rikugan은 IDA Pro 또는 Binary Ninja 내에서 실행되는 플러그인/에이전트입니다. 대규모 언어 모델(LLM)을 디스어셈블러 UI에 직접 내장하여 모델과 대화하며 분석 작업을 수행할 수 있습니다. LLM은 추론 엔진으로 사용되며, Rikugan은 60개 이상의 내장 "도구"(예: 함수 이동, 교차 참조 쿼리, 디컴파일, 유형 편집, 스크립트 실행)를 오케스트레이션하여 사용자를 대신해 호출합니다.

작동 방식 –

  • 에이전트는 생성기 기반 턴 루프를 실행합니다. 사용자 메시지가 스트리밍된 LLM 응답을 트리거하고, 모델이 tool-call 토큰을 출력하면 Rikugan이 이를 가로채어 해당 내부 도구를 실행한 뒤 결과를 모델에 피드백합니다.
  • 오케스트레이터는 먼저 바이너리(임포트, 익스포트, 문자열, 주요 함수)를 매핑하고, 병렬로 작동하는 격리된 하위 에이전트를 생성하여 나중에 결과를 병합할 수 있습니다.
  • 컨텍스트(함수 목록, 디컴파일러 출력, IL 등)가 모델에 제공되어 바이너리에 대해 추론할 수 있으며, 에이전트는 데이터베이스 옆의 RIKUGAN.md 파일에 메모를 영구적으로 저장할 수 있습니다.

주요 기능

기능 내용
60개 이상의 분석 도구 내비게이션, 디컴파일러 쿼리, 문자열 추출, 유형 주석, IL/마이크로코드 편집, 스크립트 실행 등. 모든 도구는 실행 전 사용자의 명시적 승인이 필요합니다.
자연어 패치 (실험적) 평이한 영어로 변경 사항을 설명(/modify …)하면 Rikugan이 관련 코드를 찾아 패치를 생성하고 적용합니다.
난독화 해제 (실험적, Binary Ninja 전용) 제어 흐름 평탄화, 불투명 술어, MBA, 정크 코드를 감지하고 IL 쓰기를 통해 제거하는 전용 스킬. 일반적인 수동 난독화 해제 시간을 약 3배 단축합니다.
병렬 하위 에이전트 오케스트레이터는 여러 격리된 에이전트를 실행하여 바이너리의 다른 부분을 동시에 탐색하고 통합 보고서를 작성할 수 있습니다.
프로필 LLM이 읽을 수 있는 데이터와 호출할 수 있는 도구에 대한 세밀한 구성 및 사용자 정의 규칙 정의.
LLM 제공자 독립적 Anthropic Claude, MiniMax, Gemini, Kimi, 오픈 소스 모델(LLAMA-70B, GPT-120B), 모든 OpenAI 호환 엔드포인트 및 로컬 Ollama 서버에서 작동합니다.
MCP 통합 Claude Code의 MCP 생태계 스킬과 서버를 재사용할 수 있지만, 외부 MCP 클라이언트에 의존하지 않습니다.
영구 메모리 발견 사항은 RIKUGAN.md에 저장되며 후속 세션에서 다시 로드됩니다.

설치 – 한 줄 스크립트로 IDA, Binary Ninja 또는 둘 다 감지합니다:

# 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

Rikugan은 IDA에 번들된 PySide6/Shiboken Qt 바인딩에 의존하므로 Windows 사용자는 최신 Visual C++ Redistributable 2015-2022 (x64)를 설치해야 합니다.

일반적인 워크플로우

  1. IDA Pro 또는 Binary Ninja에서 바이너리를 엽니다.
  2. Ctrl+Shift+I를 누르면 채팅 창이 나타납니다.
  3. 자연어로 질문하거나(예: "이 함수는 무엇을 하나요?") 명령(/deobfuscation, /modify …)을 내립니다.
  4. Rikugan이 LLM의 답변을 스트리밍하고, 요청된 도구를 호출하여 결과를 UI에 직접 반환합니다.
  5. 생성된 RIKUGAN.md를 검토하여 통찰력을 영구 기록으로 남깁니다.

대상 사용자 – 리버스 엔지니어, 악성코드 분석가, 취약점 연구원 또는 이미 IDA Pro/Binary Ninja를 사용 중이며 디스어셈블러를 떠나지 않고 AI 지원을 통해 내비게이션, 주석, 난독화 해제 속도를 높이고 싶은 분.

제한 사항 / 주의 사항

  • 패치 및 난독화 해제 기능은 실험적이며 결과는 수동으로 검증해야 합니다.
  • 에이전트는 대상 바이너리를 실행하지 않지만, 사용자가 승인한 스크립트를 호스트 내에서 실행하므로 손상된 스크립트가 호스트 환경에 영향을 줄 수 있습니다.
  • 호환되는 LLM 제공자와 인터넷 연결(또는 로컬 Ollama 서버)이 필요하며, 성능과 답변 품질은 선택한 모델에 크게 의존합니다.
  • macOS/ARM64 IDA Pro와 Python 3.14 조합에서는 알려진 Shiboken use-after-free 버그가 있으므로 안전을 위해 Python 3.10 유지를 권장합니다.

중요성 – Rikugan은 대규모 언어 모델을 저수준 분석 도구에 직접 내장할 수 있음을 보여주며, 전통적인 수동 방식의 행 단위 리버스 엔지니어링 과정을 대화형 경험으로 변화시킵니다. 자연어를 통해 풍부한 도구 상자를 제공함으로써 난독화 해제 및 바이너리 패치와 같은 복잡한 작업의 장벽을 낮추고 분석가가 제어권을 유지할 수 있도록 합니다.


링크

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트