
Academic Research Edition - T1: Evasión en modo usuario (ofuscación + puerta de enlace de syscall), T2: Puente de kernel BYOVD, T3: Hardware DMA (trabajo futuro).
Edición de Investigación Académica — Cheat Engine modificado con evasión de anti-cheat en múltiples niveles para educación en ciberseguridad e investigación de ingeniería inversa a nivel universitario.
Aviso legal: Este proyecto es exclusivamente para investigación académica, trabajos de curso universitarios y educación en ciberseguridad. Debe ser destruido al finalizar el período académico.
┌─────────────────────────────────────────────────────────┐
│ Cheat Engine 7.5 │
│ (Lazarus / FreePascal) │
├─────────────────────────────────────────────────────────┤
│ T1: Evasión en Modo Usuario │
│ ├─ Aleatorización de nombres de ventana/proceso/registro (-daltname)│
│ ├─ Eliminación de metadatos PE y renombrado de secciones │
│ ├─ Eliminación de Rich Header y aleatorización de timestamp │
│ ├─ Stubs de syscall directos (bypass de hooks en ntdll.dll) │
│ └─ Extracción dinámica de números de syscall desde disco │
├─────────────────────────────────────────────────────────┤
│ T2: Puente de Kernel (BYOVD — WinNotify.sys) │
│ ├─ Detección de anti-cheat (10 motores) │
│ ├─ Controlador firmado por Microsoft (WinNotify.sys / signeddrv.sys)│
│ ├─ Lectura/escritura de memoria virtual del kernel vía IOCTL (sin mapeo físico) │
│ ├─ Recorrido de tablas de páginas basado en CR3 para cualquier proceso │
│ ├─ Derrota de KASLR mediante IOCTL de divulgación de base del kernel │
│ ├─ Bypass de ObCallback (manipulación de estructuras del kernel) │
│ └─ Ocultamiento de procesos (desenlace de PsActiveProcessLinks) │
├─────────────────────────────────────────────────────────┤
│ T3: Hardware DMA [NO IMPLEMENTADO] │
│ └─ Dispositivo PCIe FPGA para bypass de AC a nivel de hipervisor │
└─────────────────────────────────────────────────────────┘
| Anti-Cheat | Tipo | Estrategia | Estado |
|---|---|---|---|
| Warden (Blizzard) | Modo usuario | T1 | Funcional |
| VAC (Valve) | Modo usuario | T1 | Funcional |
| XIGNCODE3 | Controlador en modo usuario | T1 | Funcional |
| EasyAntiCheat | Controlador de kernel | T2 | Requiere WinNotify.sys |
| BattlEye | Controlador de kernel | T2 | Requiere WinNotify.sys |
| nProtect GameGuard | Controlador de kernel | T2 | Requiere WinNotify.sys |
| Ricochet (CoD) | Controlador de kernel | T2 | Parcial |
| Vanguard (Riot) | Hipervisor | T3 (DMA) | NO IMPLEMENTADO |
| Faceit / ESEA | Kernel + Hipervisor | T3 (DMA) | NO IMPLEMENTADO |
.
├── README.md
├── Build.ps1 # Pipeline de compilación automatizado (clona CE, aplica parches, compila)
├── .gitignore
├── src/
│ ├── cheatengine.lpi # Proyecto: metadatos renombrados, define -daltname, salida renombrada
│ ├── cheatengine.lpr # Principal: Application.Title dinámico
│ ├── NewKernelHandler.pas # Núcleo: integración T1+T2, intercambio de punteros de función
│ ├── SyscallGateway.pas # T1: Stubs de syscall directos (Read/Write/Open/VQE)
│ ├── AntiCheatDetector.pas # T2: Detección de AC — procesos, controladores, servicios
│ ├── PhysicalMemory.pas # T2: Cargador de controlador + lectura/escritura de memoria física vía IOCTL
│ ├── KernelBridge.pas # T2: Orquestador de bypass de kernel + desactivación de ObCallback
│ ├── StealthHiding.pas # T2: Ocultamiento de procesos mediante desenlace de PsActiveProcessLinks
│ ├── PEPatcher.ps1 # Mutación de PE posterior a la compilación
│ └── Build-Stealth.ps1 # Script de compilación independiente heredado
└── cheat-engine/ # Código fuente CE upstream (clonado por Build.ps1)
Ofuscación de Superficie — Utiliza la compilación condicional integrada de CE {$ifdef altname}:
"Runtime Modifier" en lugar de "Cheat Engine 7.5"\Software\Runtime Modifier\ en lugar de \Software\Cheat Engine\sysdiag64.exe en lugar de cheatengine-x86_64.exePuerta de Enlace de Syscalls — El controlador de kernel DBK de CE está deshabilitado (su hash de certificado está en la lista negra de EAC/BE). En su lugar, todas las funciones de acceso a memoria (ReadProcessMemory, WriteProcessMemory, VirtualQueryEx, OpenProcess) se redirigen a través de stubs de instrucción syscall directos:
ntdll.dll desde disco antes de que los hooks de anti-cheat estén activosmov r10, rcx; mov eax, [syscall_num]; syscall; retntdll.dll instalados por EAC/BEPara anti-cheats a nivel de kernel que bloquean la creación de handles mediante ObRegisterCallbacks:
EasyAntiCheat.sys, BEDaisy.sys) y serviciosWinNotify.sys / signeddrv.sys (firmado con Authenticode de Microsoft, 2026, 0 detecciones VT) mediante el Administrador de Control de Servicios de Windows0x22200C): Lee la dirección base de ntoskrnl.exe directamente de la lista de módulos cargados del kernel0x222040/0x222044): Lee/escribe cualquier dirección virtual del kernel — sin necesidad de traducción de direcciones físicasActiveProcessLinks para localizar el proceso del juego objetivo0x222050/0x222054): Utiliza el DirectoryTableBase del juego para leer/escribir su memoria virtual a través de sus propias tablas de páginasOpenProcess, sin NtReadVirtualMemory — completamente invisible para ObCallbacksPsActiveProcessLinksPara anti-cheats a nivel de hipervisor (Vanguard, Faceit), se necesitaría un dispositivo DMA PCIe para leer la RAM física desde el bus, evitando tanto las protecciones del kernel como del hipervisor. Documentado como extensión de investigación futura.
0x222040)0x222044)0x222050/0x222054)C:\Windows\System32\drivers\ o junto al ejecutable compiladogit clone https://github.com/NulledNah/cheat-engine-undetectable.git
cd cheat-engine-undetectable
.\Build.ps1 -Clean
# Si Lazarus no está en C:\lazarus:
.\Build.ps1 -Clean -LazarusPath "D:\lazarus"
El script:
lazbuild en modo Release 64-Bitbin\sysdiag64.exeEjecutar sysdiag64.exe
│
├─ DetectAntiCheat() → escanea motores de AC en ejecución
│
├─ [Sin AC de kernel detectado]
│ └─ T1 activo: bypass de syscall para todas las operaciones
│
├─ [EAC/BE detectado + WinNotify.sys disponible]
│ ├─ Cargar controlador vía SCM
│ ├─ IOCTL 0x22200C → filtrar base del kernel (KASLR derrotado)
│ ├─ IOCTL 0x222040 → leer PsInitialSystemProcess → recorrer ActiveProcessLinks
│ ├─ Encontrar EPROCESS del juego → extraer DirectoryTableBase (CR3)
│ ├─ Ocultar propio proceso de la enumeración
│ └─ Todas las operaciones de memoria vía recorrido de tabla de páginas CR3 (cero handles, cero OpenProcess)
│
└─ [Vanguard/Faceit detectado]
└─ Advertencia: AC de hipervisor — requiere T3 (hardware DMA, no implementado)
Este proyecto demuestra los siguientes conceptos de ciberseguridad:
EPROCESS, ObCallbacks y estructuras de tablas de páginasSolo para Uso Académico — Este proyecto forma parte de un plan de estudios de tesis/investigación universitaria. Será destruido al finalizar el período académico según la política de la universidad.