
MCP 기반 리버스 엔지니어링 플랫폼으로, WinDbg, IDA Pro 및 x64dbg를 160개 이상의 AI 접근 가능한 디버깅 및 분석 도구와 연결합니다.
WinDbg, IDA Pro, x64dbg용 MCP 서버
하나의 stdio 인터페이스 · 160개 이상의 도구 · 세 개의 디버거, 하나의 클라이언트.
빠른 시작 · 아키텍처 · 서버 · 워크플로 · 이슈 보고
웹사이트 · ctxdebug.xyz · 연락처 · [email protected] · 상태 · 퍼블릭 알파
소유하거나 분석 권한이 있는 시스템에 대한 승인된 리버스 엔지니어링, 크래시 분석, 보안 연구용입니다.
ctxdebug는 WinDbg, IDA Pro 9.x, x64dbg를 AI 코딩 어시스턴트에 연결하는 MCP(Model Context Protocol) 플랫폼입니다. 크래시 덤프 분석, IDA에서의 정적 검토, x64dbg에서의 라이브 디버깅에 사용하세요 — 창 사이에서 출력을 복사할 필요 없이.
하나의 stdio 인터페이스. 160개 이상의 도구. 세 개의 디버거, 하나의 클라이언트.
작동 방식. 각 디버거는 MCP 도구 서버로 노출됩니다. Claude, Kiro 또는 MCP 호환 클라이언트와 대화하면, 클라이언트가 디버거를 호출합니다. 복사-붙여넣기도, 도구 간 수동 상관 분석도 필요 없습니다.
예시. *"이 크래시 덤프를 분석하고 근본 원인을 찾아줘."*라고 요청하면, ctxdebug는 WinDbg에서 덤프를 열고
!analyze -v를 실행한 뒤, 폴트 주소를 가져와 IDA Pro에서 해당 함수를 디컴파일하고, 의사 코드와 호출자 체인이 포함된 통합 보고서를 반환합니다.
하나의 프롬프트 → WinDbg가 덤프를 열고 크래시를 분석하며, IDA가 폴트 함수를 디컴파일 — 약 1.8초 만에 통합 보고서.
git clone https://github.com/DdUdle/ctxdebug.git
cd ctxdebug
pip install -e .
개별 서버:
claude mcp add windbg -- python windbg_mcp.py
claude mcp add ida -- python ida_mcp.py
claude mcp add x64dbg -- python -m agent --mcp
claude mcp add mco -- python mco_orchestrator.py
claude mcp add mco-sessions -- python mco_sessions.py
또는 통합 게이트웨이를 사용하세요 — 하나의 서버, 모든 도구:
claude mcp add mco-gateway -- python mco_gateway.py
전체 JSON 구성과 환경 변수는 mcp_config_example.json을 참조하세요.
서버가 등록되면 AI 클라이언트에 다음과 같이 요청하세요:
Open C:\dumps\crash.dmp, run a full crash analysis,
and decompile the function at the fault address.
오케스트레이터는 windbg_open_dump → windbg_analyze_crash → mco_pivot_to_ida를 연결하고 호출자 체인과 함께 의사코드를 반환합니다.
| 기능 | 수행 내용 |
|---|---|
| 라이브 디버거 제어 | x64dbg를 통해 프로세스를 실행, 일시 중지, 단계 실행 및 검사합니다. 한 번에 하나의 주소가 아닌 API 그룹(memory, network, crypto)에 중단점을 설정합니다. |
| 디버거 간 피벗 | WinDbg 크래시 덤프에서 주소를 가져와 IDA Pro에서 열어 단일 도구 호출로 디컴파일, 호출자 및 피호출자를 확인합니다. |
| 목표 기반 분석 | x64dbg 서버에는 다단계 목표를 계획하는 선택적 ReAct 에이전트(agent_analyze)가 포함되어 있습니다. 예를 들어 언패킹 루프를 찾거나 안티 분석 검사를 나열하는 작업을 도구 호출을 연결하여 수행합니다. Claude, Groq, 로컬 Ollama 또는 휴리스틱 전용과 함께 작동합니다. |
| 영구 노트 | 에이전트는 패커 시그니처, 안티 분석 패턴 및 이전 세션의 노트를 저장하고 새 대상에서 이를 불러올 수 있습니다. |
| 세션 기록 | 도구 호출을 전체 텍스트 검색(FTS5)과 함께 SQLite에 기록할 수 있습니다. 타임라인을 재생하거나, 두 세션을 비교하거나, Markdown 보고서를 내보냅니다. |
| 안티 분석 조사 | 정적 스캔(IDA 가져오기/패턴)과 동적 스캔(x64dbg PEB/RDTSC)을 하나의 보고서로 결합합니다. 분석 권한이 있는 샘플에 대한 선택적 랩 패치(PEB 플래그, 명령 편집)를 제공합니다. |
2024-11-05)localhost:2022의 HTTP REST, 6개 후보에서 엔드포인트를 자동 검색X64A 매직 + uint32 길이 + 8바이트 패딩 + JSON)| 서버 | 파일 | 수행 내용 | 도구 |
|---|---|---|---|
windbg | windbg_mcp.py | 크래시 덤프, 힙 분석, 섀도 스택, 커널 디버깅 | 70+ |
ida | ida_mcp.py | 디컴파일, xref, 타입 복구, 바이너리 패칭 | 32+ |
x64dbg | agent/ | 동적 분석, ReAct 에이전트, 메모리 검사 및 패칭 | 38+ |
mco | mco_orchestrator.py | 디버거 간 복합 워크플로 | 7 |
mco-sessions | mco_sessions.py | 세션 기록, FTS 검색, Markdown 내보내기 | 13 |
mco-gateway | mco_gateway.py | 통합 프록시 — 모든 서버를 하나의 연결로 | 전체 |
Windows SDK의 cdb.exe가 필요합니다. 기본 경로:
C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\cdb.exe
WINDBG_MCP_CDB 경로가 다르면 설정하세요. 사전 실행은 필요하지 않습니다. 도구가 필요할 때 덤프를 열거나 연결합니다.
바이너리를 로드한 상태로 IDA Pro 9.x를 엽니다.
Python 콘솔에서 다음을 실행합니다:
exec(open(r'path\to\ctxdebug\ida_server_plugin.py').read())
HTTP 서버가 포트 2022에서 시작됩니다.
C++ 플러그인을 빌드합니다:
cd agent\plugins
build_plugin.bat
mco_agent.dp64를 x64dbg의 플러그인 디렉터리에 복사합니다.
x64dbg를 재시작합니다 — 플러그인이 명명된 파이프 \\.\pipe\x64dbg_ai_agent를 노출합니다.
크래시 덤프 → 소스 (단일 명령)
mco_crash_to_source(dump_path="C:\\dumps\\crash.dmp")
덤프를 열고 !analyze -v를 실행하며, 결함 주소를 추출하고, IDA에서 충돌하는 함수를 디컴파일한 뒤, 호출자와 함께 의사 코드를 반환합니다.
안티 분석 보고서
mco_bossix_report()
bossix_hide() # PEB flag adjustments (lab)
bossix_patch(address) # NOP / flip JCC at a check (lab)
권한이 부여된 실험실에서 안티 디버그 검사를 구현한 샘플을 분석하기 위한 것입니다.
주소를 의사 코드로 피벗
mco_pivot_to_ida(address="0x7FF712340000")
목표 기반 분석
agent_analyze(goal="Find the unpacking loop and identify the OEP")
에이전트는 일련의 도구 호출을 계획하고, 실행하며, LLM 백엔드의 유무와 관계없이 발견 사항을 보고합니다.
세션 기록
session_start(name="crash dump review")
# ... do your work ...
session_end(notes="null deref in CRenderObject::Destroy")
session_export_markdown(session_id=1)
| 모드 | 명령 |
|---|---|
| 도구 전용 (기본값) | python -m agent --mcp |
| Claude 추론 | python -m agent --mcp --llm claude --api-key sk-... |
| 로컬 Ollama | python -m agent --mcp --llm local --llm-model deepseek-r1 |
| Groq (무료 티어) | python -m agent --mcp --llm groq |
| OpenRouter | python -m agent --mcp --llm openrouter |
| 대화형 CLI | python -m agent --cli |
| 변수 | 서버 | 용도 |
|---|---|---|
WINDBG_MCP_CDB | windbg | cdb.exe 경로 |
IDA_MCP_HOST | ida | IDA HTTP 호스트 (기본값: localhost) |
IDA_MCP_PORT | ida | IDA HTTP 포트 (기본값: 2022) |
IDA_MCP_TOKEN | ida | IDA HTTP 서버용 Bearer 토큰 — 루프백 외부에 바인딩하려면 필수 |
IDA_SERVER_HOST | ida | IDA 내 HTTP 서버의 바인드 주소 (기본값: 127.0.0.1) |
X64DBG_PATH | x64dbg | x64dbg.exe 경로 |
X64DBG_PIPE | x64dbg | 명명된 파이프 경로 |
ANTHROPIC_API_KEY | x64dbg | --llm claude 사용 시에만 필요 |
GROQ_API_KEY | x64dbg | --llm groq 사용 시에만 필요 |
MCO_SESSIONS_DB | sessions | SQLite 데이터베이스 경로 |
MCO_SERVERS | gateway | 활성화할 서버의 쉼표로 구분된 하위 집합 |