Skip to content

Latest commit

 

History

History
160 lines (130 loc) · 8.56 KB

File metadata and controls

160 lines (130 loc) · 8.56 KB

MCP 工具参考

服务端 ggmcp 共提供 45 个 MCP 工具。App 已把常用操作做成按钮;任何工具都可以在「工具 → RAW 调用」里填写工具名 + JSON 参数直接调用,因此服务端升级后无需等待 App 更新。

参数约定

参数 取值
type byte word dword qword float doublegg_search 额外支持 auto(同时扫 byte/word/dword/qword/float,按稀有度汇总)
region all heap stack anonymous module
address / rangeStart / rangeEnd 0x 十六进制或十进制
value 十进制、0x 十六进制、浮点(按 type 解析)
aligned 是否按类型宽度对齐扫描(默认 true
refine 两步搜索:只在上一次结果集中过滤,秒级完成

会话与配置

工具 说明 参数
gg_status 会话状态:附加进程、读写模式(kernel / processvm / memfile)、结果数、冻结数、GG 绑定状态
gg_config_get 查看运行时配置
gg_config_set 修改配置并持久化到 /data/local/tmp/ggmcp/config.json searchMaxResults searchCandidateMax fuzzyMaxSnapshotMB freezeIntervalMs listDefaultLimit listMaxLimit resultsDefaultLimit resultsMaxLimit setAllMax
gg_server_stop 关闭服务端进程(释放内存;再次使用需重新启动)

进程与目标

工具 说明 参数
gg_list_processes 进程列表(pid / 名称 / 命令行 / uid / rss) query includeKernel appOnly sortactive pid adj namelimit offset
gg_attach 附加目标进程,后续内存操作都针对它;自动初始化内核通道 target(pid、包名或进程名)
gg_detach 分离当前进程并清空搜索状态
gg_target_info 目标进程内存映射概况 + 模块列表
gg_module_list 已加载模块(路径 + 基址 + 大小) query
gg_pause / gg_resume 暂停(SIGSTOP)/ 恢复(SIGCONT)目标进程

搜索

工具 说明 参数
gg_search 精确搜索已知值;auto 类型会同时扫多种宽度 value type region rangeStart rangeEnd aligned refine
gg_search_unknown_init 模糊搜索初始化:记录当前值作为快照,候选为全地址 type region rangeStart rangeEnd
gg_search_refine 模糊搜索细化,与上次快照比较 modeincreased decreased unchanged changed rangeminValue maxValue minAbsValue
gg_search_range 搜索落在 [min, max] 区间的地址 min max type region
gg_search_xor Xor 加密值搜索:统计密钥分布并以众数密钥为候选;refine=true 保留密钥不变的地址 value type region rangeStart rangeEnd refine
gg_result_count 当前结果数量
gg_get_results 查看结果(地址 + 当前值,分页) limit offset
gg_clear_results 清空结果

读写与修改

工具 说明 参数
gg_read 读取指定地址的值 address type
gg_read_bytes 读取原始字节(hex) address size
gg_hex_dump Hex 转储一段内存(便于看结构体) address size
gg_write 向指定地址写入值 address value type
gg_set_results 批量修改结果:① values 数组({index 或 address, value, type})② all=true + value 把所有结果改成同一值 values all value type
gg_freeze 冻结地址的值(持续写入,直到解冻) index address value type id
gg_unfreeze 解冻:id 指定冻结项,或 all 解冻全部 id
gg_freeze_results 批量冻结当前结果集为同一值,支持范围过滤与坐标对模式 value type minValue maxValue minAbsValue excludeNaN pairOnly maxCount
gg_watch 持续监控若干地址的值变化(坐标流 / 动态值检测) addresses(数组)type durationMs intervalMs onlyChanges

分析与定位

工具 说明 参数
gg_module_base 取指定模块基址 name
gg_calc_offset 计算地址相对模块基址的偏移 address module
gg_pointer_scan 扫描内存中“值等于目标地址”的指针(找指针链) targetAddress typedword / qwordregion
gg_analyze_results 分析当前结果:值分组统计 + 地址相邻对(结构体特征)+ 区间分布 maxScan gap
gg_export_results 把当前结果导出为 JSON 文件,返回路径与大小 path

快照与交叉分析

工具 说明 参数
gg_snapshot_results 把当前结果保存为命名快照(持久化到 /data/local/tmp/ggmcp/snapshots id source
gg_list_snapshots 列出所有快照
gg_delete_snapshot 删除快照(id=all 删除全部) id
gg_cross_analyze 交叉分析两个结果集:交集 / 仅 A / 仅 B / 相邻对 / 同值交集(current 表示当前结果) snapA snapB gap

GameGuardian 联动

工具 说明 参数
gg_bind_gg 自动发现并绑定 GG 修改器(改版随机包名也能识别);绑定信息持久化 package
gg_switch_gg 换绑另一个 GG 修改器 package
gg_unbind_gg 解绑并清除持久化信息
gg_read_gg_saved 从 GG 进程内存中读取你手动保存的地址列表 gameStart gameEnd maxItems
gg_list_gg_files 列出 GG 数据目录下的文件(路径 + 大小 + 时间) path
gg_read_gg_file 读取 GG 数据目录内的指定文件(只读,路径限定在 GG 数据目录内) path
gg_lua_write 生成 Lua 脚本到 /sdcard/ggmcp/,供 GG 执行 code name
gg_lua_read_out 回读脚本输出(脚本用 io.open 写到 <name>.out.txt name

注意(工具名变更):上游 v2.9.13 把读取 GG 数据文件的 handler 改名为 gg_read_gg_file,但工具列表里的 gg_list_gg_files 条目未同步更新,导致:

  • 仓库内 server/ 源码重新编译的服务端:gg_read_gg_file 可用(按名调用),gg_list_gg_files 会报未知工具;
  • APK 内置二进制gg_list_gg_files 可用,gg_read_gg_file 不存在。

两个按钮在「工具 → GameGuardian 联动」里都有;若其中一个报错,用另一个,或在 RAW 调用里手动指定可用的工具名。详见 FAQ.md

其它

工具 说明 参数
gg_shell 以 root 身份执行 shell 命令(危险,谨慎使用) cmd

调用示例

直接对本机服务发 JSON-RPC(电脑上配合 adb forward tcp:8788 tcp:8788 更方便):

# 附加进程
curl -s -X POST http://127.0.0.1:8788/mcp -H 'Content-Type: application/json' -d '{
  "jsonrpc":"2.0","id":1,"method":"tools/call",
  "params":{"name":"gg_attach","arguments":{"target":"com.example.game"}}
}'

# 精确搜索
curl -s -X POST http://127.0.0.1:8788/mcp -H 'Content-Type: application/json' -d '{
  "jsonrpc":"2.0","id":2,"method":"tools/call",
  "params":{"name":"gg_search","arguments":{"value":"100","type":"dword","region":"all"}}
}'

# 两步搜索:数值变化后 refine
curl -s -X POST http://127.0.0.1:8788/mcp -H 'Content-Type: application/json' -d '{
  "jsonrpc":"2.0","id":3,"method":"tools/call",
  "params":{"name":"gg_search","arguments":{"value":"120","type":"dword","refine":true}}
}'

# 把所有结果改成 99999
curl -s -X POST http://127.0.0.1:8788/mcp -H 'Content-Type: application/json' -d '{
  "jsonrpc":"2.0","id":4,"method":"tools/call",
  "params":{"name":"gg_set_results","arguments":{"all":true,"value":"99999","type":"dword"}}
}'

# 列出全部工具(含参数 schema)
curl -s -X POST http://127.0.0.1:8788/mcp -H 'Content-Type: application/json' -d '{
  "jsonrpc":"2.0","id":5,"method":"tools/list","params":{}
}'

响应结构(tools/call):

{
  "jsonrpc": "2.0",
  "id": 2,
  "result": {
    "content": [{ "type": "text", "text": "{...}" }],
    "structuredContent": {
      "ok": true,
      "data": { "...": "工具返回的数据" },
      "error": null,
      "nextActions": []
    }
  }
}

ok=false 时,error 里包含 code / message / severity / recoverable,App 会用中文提示出来。