cheatengine 5.8.16 → 5.8.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +32 -32
- package/README_CN.md +33 -33
- package/ce_mcp_bridge.lua +7798 -0
- package/ce_mcp_server.js +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@ MCP bridge enabling AI assistants to directly control Cheat Engine for game hack
|
|
|
7
7
|
## Architecture
|
|
8
8
|
|
|
9
9
|
```
|
|
10
|
-
AI <--MCP/JSON-RPC--> ce_mcp_server.
|
|
10
|
+
AI <--MCP/JSON-RPC--> ce_mcp_server.js <--Named Pipe--> ce_mcp_bridge.lua (CE)
|
|
11
11
|
↑
|
|
12
12
|
Background auto-reconnect
|
|
13
13
|
```
|
|
@@ -16,7 +16,7 @@ AI <--MCP/JSON-RPC--> ce_mcp_server.py <--Named Pipe--> ce_mcp_bridge.lua (CE)
|
|
|
16
16
|
|
|
17
17
|
### Quick Start (NPX) - Recommended
|
|
18
18
|
|
|
19
|
-
1. **
|
|
19
|
+
1. **Prerequisites**: Node.js 14+ (no other dependencies needed)
|
|
20
20
|
|
|
21
21
|
2. **Load in CE** (choose one):
|
|
22
22
|
- **Auto-load**: Copy `ce_mcp_bridge.lua` to CE's `autorun` folder (e.g. `D:\Cheat Engine\autorun\`)
|
|
@@ -45,8 +45,8 @@ If you prefer to run from source:
|
|
|
45
45
|
{
|
|
46
46
|
"mcpServers": {
|
|
47
47
|
"cheat-engine": {
|
|
48
|
-
"command": "
|
|
49
|
-
"args": ["D:/path/to/ce_mcp/ce_mcp_server.
|
|
48
|
+
"command": "node",
|
|
49
|
+
"args": ["D:/path/to/ce_mcp/ce_mcp_server.js"]
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
}
|
|
@@ -384,45 +384,45 @@ Add a new record to Cheat Table.
|
|
|
384
384
|
## Recommended Workflows
|
|
385
385
|
|
|
386
386
|
### Pointer Tracing
|
|
387
|
-
```
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
387
|
+
```json
|
|
388
|
+
// Automatic (preferred)
|
|
389
|
+
{"name": "ce_find_pointer_path", "arguments": {"address": "0x255D5E758", "user_prompted": true}}
|
|
390
|
+
// Returns: base_address, offsets, ce_pointer_notation
|
|
391
|
+
|
|
392
|
+
// Manual (if automatic fails)
|
|
393
|
+
// 1. Find what accesses the address
|
|
394
|
+
{"name": "ce_find_what_accesses", "arguments": {"address": "0x255D5E758", "user_prompted": true}}
|
|
395
|
+
// 2. Get register value from result (e.g., RBX=0x255D5E658)
|
|
396
|
+
// 3. Search for pointer storing that value
|
|
397
|
+
{"name": "ce_value_scan", "arguments": {"value": "0x255D5E658", "type": "qword"}}
|
|
398
|
+
// 4. Repeat until finding game.exe+offset
|
|
399
399
|
```
|
|
400
400
|
|
|
401
401
|
### Function Analysis
|
|
402
|
-
```
|
|
403
|
-
|
|
404
|
-
|
|
402
|
+
```json
|
|
403
|
+
// 1. Find function boundaries
|
|
404
|
+
{"name": "ce_find_function_boundaries", "arguments": {"address": "0x14587EDB0"}}
|
|
405
405
|
|
|
406
|
-
|
|
407
|
-
|
|
406
|
+
// 2. Trace execution
|
|
407
|
+
{"name": "ce_break_and_trace", "arguments": {"address": "0x14587EDB0", "max_steps": 100}}
|
|
408
408
|
|
|
409
|
-
|
|
410
|
-
|
|
409
|
+
// 3. Generate signature for updates
|
|
410
|
+
{"name": "ce_generate_signature", "arguments": {"address": "0x14587EDB0"}}
|
|
411
411
|
```
|
|
412
412
|
|
|
413
413
|
### Reverse Engineering Unknown Code
|
|
414
|
-
```
|
|
415
|
-
|
|
416
|
-
|
|
414
|
+
```json
|
|
415
|
+
// 1. Disassemble
|
|
416
|
+
{"name": "ce_disassemble", "arguments": {"address": "0x14587EDB0", "count": 20}}
|
|
417
417
|
|
|
418
|
-
|
|
419
|
-
|
|
418
|
+
// 2. Symbolic trace to understand logic
|
|
419
|
+
{"name": "ce_symbolic_trace", "arguments": {"address": "0x14587EDB0", "initial_state": {"rcx": "this"}}}
|
|
420
420
|
|
|
421
|
-
|
|
422
|
-
|
|
421
|
+
// 3. Build CFG for complex functions
|
|
422
|
+
{"name": "ce_build_cfg", "arguments": {"address": "0x14587EDB0"}}
|
|
423
423
|
|
|
424
|
-
|
|
425
|
-
|
|
424
|
+
// 4. Detect patterns
|
|
425
|
+
{"name": "ce_detect_patterns", "arguments": {"address": "0x14587EDB0"}}
|
|
426
426
|
```
|
|
427
427
|
|
|
428
428
|
---
|
package/README_CN.md
CHANGED
|
@@ -7,16 +7,16 @@ MCP 桥接器,让 AI 助手直接控制 Cheat Engine 进行游戏修改和逆
|
|
|
7
7
|
## 架构
|
|
8
8
|
|
|
9
9
|
```
|
|
10
|
-
AI <--MCP/JSON-RPC--> ce_mcp_server.
|
|
10
|
+
AI <--MCP/JSON-RPC--> ce_mcp_server.js <--命名管道--> ce_mcp_bridge.lua (CE)
|
|
11
11
|
↑
|
|
12
|
-
|
|
12
|
+
后台自动重连
|
|
13
13
|
```
|
|
14
14
|
|
|
15
15
|
## 安装
|
|
16
16
|
|
|
17
17
|
### 快速开始 (NPX) - 推荐
|
|
18
18
|
|
|
19
|
-
1.
|
|
19
|
+
1. **环境要求**: Node.js 14+ (无需其他依赖)
|
|
20
20
|
|
|
21
21
|
2. **在 CE 中加载** (二选一):
|
|
22
22
|
- **自动加载**: 将 `ce_mcp_bridge.lua` 复制到 CE 的 `autorun` 文件夹 (如 `D:\Cheat Engine\autorun\`)
|
|
@@ -45,8 +45,8 @@ AI <--MCP/JSON-RPC--> ce_mcp_server.py <--命名管道--> ce_mcp_bridge.lua (CE)
|
|
|
45
45
|
{
|
|
46
46
|
"mcpServers": {
|
|
47
47
|
"cheat-engine": {
|
|
48
|
-
"command": "
|
|
49
|
-
"args": ["D:/path/to/ce_mcp/ce_mcp_server.
|
|
48
|
+
"command": "node",
|
|
49
|
+
"args": ["D:/path/to/ce_mcp/ce_mcp_server.js"]
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
}
|
|
@@ -384,45 +384,45 @@ Hook 函数以拦截调用并捕获参数。
|
|
|
384
384
|
## 推荐工作流
|
|
385
385
|
|
|
386
386
|
### 指针追踪
|
|
387
|
-
```
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
387
|
+
```json
|
|
388
|
+
// 自动 (首选)
|
|
389
|
+
{"name": "ce_find_pointer_path", "arguments": {"address": "0x255D5E758", "user_prompted": true}}
|
|
390
|
+
// 返回: base_address, offsets, ce_pointer_notation
|
|
391
|
+
|
|
392
|
+
// 手动 (自动失败时)
|
|
393
|
+
// 1. 查找访问该地址的代码
|
|
394
|
+
{"name": "ce_find_what_accesses", "arguments": {"address": "0x255D5E758", "user_prompted": true}}
|
|
395
|
+
// 2. 从结果获取寄存器值 (如 RBX=0x255D5E658)
|
|
396
|
+
// 3. 搜索存储该值的指针
|
|
397
|
+
{"name": "ce_value_scan", "arguments": {"value": "0x255D5E658", "type": "qword"}}
|
|
398
|
+
// 4. 重复直到找到 game.exe+offset
|
|
399
399
|
```
|
|
400
400
|
|
|
401
401
|
### 函数分析
|
|
402
|
-
```
|
|
403
|
-
|
|
404
|
-
|
|
402
|
+
```json
|
|
403
|
+
// 1. 查找函数边界
|
|
404
|
+
{"name": "ce_find_function_boundaries", "arguments": {"address": "0x14587EDB0"}}
|
|
405
405
|
|
|
406
|
-
|
|
407
|
-
|
|
406
|
+
// 2. 跟踪执行
|
|
407
|
+
{"name": "ce_break_and_trace", "arguments": {"address": "0x14587EDB0", "max_steps": 100}}
|
|
408
408
|
|
|
409
|
-
|
|
410
|
-
|
|
409
|
+
// 3. 生成特征码用于更新
|
|
410
|
+
{"name": "ce_generate_signature", "arguments": {"address": "0x14587EDB0"}}
|
|
411
411
|
```
|
|
412
412
|
|
|
413
413
|
### 逆向未知代码
|
|
414
|
-
```
|
|
415
|
-
|
|
416
|
-
|
|
414
|
+
```json
|
|
415
|
+
// 1. 反汇编
|
|
416
|
+
{"name": "ce_disassemble", "arguments": {"address": "0x14587EDB0", "count": 20}}
|
|
417
417
|
|
|
418
|
-
|
|
419
|
-
|
|
418
|
+
// 2. 符号跟踪理解逻辑
|
|
419
|
+
{"name": "ce_symbolic_trace", "arguments": {"address": "0x14587EDB0", "initial_state": {"rcx": "this"}}}
|
|
420
420
|
|
|
421
|
-
|
|
422
|
-
|
|
421
|
+
// 3. 为复杂函数构建 CFG
|
|
422
|
+
{"name": "ce_build_cfg", "arguments": {"address": "0x14587EDB0"}}
|
|
423
423
|
|
|
424
|
-
|
|
425
|
-
|
|
424
|
+
// 4. 检测模式
|
|
425
|
+
{"name": "ce_detect_patterns", "arguments": {"address": "0x14587EDB0"}}
|
|
426
426
|
```
|
|
427
427
|
|
|
428
428
|
---
|