吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 14151|回复: 134
上一主题 下一主题
收起左侧

[Other] Cheat Engine MCP AI 辅助逆向工程桥接工具

    [复制链接]
跳转到指定楼层
楼主
wjx8885577 发表于 2026-1-3 09:42 回帖奖励
本帖最后由 wjx8885577 于 2026-4-23 09:47 编辑

Cheat Engine MCP - AI 辅助逆向工程

MCP 桥接器,让 AI 助手直接控制 Cheat Engine 进行游戏修改和逆向工程。

架构

AI <--MCP/JSON-RPC--> ce_mcp_server.js <--命名管道--> ce_mcp_bridge.lua (CE)
                           ↑
                  后台自动重连


安装

快速开始 (NPX) - 推荐

  1. 前提条件: Node.js 14+ (无需其他依赖项)

  2. 在 CE 中加载 (二选一):

    • 自动加载: 将 ce_mcp_bridge.lua 复制到 CE 的 autorun 文件夹 (如 D:\Cheat Engine\autorun\)
    • 手动加载: 按 Ctrl+Alt+L,执行:
      dofile([[D:\path\to\ce_mcp_bridge.lua]])
  3. 配置 MCP :

    {
     "mcpServers": {
       "cheat-engine": {
         "command": "npx",
         "args": ["-y", "cheatengine@latest"]
       }
     }
    }

手动安装 (本地运行)

如果你希望从源码运行:

{
  "mcpServers": {
    "cheat-engine": {
      "command": "node",
      "args": ["D:/path/to/ce_mcp/ce_mcp_server.js"]
    }
  }
}

连接特性

  • 自动重连: CE 重启后 MCP Server 自动重连
  • 后台重试: 连接尝试在后台进行,使用指数退避
  • 失败诊断: ce_ping 在连接失败时返回详细诊断信息
  • 线程安全: 所有管道操作都有锁保护

安全特性

认证令牌

可选的管道通信认证层。启用后,所有请求必须包含有效令牌。

设置:

  1. 在两端设置相同的环境变量:

    # Windows CMD
    set CE_MCP_AUTH_TOKEN=your_secret_token_here
    
    # PowerShell
    $env:CE_MCP_AUTH_TOKEN = "your_secret_token_here"
  2. 启动 CE 并加载桥接脚本

  3. 启动 MCP 服务器

令牌不匹配时,请求将被拒绝并返回 "Authentication failed" 错误。

自定义管道名称

为防止检测,可自定义管道名称:

set CE_MCP_PIPE_NAME=my_custom_pipe_name

Hook 名称验证

Hook 名称现在会验证以防止 AA 脚本注入:

  • 必须以字母或下划线开头
  • 只能包含字母数字和下划线
  • 模式: ^[a-zA-Z_][a-zA-Z0-9_]*$

无效名称如 "my hook""hook;inject" 将被拒绝。


工具参考

系统与连接

ce_ping

测试与 CE 桥接的连接。连接失败时返回诊断信息和故障排除建议。

ce_get_process_info

获取已附加进程信息并刷新符号处理器。同时清除地址缓存。

ce_attach_process(target) ⭐ 新增

通过 PID 或名称附加到进程。附加后清除缓存和扫描会话。

参数:

  • target (string, 必需): 进程 ID (数字) 或进程名称 (如 "game.exe")
ce_auto_assemble(script, target_self?) ⭐ 新增

执行 Auto Assembler 脚本。支持启用/禁用脚本、代码注入等。

参数:

  • script (string, 必需): Auto Assembler 脚本内容
  • target_self (boolean, 可选): 目标为 CE 进程本身 (默认: false)
ce_execute_lua(code)

在 CE 中执行任意 Lua 代码。

参数:

  • code (string, 必需): 要执行的 Lua 代码

内存读写

ce_read_memory(address, type, size?)

读取单个内存值。

参数:

  • address (string, 必需): 地址表达式 (如 "game.exe+0x1234", "0x140001000")
  • type (string, 必需): byte, word, dword, qword, float, double, string, bytes
  • size (integer, 可选): string/bytes 类型的大小 (默认: 100)
ce_read_memory_batch(requests)

一次调用读取多个地址。始终优先使用此方法而非多次调用 ce_read_memory。

参数:

  • requests (array, 必需): {address, type, id?, size?} 数组
