Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
binary-ninja-headless-mcp — Headless Binary Ninja MCP 서버 — AI 에이전트에게 180개의 도구를 통해 심층 리버스 엔지니어링 기능을 제공합니다. | Kitploit
도구/GitHubGitHub/mrphrazer/binary-ninja-headless-mcp
Reverse EngineeringScripting & AutomationDebuggersFuzzingUtilities & FrameworksBinary AnalysisLearning & EducationAI-Assisted Reversing

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
GitHub
mrphrazer/binary-ninja-headless-mcp

binary-ninja-headless-mcp

Headless Binary Ninja MCP 서버 — AI 에이전트에게 180개의 도구를 통해 심층 리버스 엔지니어링 기능을 제공합니다.

저장소 보기
235192211일 전Kitploit 검토 완료

Binary Ninja 헤드리스 MCP

헤드리스 Binary Ninja 서버로, MCP(Model Context Protocol)를 사용하여 AI 에이전트에 GUI 없이 디스어셈블리, IL, 패치, 타입, 크로스 레퍼런스 등 심층 리버스 엔지니어링 워크플로에 대한 전체 액세스를 제공합니다.

에이전트 런타임과 동일한 Docker 컨테이너에서 실행되도록 설계되었습니다. 사이드카나 추가 서비스가 필요 없습니다.

이 전체 프로젝트(코드, 테스트, 문서)는 100% 바이브 코딩되었습니다.

왜 필요한가

기존 Binary Ninja MCP 서버는 GUI에 종속되거나 제한된 도구 표면을 노출합니다. 이 서버는 헤드리스 전용이며 샌드박스 VM/컨테이너 환경에서 에이전트 기반 워크플로를 위해 설계되었습니다. 에이전트가 분석 시스템을 완전히 제어하여 리버스 엔지니어링의 많은 부분을 자동화하고, 사용자는 대화형으로 프로세스를 논의하고 조정할 수 있습니다.

목표는 에이전트가 시간이 지남에 따라 분석을 검사, 개선 및 확장할 수 있는 인터페이스입니다. 즉, 타입, 심볼 및 메타데이터 업데이트, 분석 데이터베이스를 점진적으로 개선, 실행 취소/다시 실행으로 안전하게 패치 적용 및 반복, 그리고 특정 워크플로가 필요한 경우 사용자 정의 스크립트를 실행할 수 있습니다.

기능

  • 36개 기능 그룹에 걸쳐 181개의 도구: 분석, 디스어셈블리, IL, 패치, 실행 취소/다시 실행, 타입, 워크플로, 메모리, 검색, 크로스 레퍼런스, 스크립팅 등.
  • 기본적으로 읽기 전용이며 안전한 변경 워크플로(실행 취소/다시 실행, 트랜잭션)를 제공합니다.
  • 스크립팅 액세스: binja.eval 및 binja.call을 통해 도구 카탈로그가 포함하지 않는 모든 기능 사용 가능.
  • Stdio 및 TCP 전송.
  • Binary Ninja 자체 외에는 런타임 종속성이 없음.
  • 가짜 백엔드 모드: CI 및 개발 환경에서 Binary Ninja 라이선스 없이 사용 가능.

사전 요구 사항

  • Python 3.11+
  • Binary Ninja 설치(헤드리스 가능 라이선스 및 binaryninja Python 모듈을 실행 환경에서 가져올 수 있어야 함, 실제 분석용)
  • Binary Ninja 없이 CI/개발하려면 가짜 백엔드 모드 사용

설치

git clone https://github.com/mrphrazer/binary-ninja-headless-mcp.git
cd binary-ninja-headless-mcp
pip install .

또는 복제 없이 리포지토리 루트에서 직접 설치:

pip install git+https://github.com/mrphrazer/binary-ninja-headless-mcp.git

빠른 시작

Stdio 전송(기본값):

python3 binary_ninja_headless_mcp.py

TCP 전송:

python3 binary_ninja_headless_mcp.py --transport tcp --host 127.0.0.1 --port 8765

가짜 백엔드 모드(Binary Ninja 필요 없음):

python3 binary_ninja_headless_mcp.py --fake-backend

AI 에이전트와 함께 사용

이 서버는 표준 MCP를 stdio(기본값) 또는 tcp를 통해 사용하므로, MCP를 지원하는 모든 에이전트 호스트에서 사용할 수 있습니다.

Claude Code

claude mcp add binary_ninja_headless_mcp -- python3 /path/to/binary-ninja-headless-mcp/binary_ninja_headless_mcp.py

또는 프로젝트의 .mcp.json에 추가:

{
  "mcpServers": {
    "binary_ninja_headless_mcp": {
      "command": "python3",
      "args": ["binary_ninja_headless_mcp.py"],
      "cwd": "/path/to/binary-ninja-headless-mcp"
    }
  }
}

Codex

