AgentSmithers/x64DbgMCPServer

x64DbgMCPServer made from c# with Claude, Windsurf and Cursor support

이것은 무엇인가

X64Dbg MCP Server는 Windows 전용 디버거 x64dbg / x96 / x32dbg용 C# 플러그인입니다. LLM 기반 도구(Claude, Gemini 등)에서 사용되는 간단한 텍스트/JSON-over-HTTP 인터페이스인 Model Context Protocol (MCP) 을 사용하는 작은 내장 HTTP 서버를 실행합니다. 서버는 수신된 MCP 명령을 x64dbg API 호출로 변환하여 AI 클라이언트가 사용자가 수동으로 디버거 명령을 입력하지 않고도 메모리, 레지스터, 디스어셈블 코드, 주석/레이블 설정, 스레드 제어 등을 검사할 수 있게 합니다.

왜 중요한가

리버스 엔지니어링과 바이너리 분석은 전통적으로 매우 수동적입니다. MCP를 통해 디버거를 노출하면 대규모 언어 모델이 분석을 주도할 수 있습니다. 모델은 디버거에 모듈 덤프, 중단점 설정, 함수 레이블 지정을 요청하고 반환된 JSON을 사용하여 다음 단계를 결정할 수 있습니다. 이를 통해 AI 지원 리버스 엔지니어링 워크플로우를 구축하고, 반복적인 작업을 자동화하며, 디버거를 더 큰 보안 자동화 파이프라인에 통합할 수 있습니다.

작동 방식 (높은 수준)

  1. 플러그인 로드 – 컴파일된 DLL(x64DbgMCPServer.dp64)은 x64dbg의 plugins 폴더에 배치됩니다. 사용자가 플러그인 메뉴에서 Start MCP Server를 선택하면 플러그인이 로드됩니다.
  2. 자체 호스팅 HTTP 리스너 – 경량 HttpListener(ASP.NET Core 불필요)가 http://*:50300/sse(또는 message)에 바인딩됩니다. 명령 이름과 매개변수를 포함하는 간단한 HTTP POST인 MCP 요청을 수신합니다.
  3. 명령 디스패치 – 코드의 메서드는 [Command] 속성으로 표시됩니다. 리스너는 이러한 메서드를 리플렉션하여 수신된 명령 이름을 일치시키고, 매개변수를 구문 분석하고, 해당 x64dbg API 호출(예: 메모리 읽기, 레지스터 가져오기)을 실행하고, 결과를 JSON 또는 일반 텍스트로 반환합니다.
  4. AI 클라이언트 측 – 외부 MCP 클라이언트(예: 제공된 mcp-csharp-sdk-client 또는 Claude의 MCPProxy STDIO-to-SSE 브리지)가 서버에 프롬프트를 보냅니다. 서버의 응답은 LLM에 피드백되어 모델이 다음 디버거 작업을 결정하는 루프가 가능합니다.

누가 사용할 수 있나

  • 보안 연구원 – AI 기반 리버스 엔지니어링 스크립트를 프로토타입하려는 사람.
  • 레드팀/블루팀 엔지니어 – 반복적인 디버깅 작업(예: 스피드 핵 검사 찾기, 모듈 목록 추출)을 자동화하려는 사람.
  • 도구 빌더 – 완전한 RPC 계층을 작성하지 않고 LLM과 네이티브 디버거 사이의 프로그래밍 방식 브리지가 필요한 사람.

빠른 시작 (간단한 단계)

  1. 전제 조건 – Visual Studio Build Tools 2019+, .NET Framework 4.7.2 및 DllExport 유틸리티.
  2. 빌드 – 저장소를 클론하고, DllExport.bat를 실행하여 네이티브 내보내기를 활성화하고, .sln을 열고 빌드합니다. 출력 DLL을 *.dp64로 이름을 바꿉니다.
  3. 설치 – 빌드된 플러그인을 x64dbg\release\x64\plugins\x64DbgMCPServer에 복사합니다.
  4. 실행 – x64dbg를 시작하고 Plugins → Start MCP Server를 엽니다.
  5. HTTP 권한 부여 (관리자로 실행하지 않는 경우):
    netsh http add urlacl url=http://+:50300/sse/ user=Everyone
    
  6. 클라이언트 연결 – 제공된 C# 샘플 클라이언트 또는 Claude의 MCPProxy 브리지를 사용하여 http://127.0.0.1:50300/sse를 가리킵니다.
  7. 명령 실행 – ReadMemAtAddress, GetAllRegisters 등의 JSON 명령을 보냅니다. 서버는 LLM 소비에 적합한 JSON을 반환합니다.

제한 사항 및 미완료 작업

  • 모든 디버거 명령이 아직 래핑되지는 않았습니다. 작성자는 전체 스택/스레드/모듈 덤프를 추가 중입니다.
  • 기본 리스너는 모든 인터페이스에 바인딩되어 관리자 권한이 필요합니다. 향후 버전에서는 localhost에만 바인딩하는 것을 목표로 합니다.
  • 일부 명령(예: ExecuteDebuggerCommand)은 실제 성공 여부와 관계없이 현재 항상 true를 반환합니다.
  • .NET Framework와 x64dbg의 네이티브 플러그인 모델에 의존하므로 Windows만 지원됩니다.

위의 모든 정보는 저장소의 README에서 직접 가져온 것입니다.

관련

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