ce_write_memory(address, type, value)

向内存写入值。

参数:

  • address (string, 必需): 地址表达式
  • type (string, 必需): 值类型
  • value (string, 必需): 要写入的值

扫描与搜索

ce_aob_scan(aob_string, module?, protection?, start?, stop?, max_results?)

扫描内存中的字节数组模式。支持 ?? 通配符。

参数:

  • aob_string (string, 必需): 模式如 "48 89 5C 24 ?? 48 83 EC 20"
  • module (string, 可选): 限制扫描到模块 (如 "game.exe")
  • protection (string, 可选): 内存保护标志 (默认: "-C+X")
  • start (string, 可选): 起始地址(未指定 module 时使用)
  • stop (string, 可选): 结束地址(未指定 module 时使用)
  • max_results (integer, 可选): 最大结果数 (默认: 100)
ce_value_scan(value, type, module?, protection?)

扫描特定值。用于指针追踪。根据类型自动对齐扫描以优化性能。一次性扫描 - 迭代扫描请使用扫描会话。

参数:

  • value (string, 必需): 要搜索的值 (如 "0x255D5E758""12345")
  • type (string, 必需): byte, word, dword, qword, float, double, string
  • module (string, 可选): 限制到模块
  • protection (string, 可选): 默认 "+W-C" 用于可写内存

扫描会话 ⭐ 新增

实现 CE 核心的 "首次扫描 → 再次扫描" 工作流,带会话管理。会话在 5 分钟不活动后自动过期。

ce_scan_new(value, type, module?, protection?)

开始新的扫描会话。根据类型自动对齐扫描以优化性能(dword/float 用 4 字节对齐,qword/double 用 8 字节对齐)。

ce_scan_next(session_id, value, scan_type?, value2?)

继续扫描(过滤)现有会话。

scan_type 选项:

  • exact - 精确值匹配
  • increased / decreased - 值增加/减少
  • changed / unchanged - 值改变/未改变
  • bigger_than / smaller_than - 大于/小于
  • between - 在 value 和 value2 之间
ce_scan_results(session_id, start_index?, limit?)

获取扫描会话的分页结果。

ce_scan_close(session_id)

关闭扫描会话并释放资源。

ce_scan_list

列出所有活动的扫描会话。

ce_enum_modules

列出所有已加载的模块 (DLL)。


符号与地址

ce_get_address(expression)

将地址表达式解析为数字地址。

参数:

  • expression (string, 必需): 如 "game.exe+0x1234", "[[game.exe+100]+20]+8"
ce_get_symbol(address, include_module?)

从地址获取符号名称,包含 RTTI 类信息。

ce_resolve_pointer(base, offsets, read_value?, value_type?)

解析多级指针链,支持 CE 表示法。

参数:

  • base (string, 必需): 基地址或符号 (如 "game.exe+1234")
  • offsets (array, 必需): 偏移数组,如 [0x100, 0x20, 0x8]
  • read_value (boolean, 可选): 读取最终地址的值 (默认: false)
  • value_type (string, 可选): 值类型 (默认: "dword")

返回: 包含 ceNotation (CE 兼容指针表示法),可直接用于 CE 地址列表。

ce_auto_guess(address)

猜测地址处的值类型。


反汇编与代码分析

ce_disassemble(address, count?, direction?)

反汇编指令。

参数:

  • address (string, 必需): 起始地址
  • count (integer, 可选): 指令数量 (默认: 10)
  • direction (string, 可选): "forward""backward" (默认: forward)
ce_get_instruction_info(address)

获取单条指令的详细信息。

ce_analyze_code(address, count?)

代码块的静态分析 (调用、跳转、引用)。


调试与断点

ce_set_breakpoint(address, type?, size?)

设置硬件断点。

参数:

  • address (string, 必需): 地址表达式
  • type (string, 可选): "execute", "write", "access" (默认: execute)
  • size (integer, 可选): write/access 断点的大小 (默认: 1)
ce_break_and_get_regs(address, timeout?, include_xmm?, stack_depth?)

设置断点并在触发时捕获寄存器。同时返回调用栈。

ce_break_and_trace(address, max_steps?, timeout?, stop_on_ret?, trace_into_call?, end_address?, initial_regs?)

多步执行跟踪。 最强大的调试工具 - 逐步跟踪代码执行,捕获每条指令的完整寄存器状态。

