XM

xieemengxin/memory-inspector-mcp

部署与 DevOps

本页由 AI 翻译,技术细节请以原文为准。 查看原文

10 stars 5 forks 质量 54 趋势 18

Injected x64 Windows DLL + MCP bridge exposing a Cheat-Engine-style live memory debugger as Claude / LLM tools: typed hex view, first/next value scans, AOB, pointer/string scans, reverse pointer...

概览

注入到任意 64 位 Windows 进程的通用运行时调试工具。DLL 在目标进程内启动一个 TCP 服务(绑定 0.0.0.0:37651,同机或远端均可连),通过一个 tab-separated line 协议对外暴露 Cheat Engine 风格的调试能力;MCP 桥则把这些能力转成 50 个 Claude tools。 设计原则: - :DLL / MCP 都不依赖任何特定游戏结构。 - :扫描会话、snapshot、watcher、structure 定义在 DLL 里常驻,MCP 调用不会在中途重建。 - :每次请求一行 tab 分隔的文本,响应一个 JSON envelope {ok, command, text}。 依赖:MinGW-w64(brew install mingw-w64)+ CMake ≥ 3.24。 在 Windows 本地直接用 MSVC 也可以;CMakeLists 在 MSVC 下会启用 /W4 /permissive- /utf-8。 1. 把 inspector.dll 注入目标进程(手动注入器 / DLL injector / LoadLibrary 均可)。 2. DllMain → DLL_PROCESS_ATTACH 会: - 调 AllocConsole() 拉一个控制台窗口用于日志; - 绑定 0.0.0.0:37651 + 启动 accept 线程; - 启动 20 Hz 的 watcher 轮询线程。 3. 控制台里看到: 4. 卸载时 DLL_PROCESS_DETACH 会停 accept 线程 + watcher 线程并释放 socket。 远程联通:DLL 是 bind(INADDR_ANY, 37651),如果 MCP 和游戏不在同一台机器,把 端口穿透出来(或走 SSH 转发 / 内网直连)即可。 - 名称 inspector 决定了 Claude 里看到的工具前缀: mcp__inspector_process_info 等。 - INSPECTOR_HOST / INSPECTOR_PORT 可选;默认 127.0.0.1:37651。 - 远程机器把 INSPECTOR_HOST 改成游戏机的 IP 即可。

README

以下为原文 README 节选,完整内容请查看原文。

inspector

注入到任意 64 位 Windows 进程的通用运行时调试工具。DLL 在目标进程内启动一个 TCP 服务(绑定 0.0.0.0:37651,同机或远端均可连),通过一个 tab-separated line 协议对外暴露 Cheat Engine 风格的调试能力;MCP 桥则把这些能力转成 50 个 Claude tools。


1. 概述

层 位置 职责
inspector.dll inspector/dll/ 在目标进程内执行所有内存 / 扫描 / 反汇编 / 结构操作,暴露 TCP 37651
server.py inspector/mcp/ MCP stdio 桥,把 JSON-RPC 的 tools/call 翻译成 TCP 命令
Zydis inspector/dll/thirdparty/ 静态内嵌的 x86-64 反汇编器
参考 reference/cheat-engine/ CE 源码本地副本,仅作语义对照,不参与构建

设计原则:

  • 零项目耦合:DLL / MCP 都不依赖任何特定游戏结构。
  • 有状态:扫描会话、snapshot、watcher、structure 定义在 DLL 里常驻,MCP 调用不会在中途重建。
  • 协议极简:每次请求一行 tab 分隔的文本,响应一个 JSON envelope {ok, command, text}。

2. 目录结构

inspector/
├── README.md                      # 本文
├── dll/
│   ├── CMakeLists.txt
│   ├── toolchain-mingw-w64.cmake
│   ├── include/inspector/
│   │   ├── types.hpp              # u8..f64 基础类型
│   │   ├── formatting.hpp         # 解析 / hex / JSON 小工具
│   │   ├── memory_view.hpp        # SEH 保护的本地内存读
│   │   ├── service_util.hpp       # 区域枚举 / PE 解析
│   │   ├── service.hpp            # Service 公共 API
│   │   └── server.hpp
│   ├── src/
│   │   ├── dllmain.cpp / server.cpp
│   │   ├── service.cpp            # 分发 + watcher 线程
│   │   ├── service_memory.cpp     # 内存读写 / patch / hexview / pointer_chain
│   │   ├── service_scan.cpp       # 所有 scan_* / find_code_refs / pointer_path
│   │   ├── service_snapshot.cpp   # snapshot_*
│   │   ├── service_watch.cpp      # watch_* + event 队列
│   │   ├── service_dissect.cpp    # dissect / compare / compare_many / infer
│   │   ├── service_struct.cpp     # CE structure 会话
│   │   ├── service_module.cpp     # modules / module_info / resolve_symbol
│   │   ├── service_disasm.cpp     # Zydis 反汇编
│   │   └── service_thread.cpp     # thread_list / thread_context
│   └── thirdparty/zydis/
└── mcp/
    └── server.py

3. 编译

依赖:MinGW-w64(brew install mingw-w64)+ CMake ≥ 3.24。

cd inspector/dll
mkdir build && cd build
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchain-mingw-w64.cmake -DCMAKE_BUILD_TYPE=Release ..
cmake --build . --parallel
# 产物: build/inspector.dll  (约 15 MB,静态链接 Zydis/Zycore/libstdc++)

在 Windows 本地直接用 MSVC 也可以;CMakeLists 在 MSVC 下会启用 /W4 /permissive- /utf-8。


4. 注入与启动

  1. 把 inspector.dll 注入目标进程(手动注入器 / DLL injector / LoadLibrary 均可)。

  2. DllMain → DLL_PROCESS_ATTACH 会:

    • 调 AllocConsole() 拉一个控制台窗口用于日志;
    • 绑定 0.0.0.0:37651 + 启动 accept 线程;
    • 启动 20 Hz 的 watcher 轮询线程。
  3. 控制台里看到:

    inspector (generic memory / CE-style debug)
    pid         = ...
    host module = 0x00007FF7...
    wire port   = 0.0.0.0:37651
    [inspector] server started
    
在 GitHub 查看完整 README

安装

This server does not publish a one-line install command.

Open the repository installation guide 新手?先看 mcpskill.org 教程 →

配置

{ "mcpServers": { "inspector": { "command": "python3", "args": [ "/绝对路径/inspector/mcp/server.py" ], "env": { "INSPECTOR_HOST": "127.0.0.1", "INSPECTOR_PORT": "37651" } } } }