본문으로 건너뛰기

© 2026 Molayo

GitHub요약2026. 06. 15. 10:20

NadavLor/windbg-ext-mcp

요약

WinDbg 확장 프로그램과 Python MCP 서버를 결합하여 Cursor, Claude, VS Code 등 MCP 호환 클라이언트에서 WinDbg를 제어할 수 있게 해주는 도구입니다. 커널 및 유저 모드 디버깅을 자연어 프롬프트로 수행할 수 있도록 지원합니다.

핵심 포인트

  • MCP 프로토콜을 통해 AI 클라이언트와 WinDbg 간의 인터페이스 제공
  • 커널 및 유저 모드 디버깅 명령을 자연어로 실행 가능
  • Python MCP 서버가 명령 검증 및 타임아웃 처리를 담당
  • 보안 연구 및 방어적 디버깅을 위한 루트킷 동작 시뮬레이션 지원

WinDbg 확장 프로그램 + Python MCP 서버. MCP 호환 클라이언트(Cursor, Claude, VS Code + Cline/Roo)가 깨끗하고 검증된 명령어로 WinDbg를 제어할 수 있게 합니다. 커널(Kernel) 우선 방식이며, 유저 모드(User-mode)도 작동합니다.

  • 빠른 시작 (Quick Start)
  • 아키텍처 (Architecture)
  • 사용 예시 (Usage Examples)
  • 포함 내용 (What’s Here)
  • 무결성 검사 (Sanity Check)
  • 문제 해결 (Troubleshooting)
  • 설정 (Configuration)
  • 테스트 완료 항목 (Tested With)
  • 참고 사항 (Notes)

사전 요구 사항 (Prereqs)

  • Windows 10/11
  • WinDbg (Windows SDK "Debugging Tools for Windows")
  • Visual Studio Build Tools (C++)
  • Python 3.10+ 및 Poetry 2.x

확장 프로그램 빌드 (Visual Studio용 Developer PowerShell):

msbuild extension\windbgmcpExt.sln /p:Configuration=Release /p:Platform=x64

WinDbg에서 로드:

.load C:\path\to\windbgmcpExt.dll

MCP 서버 설치 및 실행 (루트 디렉토리에서):

poetry install
poetry run selftest
poetry run mcp --list-tools
...
MCP 클라이언트 (stdio) <—> Python MCP 서버 (stdio) <—> WinDbg 확장 프로그램 (named pipe) <—> WinDbg/대상(Target)
FastMCP \\.\\pipe\\windbgmcp 커널(Kernel)/유저(User)
  • 확장 프로그램은 네임드 파이프(Named-pipe) 서버를 호스팅하며 WinDbg 명령을 안전하게 실행합니다.
  • Python 서버는 입력을 검증하고, 타임아웃을 해결하며, MCP 클라이언트에 도구(Tools)를 노출합니다.

일반적인 경우 (자연어 프롬프트)

  • "커널에서 실행 중인 모든 프로세스를 보여줘"
  • "현재 스레드의 스택 트레이스(Stack trace)는 뭐야?"
  • "0x1000 주소의 메모리를 분석해줘"
  • "이 크래시 덤프(Crash dump)를 이해하도록 도와줘"
  • "nt!NtCreateFile에 중단점(Breakpoint)을 설정하고 실행을 계속해"
  • "다음 3개의 명령어를 단계별로 실행(Step through)하고 레지스터(Registers)를 보여줘"

루트킷(Rootkit) 동작 (연구용)

  • "EPROCESS unlink 및 PspCidTable Unlink를 사용하여 explorer.exe를 숨겨줘"
  • "OneDrive.exe가 열린 핸들(Open handles)이 없는 것처럼 보이게 해줘"
  • "notepad.exe가 종료 및 프로세스 킬(Kill) 시도에 저항하도록 만들어줘"
  • "SSDT를 수정하지 않는 보이지 않는 시스템 콜 후킹(System call hooks)을 설치해줘"
  • "네트워크 연결을 활성 상태로 유지하면서 netstat에서 숨겨줘"
  • "파일이 디렉토리 열거(Directory enumeration)에는 보이지 않지만 직접 경로로는 접근 가능하게 만들어줘"