参数:

  • address (string, 必需): 起始地址 (断点位置)
  • max_steps (integer, 可选): 最大跟踪指令数 (默认: 100)
  • timeout (integer, 可选): 超时毫秒数 (默认: 10000)
  • stop_on_ret (boolean, 可选): 遇到 ret 时停止 (默认: true)
  • trace_into_call (boolean, 可选): 步入调用 vs 步过 (默认: false)
  • end_address (string, 可选): 到达此地址时停止
  • initial_regs (object, 可选): 首次命中时设置寄存器值

停止原因: "ret", "end_address", "max_steps", "timeout"

ce_cleanup

移除所有断点和跟踪。游戏卡住时使用。


分析工具

ce_find_what_accesses(address, size?, duration_ms?, max_records?)

查找访问此地址的代码 (类似 CE 的 F5 功能)。监控读写。

ce_find_what_writes(address, size?, duration_ms?, max_records?)

查找写入此地址的代码 (类似 CE 的 F6 功能)。仅监控写入。

ce_find_pointer_path(address, max_depth?, strategy?)

自动指针链追踪。 为动态地址找到静态基地址。

参数:

  • address (string, 必需): 要追踪的动态地址
  • max_depth (integer, 可选): 最大指针深度 1-10 (默认: 7)
  • strategy (string, 可选): "hybrid", "f5", "value_scan" (默认: hybrid)
ce_find_references(address, limit?)

查找引用特定地址的所有代码位置。

ce_find_call_references(address, module?, limit?)

查找目标为特定函数的所有 CALL 指令。

ce_find_function_boundaries(address, max_search?)

通过分析序言/尾声模式检测函数起止。

ce_generate_signature(address)

为地址生成唯一的 AOB 特征码。用于游戏更新。


高级分析

ce_build_cfg(address, max_blocks?, max_instructions?, detect_loops?)

为函数构建控制流图。

ce_detect_patterns(address, max_instructions?, patterns?)

检测常见代码模式: switch 表、虚函数调用、字符串引用、加密常量。

ce_compare_functions(address1, address2, max_instructions?)

比较两个函数的相似度。

ce_trace_dataflow(address, register, direction?, max_instructions?)

在函数内追踪寄存器的数据流。

ce_program_slice(address, criterion, direction?, max_instructions?)

计算程序切片 - 查找影响或受变量影响的所有指令。


代码模拟

ce_symbolic_trace(address, count?, initial_state?, stop_on_call?, stop_on_ret?)

轻量级符号执行。解释指令语义而不实际执行。

参数:

  • address (string, 必需): 起始地址
  • count (integer, 可选): 要跟踪的指令数 (默认: 30)
  • initial_state (object, 可选): 初始寄存器符号,如 {"rcx": "this_ptr", "rdx": "arg1"}
ce_call_function(address, args?, return_type?, timeout?)

在目标进程中调用函数。警告: 执行真实代码!


函数 Hook

ce_hook_function(address, name, capture_args?, calling_convention?)

Hook 函数以拦截调用并捕获参数。

参数:

  • address (string, 必需): 函数地址
  • name (string, 必需): Hook 标识符
  • capture_args (integer, 可选): 要捕获的参数数量 0-4 (默认: 4)
  • calling_convention (string, 可选): "auto", "fastcall", "stdcall", "cdecl"
ce_get_hook_log(name, limit?, clear?)

获取捕获的函数调用参数。

ce_unhook_function(name)

移除函数 Hook。

ce_list_hooks

列出所有活动的 Hook。


作弊表

ce_get_address_list(include_script?)

获取作弊表中的所有记录。

ce_add_address_record(description, address, value_type?, script?)

向作弊表添加新记录。


推荐工作流

指针追踪

// 自动 (首选)
{"name": "ce_find_pointer_path", "arguments": {"address": "0x255D5E758", "user_prompted": true}}
// 返回: base_address, offsets, ce_pointer_notation

// 手动 (自动失败时)
// 1. 查找访问该地址的代码
{"name": "ce_find_what_accesses", "arguments": {"address": "0x255D5E758", "user_prompted": true}}
// 2. 从结果获取寄存器值 (如 RBX=0x255D5E658)
// 3. 搜索存储该值的指针
{"name": "ce_value_scan", "arguments": {"value": "0x255D5E658", "type": "qword"}}
// 4. 重复直到找到 game.exe+offset