codex mcp add binary_ninja_headless_mcp -- python3 binary_ninja_headless_mcp.py

일반 MCP 호스트

  • binary_ninja_headless_mcp라는 이름의 서버를 등록합니다.
  • cwd가 리포지토리 루트인 경우 명령어 python3에 인수 ["binary_ninja_headless_mcp.py"]를 사용하거나 args에 절대 스크립트 경로를 사용합니다.
  • samples/ls와 같은 상대 경로가 올바르게 확인되도록 cwd를 리포지토리 경로로 설정합니다.
  • 호스트가 TCP를 요구하지 않는 한 stdio 전송을 사용합니다.
  • 가짜 모드(Binary Ninja가 설치되지 않은 경우)의 경우 --fake-backend를 추가합니다.
  • health.ping을 호출한 다음 session.open을 호출하여 연결을 확인합니다.

Docker 공동 배치 패턴

권장 배포 모델: 에이전트 프로세스와 이 MCP 서버를 동일한 컨테이너 이미지에서 실행합니다.

기본 예:

FROM python:3.11-slim
WORKDIR /app
COPY . /app
RUN python -m pip install --upgrade pip && pip install ruff pytest
CMD ["python3", "binary_ninja_headless_mcp.py"]

컨테이너 내에서 실제 Binary Ninja 분석이 필요한 경우, 이 이미지에 Binary Ninja 런타임 및 라이선스 설정을 추가하고 이 MCP 서버가 구성된 에이전트를 시작합니다.

MCP 메서드

  • initialize
  • ping
  • tools/list
  • tools/call
  • shutdown

tools/list 동작:

  • 명시적 페이지 매김 매개변수 없이 호출되면 전체 도구 카탈로그를 반환합니다.
  • offset 또는 limit이 제공되면 페이지 매김 출력을 사용합니다(페이지 모드에서 기본값 offset=0, limit=50).
  • 필터링 지원:
    • prefix(예: binary.)
    • query(도구 이름/설명에 대한 부분 문자열 일치)
  • 페이지 매김 메타데이터 반환: offset, limit, total, has_more.
  • 페이지가 잘린 경우(has_more=true) next_offset 및 notice 힌트를 포함합니다.

도구 호출 응답 동작:

  • structuredContent가 정식 전체 페이로드입니다.
  • content[0].text는 간결한 요약 문자열입니다(전체 JSON 중복이 아닙니다).
  • 이 분할은 전체 기계 판독 가능 데이터를 노출하면서도 컨텍스트 사용량을 줄이기 위해 의도적으로 이루어졌습니다.

품질 및 테스트

이 리포지토리는 잘 테스트되었으며 품질 게이트가 적용됩니다.

  • 테스트 스위트: pytest --collect-only -q를 실행하여 현재 수집된 테스트 수를 확인합니다.
  • CI 워크플로우는 다음을 적용합니다:
    • ruff format --check .
    • ruff check .
    • pytest
  • CI는 BINARY_NINJA_HEADLESS_MCP_FAKE_BACKEND=1을 사용하므로 Binary Ninja 설치 없이 검사가 실행됩니다.
  • 추가 구조 테스트를 통해 도구 레지스트리 일관성과 백엔드 접근 가능성을 확인합니다.

컨텍스트 제어

  • 읽기 전용 모드가 열린 세션의 기본값입니다(read_only=true).
  • binary.basic_blocks_at 및 function.basic_blocks는 페이지가 매겨집니다(offset/limit).
  • memory.read는 하드 응답 제한이 있습니다: length <= 65536.

제한 사항

  • Enterprise API는 현재 다루지 않습니다.
  • 디버거 API는 현재 다루지 않습니다.

보안 모델

  • MCP 통신(stdio/tcp)은 기본적으로 인증되지 않습니다.
  • 서버는 binja.eval을 통해 임의 스크립팅을 노출하고 binja.call을 통해 광범위한 API 액세스를 노출합니다.
  • 이는 신뢰할 수 있는 컨테이너화된 에이전트 환경을 위해 의도적으로 설계되었습니다.
  • 이 서버를 신뢰할 수 없는 사용자나 네트워크에 직접 노출하지 마십시오.

로컬 개발 워크플로

ruff format --check .
ruff check .
BINARY_NINJA_HEADLESS_MCP_FAKE_BACKEND=1 pytest -q

기능 퍼저

내장 MCP 기능 퍼저를 사용하여 samples/ls에 대해 광범위한 도구 표면을 테스트합니다.

실제 Binary Ninja 백엔드:

python3 -m binary_ninja_headless_mcp.fuzzer --binary samples/ls --iterations 120 --seed 1337

가짜 백엔드 스모크 실행:

python3 -m binary_ninja_headless_mcp.fuzzer --binary samples/ls --fake-backend --iterations 20

JSON 커버리지 보고서 작성:

python3 -m binary_ninja_headless_mcp.fuzzer --binary samples/ls --report-json /tmp/mcp-fuzzer-report.json

