
Academic Research Edition - T1: 사용자 모드 회피(난독화 + 시스템 콜 게이트웨이), T2: BYOVD 커널 브리지, T3: DMA 하드웨어(향후 작업).
학술 연구 에디션 — 사이버보안 교육 및 대학 수준 리버스 엔지니어링 연구를 위한 다계층 안티치트 회피 기능이 적용된 수정된 Cheat Engine입니다.
면책 조항: 이 프로젝트는 학술 연구, 대학 과제 및 사이버보안 교육 전용입니다. 학기가 종료되면 반드시 폐기되어야 합니다.
┌─────────────────────────────────────────────────────────┐
│ Cheat Engine 7.5 │
│ (Lazarus / FreePascal) │
├─────────────────────────────────────────────────────────┤
│ T1: 사용자 모드 회피 │
│ ├─ 창/프로세스/레지스트리 이름 무작위화 (-daltname) │
│ ├─ PE 메타데이터 제거 및 섹션 이름 변경 │
│ ├─ Rich Header 제거 및 타임스탬프 무작위화 │
│ ├─ 직접 시스템 콜 스텁 (ntdll.dll 후킹 우회) │
│ └─ 디스크에서 동적 시스템 콜 번호 추출 │
├─────────────────────────────────────────────────────────┤
│ T2: 커널 브리지 (BYOVD — WinNotify.sys) │
│ ├─ 안티치트 탐지 (10개 엔진) │
│ ├─ Microsoft 서명 드라이버 (WinNotify.sys / signeddrv.sys) │
│ ├─ IOCTL을 통한 커널 가상 메모리 R/W (물리 매핑 없음) │
│ ├─ 모든 프로세스에 대한 CR3 기반 페이지 테이블 워킹 │
│ ├─ 커널 베이스 공개 IOCTL을 통한 KASLR 무력화 │
│ ├─ ObCallback 우회 (커널 구조체 조작) │
│ └─ 프로세스 숨기기 (PsActiveProcessLinks 언링킹) │
├─────────────────────────────────────────────────────────┤
│ T3: DMA 하드웨어 [미구현] │
│ └─ 하이퍼바이저 수준 AC 우회를 위한 PCIe FPGA/장치 │
└─────────────────────────────────────────────────────────┘
.
├── README.md
├── Build.ps1 # 자동 빌드 파이프라인 (CE 클론, 패치 적용, 빌드)
├── .gitignore
├── src/
│ ├── cheatengine.lpi # 프로젝트: 메타데이터 이름 변경, -daltname 정의, 출력 이름 변경
│ ├── cheatengine.lpr # 메인: 동적 Application.Title
│ ├── NewKernelHandler.pas # 핵심: T1+T2 통합, 함수 포인터 교체
│ ├── SyscallGateway.pas # T1: 직접 시스템 콜 스텁 (Read/Write/Open/VQE)
│ ├── AntiCheatDetector.pas # T2: AC 탐지 — 프로세스, 드라이버, 서비스
│ ├── PhysicalMemory.pas # T2: 드라이버 로더 + IOCTL을 통한 물리 메모리 R/W
│ ├── KernelBridge.pas # T2: 커널 우회 오케스트레이터 + ObCallback 비활성화
│ ├── StealthHiding.pas # T2: PsActiveProcessLinks 언링킹을 통한 프로세스 숨기기
│ ├── PEPatcher.ps1 # 빌드 후 PE 변형
│ └── Build-Stealth.ps1 # 레거시 독립 빌드 스크립트
└── cheat-engine/ # 업스트림 CE 소스 (Build.ps1이 클론)
표면 난독화 — CE의 내장 {$ifdef altname} 조건부 컴파일 사용:
"Cheat Engine 7.5" 대신 "Runtime Modifier"\Software\Cheat Engine\ 대신 \Software\Runtime Modifier\cheatengine-x86_64.exe 대신 sysdiag64.exe시스템 콜 게이트웨이 — CE의 DBK 커널 드라이버는 비활성화됩니다 (해당 인증서 해시는 EAC/BE에 의해 블랙리스트 처리됨). 대신 모든 메모리 접근 함수 (ReadProcessMemory, WriteProcessMemory, VirtualQueryEx, OpenProcess)가 직접 syscall 명령어 스텁을 통해 리디렉션됩니다:
ntdll.dll 읽기mov r10, rcx; mov eax, [syscall_num]; syscall; retntdll.dll의 사용자 모드 후크 우회ObRegisterCallbacks를 통해 핸들 생성을 차단하는 커널 수준 안티치트용:
EasyAntiCheat.sys, BEDaisy.sys) 및 서비스 스캔WinNotify.sys / signeddrv.sys 로드 (Microsoft Authenticode 서명, 2026, 바이러스 토탈 탐지 0건)0x22200C): 커널의 로드된 모듈 목록에서 ntoskrnl.exe 베이스 주소 직접 읽기0x222040/0x222044): 물리 주소 변환 없이 모든 커널 가상 주소 읽기/쓰기ActiveProcessLinks를 따라 대상 게임 프로세스 탐색0x222050/0x222054): 게임의 DirectoryTableBase를 사용하여 자체 페이지 테이블을 통해 가상 메모리 읽기/쓰기하이퍼바이저 수준 안티치트(Vanguard, Faceit)의 경우, 커널과 하이퍼바이저 보호를 모두 우회하여 버스에서 물리 RAM을 읽을 수 있는 PCIe DMA 장치가 필요합니다. 향후 연구 확장으로 문서화되었습니다.
0x222040)0x222044)0x222050/0x222054)C:\Windows\System32\drivers\ 또는 컴파일된 실행 파일과 같은 위치에 배치git clone https://github.com/NulledNah/cheat-engine-undetectable.git
cd cheat-engine-undetectable
.\Build.ps1 -Clean
# Lazarus가 C:\lazarus에 없는 경우:
.\Build.ps1 -Clean -LazarusPath "D:\lazarus"
스크립트는 다음을 수행합니다:
lazbuild로 컴파일bin\sysdiag64.exe 출력sysdiag64.exe 실행
│
├─ DetectAntiCheat() → 실행 중인 AC 엔진 스캔
│
├─ [커널 AC 미탐지]
│ └─ T1 활성: 모든 작업에 시스템 콜 우회
│
├─ [EAC/BE 탐지 + WinNotify.sys 사용 가능]
│ ├─ SCM을 통해 드라이버 로드
│ ├─ IOCTL 0x22200C → 커널 베이스 유출 (KASLR 무력화)
│ ├─ IOCTL 0x222040 → PsInitialSystemProcess 읽기 → ActiveProcessLinks 워킹
│ ├─ 게임 EPROCESS 찾기 → DirectoryTableBase (CR3) 추출
│ ├─ 자체 프로세스를 열거에서 숨기기
│ └─ 모든 메모리 작업은 CR3 페이지 테이블 워킹으로 수행 (핸들 0개, OpenProcess 0회)
│
└─ [Vanguard/Faceit 탐지]
└─ 경고: 하이퍼바이저 AC — T3 필요 (DMA 하드웨어, 미구현)
이 프로젝트는 다음 사이버보안 개념을 시연합니다:
EPROCESS, ObCallbacks 및 페이지 테이블 구조체의 직접 수정학술 사용 전용 — 이 프로젝트는 대학 논문/연구 커리큘럼의 일부입니다. 대학 정책에 따라 학기가 종료되면 폐기됩니다.
| 안티치트 | 유형 | 전략 | 상태 |
|---|
| Warden (Blizzard) | 사용자 모드 | T1 | 작동 가능 |
| VAC (Valve) | 사용자 모드 | T1 | 작동 가능 |
| XIGNCODE3 | 사용자 모드 드라이버 | T1 | 작동 가능 |
| EasyAntiCheat | 커널 드라이버 | T2 | WinNotify.sys 필요 |
| BattlEye | 커널 드라이버 | T2 | WinNotify.sys 필요 |
| nProtect GameGuard | 커널 드라이버 | T2 | WinNotify.sys 필요 |
| Ricochet (CoD) | 커널 드라이버 | T2 | 부분 지원 |
| Vanguard (Riot) | 하이퍼바이저 | T3 (DMA) | 미구현 |
| Faceit / ESEA | 커널 + 하이퍼바이저 | T3 (DMA) | 미구현 |
OpenProcessNtReadVirtualMemoryPsActiveProcessLinks에서 언링크