函数分析

// 1. 查找函数边界
{"name": "ce_find_function_boundaries", "arguments": {"address": "0x14587EDB0"}}

// 2. 跟踪执行
{"name": "ce_break_and_trace", "arguments": {"address": "0x14587EDB0", "max_steps": 100}}

// 3. 生成特征码用于更新
{"name": "ce_generate_signature", "arguments": {"address": "0x14587EDB0"}}

逆向未知代码

// 1. 反汇编
{"name": "ce_disassemble", "arguments": {"address": "0x14587EDB0", "count": 20}}

// 2. 符号跟踪理解逻辑
{"name": "ce_symbolic_trace", "arguments": {"address": "0x14587EDB0", "initial_state": {"rcx": "this"}}}

// 3. 为复杂函数构建 CFG
{"name": "ce_build_cfg", "arguments": {"address": "0x14587EDB0"}}

// 4. 检测模式
{"name": "ce_detect_patterns", "arguments": {"address": "0x14587EDB0"}}

故障排除

问题 解决方案
连接失败 使用 ce_ping - 它会返回诊断信息和具体建议
CE 重启 MCP Server 自动重连,只需在 CE 中重新加载 Lua 脚本
管道错误 在 CE 中运行 CE_MCP.stop() 然后 CE_MCP.start()
权限拒绝 以管理员身份运行 CE
游戏卡住 使用 ce_cleanup() 移除所有断点
断点未触发 确保代码路径在游戏中被执行

状态检查

CE_MCP.stats()  -- 在 CE 中检查桥接状态
reloadMcpBridge()  -- 代码更改后重新加载桥接

--------------------------------------------------------------------------------

# 常见问题

Q:需要学习 Lua 吗?
A:不需要,通过 AI 自然语言即可操作。

Q:支持哪些 AI 模型?
A:支持所有支持 MCP 协议的 AI(如 Claude)。

Q:能自动化游戏修改吗?
A:本工具为逆向分析工具,用于学习和研究。

Q:会封号吗?
A:本工具仅用于离线分析,不涉及联网操作。

--------------------------------------------------------------------------------

# 总结

CE MCP 通过 57 个精心设计的工具,将 Cheat Engine 的强大功能通过 MCP 协议暴露给 AI,
实现了自然语言驱动的逆向工程体验。

无论是初学者学习逆向,还是老手提高效率,都能从中受益。

&#127881; 享受 AI 辅助逆向后,你会发现逆向从未如此简单!

--------------------------------------------------------------------------------


ce_mcp.7z (92.83 KB, 下载次数: 2046)

免费评分