유용한 플래그:

  • --min-success-tools N: 성공한 도구가 N개 미만이면 종료 코드 0이 아닌 값으로 종료합니다.
  • --verbose: 퍼징하는 동안 각 도구 호출을 출력합니다.
  • --update-analysis: update_analysis=true로 시드 세션을 엽니다.

기능 카탈로그

서버는 현재 36개의 기능 그룹에 걸쳐 181개의 도구를 노출합니다.

analysis

  • analysis.status: 분석 상태 조회.
  • analysis.progress: 분석 진행 스냅샷 조회.
  • analysis.update: 비동기 분석 업데이트 트리거.
  • analysis.update_and_wait: 분석 업데이트 실행 후 완료 대기.
  • analysis.abort: 분석 중단.
  • analysis.set_hold: 분석 큐 보류/해제.

annotation

  • annotation.rename_function: 함수 이름 변경.
  • annotation.rename_symbol: 주소에 있는 심볼 이름 변경.
  • annotation.undefine_symbol: 주소에 있는 사용자 심볼 해제.
  • annotation.define_symbol: 주소에 심볼 정의.
  • annotation.rename_data_var: 데이터 변수 이름 변경.
  • annotation.define_data_var: 데이터 변수 정의.
  • annotation.undefine_data_var: 데이터 변수 해제.
  • annotation.set_comment: 주소에 주석 설정.
  • annotation.get_comment: 주소에 있는 주석 조회.
  • annotation.add_tag: 주소에 사용자 데이터 태그 추가.
  • annotation.get_tags: 주소에 있는 태그 조회.

arch

  • arch.info: 아키텍처 및 플랫폼 메타데이터 조회.
  • arch.disasm_bytes: 선택한 아키텍처로 바이트 디스어셈블.
  • arch.assemble: 선택한 아키텍처로 명령어 텍스트 어셈블.

baseaddr

  • baseaddr.detect: 기준 주소 탐지 실행.
  • baseaddr.reasons: 기준 주소 탐지 이유 조회.
  • baseaddr.abort: 기준 주소 탐지 중단.

binary

  • binary.summary: 바이너리/세션 요약 조회.
  • binary.save: 현재 바이너리 뷰를 파일 경로에 저장.
  • binary.functions: 페이지 매김으로 함수 목록 조회.
  • binary.strings: 페이지 매김으로 발견된 문자열 목록 조회.
  • binary.search_text: 세션에서 원시 텍스트/바이트 검색.
  • binary.sections: 페이지 매김으로 섹션 목록 조회.
  • binary.segments: 페이지 매김으로 세그먼트 목록 조회.
  • binary.symbols: 페이지 매김으로 심볼 목록 조회.
  • binary.data_vars: 페이지 매김으로 데이터 변수 목록 조회.
  • binary.get_function_at: 주소로 함수 찾기.
  • binary.get_function_disassembly_at: 주소를 포함하는 함수의 전체 디스어셈블리 조회.
  • binary.get_function_il_at: 주소를 포함하는 함수의 전체 IL 조회.
  • binary.functions_at: 주소에 있는 함수 목록 조회.
  • binary.basic_blocks_at: 페이지 매김으로 주소에 있는 기본 블록 목록 조회.

binja

  • binja.info: Binary Ninja 버전/설치 정보 반환.
  • binja.call: 일반 API 브리지: bn.* 또는 bv.* 대상 경로 호출.
  • binja.eval: bn, sessions, 선택적 bv로 Python 코드 평가.

data

  • data.typed_at: 주소에 있는 타입이 지정된 데이터 변수 조회.

database

  • database.create_bndb: 세션에서 .bndb 생성.
  • database.save_auto_snapshot: 자동 스냅샷 저장.
  • database.info: 세션의 데이터베이스 상태 조회.
  • database.snapshots: 데이터베이스 스냅샷 목록 조회.
  • database.read_global: 데이터베이스 전역 문자열 키 읽기.
  • database.write_global: 데이터베이스 전역 문자열 키 쓰기.

debug

  • debug.parsers: 이 뷰에 유효한 디버그 정보 파서 목록 조회.
  • debug.parse_and_apply: 디버그 정보를 파싱하여 뷰에 적용.

disasm

  • disasm.linear: 선형 디스어셈블리 라인 조회.
  • disasm.function: 주소를 포함하는 함수의 전체 디스어셈블리 조회.
  • disasm.range: 주소 범위 디스어셈블리 라인.

external

  • external.library_add: 외부 라이브러리 추가.
  • external.library_list: 외부 라이브러리 목록 조회.
  • external.library_remove: 외부 라이브러리 제거.
  • external.location_add: 외부 위치 매핑 추가.
  • external.location_get: 외부 위치 매핑 조회.
  • external.location_remove: 외부 위치 매핑 제거.
도구 다운로드