
좋아하는 AI 에이전트를 MCP를 통해 Cheat Engine에 직접 연결하세요. 자연어를 사용하여 리버스 엔지니어링, 포인터 스캐닝, 메모리 분석을 자동화하세요.
수십억 달러 규모 AI 데이터센터가 프로그램 메모리를 분석하게 하세요.
모드, 트레이너, 보안 감사, 게임 봇을 만들고, 리버스 엔지니어링을 가속화하거나, 어떤 프로그램과 게임이든 훨씬 짧은 시간에 처리할 수 있습니다.
[!NOTE] 모든 분들의 별에 감사드립니다. 정말 감사합니다! <3
특히 모든 기여자분들께 큰 감사를 드립니다!!
@libangli218, @lauralex, @iamtyroon, @HachiroSan, @Attacktive
수 기가바이트의 메모리를 바라보고 있습니다. 수백만 개의 주소. 수천 개의 함수. 저 하나의 포인터, 저 하나의 구조체를 찾는 데 며칠 또는 몇 주의 수작업이 필요합니다.
그냥 물어볼 수 있다면?
"패킷 복호화 후크를 찾아줘."
"캐릭터 좌표의 OPcode를 찾아줘."
"체력 값의 OPcode를 찾아줘."
"게임 업데이트 후에도 트레이너가 안정적으로 작동하도록 고유한 AOB 패턴을 찾아줘."
이것이 바로 이 도구가 하는 일입니다.
- 16진수 덤프를 클릭하며 시간을 낭비하지 말고, 메모리와 대화를 시작하세요.
| 전 (수동) | 후 (AI 에이전트 + MCP) |
|---|---|
| 1일 차: 패킷 주소 찾기 | 1분: "RX 패킷 복호화 후크 찾기" |
| 2일 차: 해당 주소에 쓰는 추적 | 3분: "업데이트 후에도 유지되는 고유 AOB 시그니처 생성" |
| 3일 차: RX 후크 찾기 | 6분: "이동 OPcode 찾기" |
| 4일 차: 구조체 문서화 | 10분: "16진수를 평문으로 변환하는 Python 인터프리터 생성" |
| 5일 차: 게임 업데이트로 처음부터 다시 시작 | 완료. |
이제 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바이트 읽기"
"진입점 디스어셈블"
| 도구 | 설명 |
|---|---|
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 | 상호 참조 |
| 도구 | 설명 |
|---|---|
set_breakpoint, set_data_breakpoint | 하드웨어 중단점 |
start_dbvm_watch | Ring -1 보이지 않는 추적 |
| 도구 | 설명 |
|---|---|
open_process, get_process_list | 실행 중인 프로세스에 연결 또는 열거 |
create_process | CE 제어 하에 새 프로세스 시작 |
pause_process, unpause_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이 대상 프로세스에 연결될 때까지 정상입니다.