参与人数 57吾爱币 +57 热心值 +50 收起 理由
Dorothy1 + 1 + 1 我很赞同!
ForestYoungsen + 1 + 1 谢谢@Thanks!
linuxdo + 1 + 1 谢谢@Thanks!
WangX01 + 1 + 1 谢谢@Thanks!
lolihei + 1 + 1 谢谢@Thanks!
cookeys + 1 鼓励转贴优秀软件安全工具和文档!
Holems + 1 + 1 谢谢@Thanks!
江威阿丶 + 1 + 1 我很赞同!66666,有说法
ByLQX + 1 + 1 谢谢@Thanks!
无白月 + 1 + 1 用心讨论,共获提升!
2595453382 + 1 热心回复!
zhyi31 + 1 我很赞同!
我是来骂人的 + 1 + 1 我很赞同!
bluexi + 1 + 1 谢谢@Thanks!
以爱之名 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
trains + 1 + 1 我很赞同!
lspghs9.10plus + 1 + 1 我很赞同!
suanle + 1 + 1 谢谢@Thanks!
antclt + 1 + 1 谢谢@Thanks!
wxn2023 + 1 + 1 谢谢@Thanks!
wzx1196 + 1 大佬,能不能回复我下,有尝协助~
beatone + 1 + 1 热心回复!
hagkings + 1 用心讨论,共获提升!
puyuntao + 1 + 1 谢谢@Thanks!
Edith123 + 1 + 1 用心讨论,共获提升!
Jetick + 1 + 1 我很赞同!
Rax + 2 + 1 谢谢@Thanks!
EXECUTE00 + 1 + 1 谢谢@Thanks!
R8848 + 1 我很赞同!
onlylovewww + 1 + 1 谢谢@Thanks!
秋风之兮 + 1 + 1 谢谢@Thanks!
Nopp + 1 + 1 用心讨论,共获提升!
wodekk + 1 + 1 鼓励转贴优秀软件安全工具和文档!
cqrg + 1 用心讨论,共获提升!
hehehero + 2 + 1 trae 中能用吗,搞个教程吧
DRZH + 1 + 1 谢谢@Thanks!
mracry + 1 + 1 wtf?ce这mcp都有了吗,哈哈。
Jituto + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
安道尔的鱼 + 1 + 1 我很赞同!
她眉眼如画 + 1 + 1 谢谢@Thanks!
lizhuowu + 1 + 1 我很赞同!
freesoft + 1 + 1 谢谢@Thanks!
世忘nb + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
gzsklsskszngc + 3 + 1 我很赞同!
Natu + 1 + 1 谢谢@Thanks!
Crb + 1 28+19300 = MapleStory 怪物数量 哈哈
ytw6176 + 1 + 1 谢谢@Thanks!
twog + 1 + 1 太棒了
huliuwa + 1 + 1 我很赞同!
omar111 + 1 + 1 用心讨论,共获提升!
IcePlume + 1 + 1 我很赞同!
局外人K + 1 我很赞同!
jy3318007 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
linkstart413 + 1 + 1 好厉害,赞
Some + 1 + 1 用心讨论,共获提升!
yzswk + 1 谢谢@Thanks!
snowfox + 1 谢谢@Thanks!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
isure211314 发表于 2026-1-4 18:16
跟不知道怎么用的说一下我试出来的办法。
准备工作:
1.首先要有个AI模型,用来作为输入工具命令CE工作。(我用的cherry studio架模型花自己买的tokens。)
2.py文件地址需要作为mcp_config.json里args的地址,再把json的文本内容复制到AI模型的MCP服务器里,启用。(格式报错问问豆包就行。)
开始:
1.用终端管理员安装pywin32,再用它命令直接调用python运行py,这是第一步,不要乱顺序(不会的问豆包,requirements里的也可以装上,反正几行pip命令)
2.lua文件放到autorun里面,管理员启动CE,绑定要找的游戏句柄,dofile+文件地址,执行一下。(不报错没反应一般就是连上了。不能创建管道就是看没反应后点太多次了,关掉CE重启)
3.AI模型里聊天栏勾选MCP服务器,跟他说调用CE帮你干嘛干嘛(我会让它发测试信息,lua脚本会弹日志或窗口显示信息就是连接上了。)
用后感:
能找基地址,跳一堆代码,最后拿指针偏移一试,找的不对,AI幻觉很严重。
有高手也可以说一下我哪里不对,毕竟我是硬着头皮试出来的办法,看了4页帖子也没人说清楚怎么装。
推荐
shuoyushanhai 发表于 2026-3-5 21:42
简单教程:
1.把ce_mcp_bridge.lua放入到CE文件夹内的autorun
2.用vscode打开ce_mcp_server.js,用cline等工具连接ai后让它解析右侧js,在对文件完成解析之后让他启动CEMCP连接即可
3.随便找个游戏开始让它帮忙寻找数值

推荐
baizhidou 发表于 2026-1-4 11:00
哇,我以为gemini就够牛的了   还有更牛的   学习
推荐
ly19991126 发表于 2026-1-3 23:49
支持一下楼主
推荐
shhgzxm 发表于 2026-1-3 11:32
AI能做很多事情的。
3#
wsdhgd 发表于 2026-1-3 10:12
厉害厉害
4#
yzswk 发表于 2026-1-3 10:43
好东西,学习了
5#
xiaoyao0418 发表于 2026-1-3 10:47
用AI来辅助逆向分析确实是现在的趋势啊,很不错
6#
kangroo99 发表于 2026-1-3 10:48
嗯,以后就AI写代码,查代码了
7#
镜花水月-陌上桑 发表于 2026-1-3 11:03
牛逼呀呀
8#
A00 发表于 2026-1-3 11:45
以后就AI写代码,查代码了
9#
liu1242 发表于 2026-1-3 11:57
非常牛逼,感谢大佬
10#
jy3318007 发表于 2026-1-3 13:11
非常有前途的项目,如果有安装视频教程就好了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-9-11 23:45

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表