
Cursor, Copilot 및 Claude AI를 MCP를 통해 Cheat Engine에 직접 연결하십시오. 자연어를 사용하여 리버스 엔지니어링, 포인터 스캐닝 및 메모리 분석을 자동화합니다.
수십억 달러 규모 AI 데이터센터가 프로그램 메모리를 분석하게 하세요.
모드, 트레이너, 보안 감사, 게임 봇을 만들고, 리버스 엔지니어링을 가속화하거나, 어떤 프로그램과 게임이든 훨씬 짧은 시간에 처리할 수 있습니다.
[!NOTE] 모든 분들의 별에 감사드립니다. 정말 감사합니다! <3
특히 모든 기여자분들께 큰 감사를 드립니다!!
@libangli218, @lauralex, @iamtyroon, @HachiroSan, @Attacktive
수 기가바이트의 메모리를 바라보고 있습니다. 수백만 개의 주소. 수천 개의 함수. 저 하나의 포인터, 저 하나의 구조체를 찾는 데 며칠 또는 몇 주의 수작업이 필요합니다.
그냥 물어볼 수 있다면?
"패킷 복호화 후크를 찾아줘."
"캐릭터 좌표의 OPcode를 찾아줘."
"체력 값의 OPcode를 찾아줘."
"게임 업데이트 후에도 트레이너가 안정적으로 작동하도록 고유한 AOB 패턴을 찾아줘."
이것이 바로 이 도구가 하는 일입니다.
- 16진수 덤프를 클릭하며 시간을 낭비하지 말고, 메모리와 대화를 시작하세요.
| 전 (수동) | 후 (AI 에이전트 + MCP) |
|---|---|
| 1일 차: 패킷 주소 찾기 | 1분: "RX 패킷 복호화 후크 찾기" |
이제 AI가 다음을 수행할 수 있습니다:
[[base+0x10]+0x20]+0x8 → 밀리초 단위 해결flowchart TD
AI[AI Agent: Claude/Cursor/Copilot]
AI -->|MCP Protocol - JSON-RPC over stdio| MCP
MCP[mcp_cheatengine.py - Python MCP Server]
MCP <-->|Named Pipe - Async| PIPE
PIPE["\\.\\pipe\\CE_MCP_Bridge_v99"]
PIPE <--> CE
subgraph CE[Cheat Engine - DBVM Mode]
subgraph LUA[ce_mcp_bridge.lua]
WORKER[Worker Thread - Blocking I/O]
MAIN[Main Thread - GUI + CE API]
WORKER <-->|Sync| MAIN
end
end
MAIN -->|Memory Access| TARGET[Target .exe]pip install -r MCP_Server/requirements.txt
또는 수동으로:
pip install mcp pywin32
[!NOTE] 네이티브 파이프 모드는 Windows 전용입니다. Named Pipes(
pywin32)를 사용하기 때문입니다. MCP 서버가 Cheat Engine이 실행 중인 Windows 환경 외부에서 실행되어 Named Pipe를 직접 열 수 없는 경우 TCP 릴레이 전송 방식을 사용하세요.
File -> Execute Script -> MCP_Server/ce_mcp_bridge.lua 열기 -> Execute.File -> Execute Script 메뉴가 없으면 Table -> Show Cheat Table Lua Script를 사용하고, 아래 dofile(...) 줄을 붙여넣어 실행하세요:dofile([[C:\path\to\cheatengine-mcp-bridge\MCP_Server\ce_mcp_bridge.lua]])
다음 메시지를 확인하세요: [MCP v12.0.0] MCP Server Listening on: CE_MCP_Bridge_v99
MCP 설정 (예: mcp_config.json)에 다음을 추가하세요:
{
"servers": {
"cheatengine": {
"command": "python",
"args": ["C:/path/to/MCP_Server/mcp_cheatengine.py"]
}
}
}
IDE를 다시 시작하여 MCP 서버 설정을 로드하세요.
Codex의 경우, ~/.codex/config.toml에 TOML 서버 블록을 추가하세요:
[mcp_servers.cheatengine]
command = "python"
args = ['C:\path\to\cheatengine-mcp-bridge\MCP_Server\mcp_cheatengine.py']
Windows 경로는 작은따옴표를 사용하여 TOML이 백슬래시를 리터럴로 처리하도록 하세요.
TCP 릴레이를 사용하면 mcp_cheatengine.py가 Windows Named Pipe를 직접 열지 않고 TCP 소켓을 통해 Cheat Engine과 통신할 수 있습니다. Cheat Engine과 Lua 브리지는 여전히 Windows에서 실행되고, MCP 서버는 릴레이에 접근 가능한 어디서든(다른 Windows 프로세스, VM, 컨테이너, Linux 호스트, 원격 시스템) 실행될 수 있습니다. WSL에서도 Lua 브리지를 변경하지 않고 사용할 수 있습니다.
MCP_Server/ce_mcp_bridge.lua를 로드하세요.python C:\path\to\cheatengine-mcp-bridge\MCP_Server\ce_tcp_relay.py --host 127.0.0.1 --port 9876
pywin32 없이 MCP 종속성을 설치한 후 TCP 전송으로 MCP 서버를 실행/구성하세요:python3 -m pip install -r MCP_Server/requirements-tcp.txt
CE_MCP_TRANSPORT=tcp \
CE_MCP_HOST=127.0.0.1 \
CE_MCP_PORT=9876 \
python3 /path/to/cheatengine-mcp-bridge/MCP_Server/mcp_cheatengine.py
환경 변수를 지원하는 MCP 클라이언트 설정의 경우:
{
"servers": {
"cheatengine": {
"command": "python3",
"args": ["/path/to/cheatengine-mcp-bridge/MCP_Server/mcp_cheatengine.py"],
"env": {
"CE_MCP_TRANSPORT": "tcp",
"CE_MCP_HOST": "127.0.0.1",
"CE_MCP_PORT": "9876"
}
}
}
}
릴레이의 --host와 MCP 서버의 CE_MCP_HOST를 네트워크 설정에 맞는 주소로 설정하세요. 릴레이는 신뢰할 수 있는 인터페이스에만 바인딩하세요. 접근 가능한 사람은 누구나 Cheat Engine 브리지를 제어할 수 있습니다.
ping 도구를 사용하여 연결을 확인하세요:
{"success": true, "version": "12.0.0", "message": "CE MCP Bridge Active"}
"어떤 프로세스가 연결되어 있나요?"
"베이스 주소에서 16바이트 읽기"
"진입점 디스어셈블"
| 도구 | 설명 |
|---|---|
| 도구 | 설명 |
|---|---|
set_breakpoint, set_data_breakpoint | 하드웨어 중단점 |
start_dbvm_watch | Ring -1 보이지 않는 추적 |
| 도구 | 설명 |
|---|---|
open_process, get_process_list | 실행 중인 프로세스에 연결 또는 열거 |
create_process | CE 제어 하에 새 프로세스 시작 |
pause_process, |
| 도구 | 설명 |
|---|---|
allocate_memory, free_memory | 대상에서 메모리 예약 및 해제 |
set_memory_protection, full_access | 페이지 보호 플래그 조정 |
| 도구 | 설명 |
|---|---|
inject_dll | 대상 프로세스에 DLL 로드 |
execute_code, execute_method | 셸코드 또는 CE Lua 메서드를 원격으로 실행 |
| 도구 | 설명 |
|---|---|
register_symbol, get_symbol_info | 명명된 심볼 생성 및 쿼리 |
enable_windows_symbols | PDB 심볼 해석 활성화 |
| 도구 | 설명 |
|---|---|
assemble_instruction | 단일 x86/x64 명령어를 바이트로 어셈블 |
compile_c_code | C 소스를 인젝션된 셸코드로 컴파일 |
generate_api_hook_script | CE 자동 어셈블러 API 후크 템플릿 생성 |
| 도구 | 설명 |
|---|---|
find_window | 제목 또는 클래스로 창 찾기 |
send_window_message | 대상 창에 WM_* 메시지 전송 |
| 도구 | 설명 |
|---|---|
get_pixel | 화면 좌표의 픽셀 샘플링 |
is_key_pressed, do_key_press | 키보드 입력 쿼리 및 시뮬레이션 |
| 도구 | 설명 |
|---|---|
load_table, save_table | .CT 치트 테이블 파일 로드/저장 |
get_address_list | 활성 치트 테이블의 항목 열거 |
| 도구 | 설명 |
|---|---|
dbk_get_cr3 | 대상 프로세스의 CR3 레지스터 읽기 |
read_process_memory_cr3 | CR3 우회를 통한 물리 메모리 읽기 |
그 외 더 많은 도구는 AI_Context/MCP_Bridge_Command_Reference.md에서 확인하세요.
[!CAUTION] 다음을 반드시 비활성화하세요: Cheat Engine → Settings → Extra → "Query memory region routines"
활성화 시: 보호된 페이지를 스캔할 때 DBVM/안티치트와 충돌하여
CLOCK_WATCHDOG_TIMEOUTBSOD 발생.
전체 스크립트를 치트 테이블 스크립트에 붙여넣지 말고 dofile(...)을 사용하여 디스크에서 브리지를 로드하세요. 브리지는 의도적으로 명령 핸들러를 전역 함수로 선언합니다. 이렇게 하면 전체 브리지가 한 번에 컴파일될 때 Cheat Engine의 Lua 청크 제한(로컬 변수 200개)을 피할 수 있습니다.
다음 순서로 확인하세요:
MCP Server Listening on: CE_MCP_Bridge_v99 메시지가 표시되는지 확인.mcp_cheatengine.py 경로가 실제로 존재하는지 확인.pip install -r MCP_Server/requirements.txt로 mcp와 pywin32가 모두 설치되었는지 확인.ping 도구를 실행하세요. 성공적인 연결은 success: true와 브리지 버전을 반환합니다. process_id: 0은 Cheat Engine이 대상 프로세스에 연결될 때까지 정상입니다.값 찾기:
사용자: "골드 15000 스캔" → AI가 47개 결과 발견
사용자: "골드가 15100으로 변경됨" → AI가 3개 주소로 필터링
사용자: "첫 번째 주소에 쓰는 것은?" → AI가 하드웨어 BP 설정
사용자: "해당 함수 디스어셈블" → 전체 AddGold 로직 공개
구조체 이해하기:
사용자: "[[game.exe+0x1234]+0x10]에는 무엇이 있나요?"
AI: "RTTI: CPlayerInventory"
AI: "0x00=vtable, 0x08=itemCount(int), 0x10=itemArray(ptr)..."
CLAUDE.md # Claude Code 에이전트 가이드 (이 저장소)
README.md # 사용자 문서
MCP_Server/
├── mcp_cheatengine.py # Python MCP 서버 (FastMCP)
├── ce_mcp_bridge.lua # Cheat Engine Lua 브리지
└── test_mcp.py # 테스트 스위트
AI_Context/
├── BATCH_WORKER_BRIEFING.md # 병렬 워커 작업 사양 (v12 개편)
├── MCP_Bridge_Command_Reference.md # MCP 명령 참조
├── CE_LUA_Documentation.md # 전체 CheatEngine 7.6 공식 문서
└── AI_Guide_MCP_Server_Implementation.md # AI 에이전트를 위한 전체 기술 문서
테스트 실행:
python MCP_Server/test_mcp.py
예상 출력:
✅ Memory Reading: 6/6 tests passed
✅ Process Info: 4/4 tests passed
✅ Code Analysis: 8/8 tests passed
✅ Breakpoints: 4/4 tests passed
✅ DBVM Functions: 3/3 tests passed
✅ Utility Commands: 11/11 tests passed
⏭️ Skipped: 1 test (generate_signature)
────────────────────────────────────
Total: 36/37 PASSED (100% success)
더 이상 전문가가 될 필요가 없습니다. 올바른 질문만 하면 됩니다.
⚠️ 교육적 고지
이 코드는 교육 및 연구 목적으로만 제공됩니다. Model Context Protocol (MCP)과 LLM 기반 디버깅의 기능을 보여주기 위해 만들어졌습니다. 악의적인 해킹, 멀티플레이어 게임에서의 부정 행위, 서비스 약관 위반 등에 이 도구를 사용하는 것을 용납하지 않습니다. 이는 소프트웨어 엔지니어링 자동화의 데모입니다.
| 2일 차: 해당 주소에 쓰는 추적 | 3분: "업데이트 후에도 유지되는 고유 AOB 시그니처 생성" |
| 3일 차: RX 후크 찾기 | 6분: "이동 OPcode 찾기" |
| 4일 차: 구조체 문서화 | 10분: "16진수를 평문으로 변환하는 Python 인터프리터 생성" |
| 5일 차: 게임 업데이트로 처음부터 다시 시작 | 완료. |
read_memory, read_integer, read_string |
| 모든 데이터 유형 읽기 |
read_pointer_chain | [[base+0x10]+0x20] 경로 추적 |
scan_all, aob_scan | 값 및 바이트 패턴 찾기 |
| 도구 | 설명 |
|---|
disassemble, analyze_function | 코드 분석 |
dissect_structure | 필드 및 유형 자동 감지 |
get_rtti_classname | C++ 객체 유형 식별 |
find_references, find_call_references | 상호 참조 |
unpause_process| 대상 실행 일시 중지/재개 |
| 변수 | 기본값 | 용도 |
|---|
CE_MCP_TIMEOUT | 30 | 각 MCP 도구 호출에 대한 시간 제한(초). |
CE_MCP_ALLOW_SHELL | 설정 안 됨 | 1로 설정 시 run_command / shell_execute 도구 활성화. 임의 코드 실행 위험 — 기본적으로 설정하지 않은 상태로 두세요. |