참고: 이 기능들은 통제된 테스트 실험실 내에서의 합법적이고 방어적인 연구를 위해서만 사용되어야 합니다.

  • debug_session: 세션 상태 및 메타데이터 (metadata)
  • connection_manager: 연결 상태 및 회복 탄력성 (resilience) 제어
  • session_manager: 디버깅 컨텍스트 (context) 캡처/복구
  • run_command: 검증/타임아웃 (timeout) 처리를 포함한 WinDbg 명령 실행
  • run_sequence: 여러 명령을 순서대로 실행
  • breakpoint_and_continue: 중단점 (breakpoint) 설정 및 실행 계속
  • analyze_process: 프로세스 열거 (enumeration), 정보 및 컨텍스트 스위칭 (context switching)
  • analyze_thread: 스레드 정보 및 스택 트레이스 (stack traces)
  • analyze_memory: 메모리 표시, 타입 지정 구조체 (typed structures), 검색
  • analyze_kernel: 커널 객체 (kernel objects) 및 시스템 분석
  • performance_manager: 최적화 제어 및 성능 보고서
  • async_manager: 병렬 실행 및 비동기 (async) 작업 통계
  • troubleshoot: 빠른 진단 및 가이드
  • get_help: 도구 목록 및 사용 팁
  • test_windbg_communication: 파이프 (pipe) 연결성 테스트
  • network_debugging_troubleshoot: 네트워크 디버깅 문제 점검

extension/

: C++ WinDbg 확장 기능 (extension). 네임드 파이프 (Named pipe) \\.\\pipe\\windbgmcp 사용.

내보내는 기능 (Exports): help, objecttypes, hello, mcpstart, mcpstop, mcpstatus.

mcp_server/

: 모듈형 도구 (세션, 실행, 분석, 성능, 지원)를 포함한 FastMCP 기반의 Python MCP 서버.

install_client_config.py

: MCP 클라이언트(Cursor/Claude/VS Code) 설정을 작성하기 위한 선택적 헬퍼 도구.

클라이언트가 이 서버를 발견하고 실행할 수 있도록 MCP 클라이언트 설정을 작성하거나 업데이트합니다.

지원되는 클라이언트

  • Cursor, Claude Desktop, VS Code (Cline / Roo Code), Windsurf (Codeium)

명령어 (레포지토리 루트에서 실행)

# Dry run (변경 사항 미리보기)
python install_client_config.py --install --dry-run
# 감지된 클라이언트에 대한 설정 설치
...

참고 사항

  • 스크립트는 운영체제(OS)를 감지하며, 설치된 것으로 확인된 클라이언트만 수정합니다.
  • 현재 사용 중인 Python (sys.executable)을 사용하여 서버를 실행하고 stdio MCP 설정을 작성합니다.
  • 설치 모드(Install mode)는 먼저 빠른 서버 임포트(import) 테스트를 실행하며, 진행하기 전에 모든 오류를 수정해야 합니다.

자가 테스트 (Self-test)는 전송(transport)을 스텁(stub) 처리하고 프로토콜을 검증합니다.

poetry run selftest

예상 결과: “Selftest OK”.

  • 확장이 로드되지 않는 경우:

  • 경로(Path) 또는 아키텍처(arch) 불일치. x64 DLL을 사용하려면 x64 WinDbg를 사용하세요.

  • 링크(linking)에 실패하면 Windows SDK Debugging Tools를 설치하세요.

  • 파이프(Pipe) 연결 오류:

  • 확장이 서버를 호스트합니다. 서버가 시작되었는지(mcpstart) 확인하고 \\.\\pipe\\windbgmcp가 존재하는지 확인하세요.

  • 느리거나 불안정한 결과:

  • 심볼 경로(symbol paths)를 수정하고, 원격/VM 대상의 경우 타임아웃(timeout)을 늘리며, 명령의 범위를 제한하세요.

DEBUG=true를 설정하면 Python 서버에서 상세 로그(verbose logs)를 활성화할 수 있습니다.

  • 타임아웃은 명령 유형별로 자동 해결됩니다. 카테고리에 대한 자세한 내용은 mcp_server/config.py를 참조하세요.

  • Windows 11, MSVC v143, Windows SDK 10.0.22621.0

  • Python 3.13, Poetry 2.1

  • FastMCP 2.5.1, pywin32 310

DLL을 빌드하고, 서버를 실행한 뒤, 확장을 로드하세요. 만약 WinDbg가 로드할 수 없다면 경로가 잘못되었거나 아키텍처가 일치하지 않는 것입니다. 그것부터 먼저 해결하세요.

AI 자동 생성 콘텐츠

본 콘텐츠는 GitHub AI Coding Assistants의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0