
Academic Research Edition - T1 : évasion en mode utilisateur (obfuscation + passerelle syscall), T2 : pont noyau BYOVD, T3 : matériel DMA (travaux futurs).
Édition Recherche Académique — Cheat Engine modifié avec contournement anti-triche multi-niveaux pour l'éducation en cybersécurité et la recherche en rétro-ingénierie de niveau universitaire.
Avertissement : Ce projet est exclusivement destiné à la recherche académique, aux travaux universitaires et à l'éducation en cybersécurité. Il doit être détruit à la fin du semestre académique.
┌─────────────────────────────────────────────────────────┐
│ Cheat Engine 7.5 │
│ (Lazarus / FreePascal) │
├─────────────────────────────────────────────────────────┤
│ T1: Contournement en mode utilisateur │
│ ├─ Randomisation des noms fenêtre/processus/registre (-daltname)│
│ ├─ Suppression des métadonnées PE et renommage des sections │
│ ├─ Suppression de l'en-tête Rich et randomisation de l'horodatage │
│ ├─ Stubs d'appels système directs (contournement des hooks ntdll.dll) │
│ └─ Extraction dynamique des numéros d'appels système depuis le disque │
├─────────────────────────────────────────────────────────┤
│ T2: Pont noyau (BYOVD — WinNotify.sys) │
│ ├─ Détection anti-triche (10 moteurs) │
│ ├─ Pilote signé Microsoft (WinNotify.sys / signeddrv.sys)│
│ ├─ Lecture/écriture mémoire virtuelle noyau via IOCTL (sans mappage physique) │
│ ├─ Parcours de tables de pages basé sur CR3 pour tout processus │
│ ├─ Contournement KASLR via IOCTL de divulgation de l'adresse de base du noyau │
│ ├─ Contournement ObCallback (manipulation des structures du noyau) │
│ └─ Masquage de processus (déliaison de PsActiveProcessLinks) │
├─────────────────────────────────────────────────────────┤
│ T3: Matériel DMA [NON IMPLÉMENTÉ] │
│ └─ Périphérique PCIe FPGA pour contournement AC au niveau hyperviseur │
└─────────────────────────────────────────────────────────┘
| Anti-Triche | Type | Stratégie | Statut |
|---|---|---|---|
| Warden (Blizzard) | Mode utilisateur | T1 | Fonctionnel |
| VAC (Valve) | Mode utilisateur | T1 | Fonctionnel |
| XIGNCODE3 | Pilote mode utilisateur | T1 | Fonctionnel |
| EasyAntiCheat | Pilote noyau | T2 | Nécessite WinNotify.sys |
| BattlEye | Pilote noyau | T2 | Nécessite WinNotify.sys |
| nProtect GameGuard | Pilote noyau | T2 | Nécessite WinNotify.sys |
| Ricochet (CoD) | Pilote noyau | T2 | Partiel |
| Vanguard (Riot) | Hyperviseur | T3 (DMA) | NON IMPLÉMENTÉ |
| Faceit / ESEA | Noyau + Hyperviseur | T3 (DMA) | NON IMPLÉMENTÉ |
.
├── README.md
├── Build.ps1 # Pipeline de compilation automatisé (clone CE, applique les correctifs, compile)
├── .gitignore
├── src/
│ ├── cheatengine.lpi # Projet : métadonnées renommées, définition -daltname, sortie renommée
│ ├── cheatengine.lpr # Principal : Application.Title dynamique
│ ├── NewKernelHandler.pas # Cœur : intégration T1+T2, échange de pointeurs de fonction
│ ├── SyscallGateway.pas # T1 : Stubs d'appels système directs (Read/Write/Open/VQE)
│ ├── AntiCheatDetector.pas # T2 : Détection AC — processus, pilotes, services
│ ├── PhysicalMemory.pas # T2 : Chargeur de pilote + lecture/écriture mémoire physique via IOCTL
│ ├── KernelBridge.pas # T2 : Orchestrateur de contournement noyau + désactivation ObCallback
│ ├── StealthHiding.pas # T2 : Masquage de processus via déliaison de PsActiveProcessLinks
│ ├── PEPatcher.ps1 # Mutation PE post-compilation
│ └── Build-Stealth.ps1 # Script de compilation autonome hérité
└── cheat-engine/ # Source CE en amont (cloné par Build.ps1)
Obscurcissement de surface — Utilise la compilation conditionnelle intégrée de CE {$ifdef altname} :
"Runtime Modifier" au lieu de "Cheat Engine 7.5"\Software\Runtime Modifier\ au lieu de \Software\Cheat Engine\sysdiag64.exe au lieu de cheatengine-x86_64.exePasserelle d'appels système — Le pilote noyau DBK de CE est désactivé (son hash de certificat est sur liste noire par EAC/BE). À la place, toutes les fonctions d'accès mémoire (ReadProcessMemory, WriteProcessMemory, VirtualQueryEx, OpenProcess) sont redirigées via des stubs d'instruction syscall directs :
ntdll.dll depuis le disque avant que les hooks anti-triche ne soient actifsmov r10, rcx; mov eax, [syscall_num]; syscall; retntdll.dll installés par EAC/BEPour les anti-triches au niveau noyau qui bloquent la création de handles via ObRegisterCallbacks :
EasyAntiCheat.sys, BEDaisy.sys) et les servicesWinNotify.sys / signeddrv.sys (signé Microsoft Authenticode, 2026, 0 détections VT) via le Gestionnaire de contrôle des services Windows0x22200C) : Lit l'adresse de base de ntoskrnl.exe directement depuis la liste des modules chargés du noyau0x222040/0x222044) : Lit/écrit n'importe quelle adresse virtuelle noyau — aucune traduction d'adresse physique requiseActiveProcessLinks pour localiser le processus du jeu cible0x222050/0x222054) : Utilise le DirectoryTableBase du jeu pour lire/écrire sa mémoire virtuelle via ses propres tables de pagesOpenProcess, pas de NtReadVirtualMemory — complètement invisible pour ObCallbacksPsActiveProcessLinksPour les anti-triches au niveau hyperviseur (Vanguard, Faceit), un périphérique DMA PCIe serait nécessaire pour lire la RAM physique depuis le bus, contournant à la fois les protections du noyau et de l'hyperviseur. Documenté comme extension de recherche future.
0x222040)0x222044)0x222050/0x222054)C:\Windows\System32\drivers\ ou à côté de l'exécutable compilégit clone https://github.com/NulledNah/cheat-engine-undetectable.git
cd cheat-engine-undetectable
.\Build.ps1 -Clean
# Si Lazarus n'est pas dans C:\lazarus :
.\Build.ps1 -Clean -LazarusPath "D:\lazarus"
Le script :
lazbuild en mode Release 64-Bitbin\sysdiag64.exeLancer sysdiag64.exe
│
├─ DetectAntiCheat() → analyse les moteurs AC en cours d'exécution
│
├─ [Aucun AC noyau détecté]
│ └─ T1 actif : contournement syscall pour toutes les opérations
│
├─ [EAC/BE détecté + WinNotify.sys disponible]
│ ├─ Charger le pilote via SCM
│ ├─ IOCTL 0x22200C → fuite de l'adresse de base du noyau (KASLR contourné)
│ ├─ IOCTL 0x222040 → lire PsInitialSystemProcess → parcourir ActiveProcessLinks
│ ├─ Trouver l'EPROCESS du jeu → extraire DirectoryTableBase (CR3)
│ ├─ Masquer son propre processus de l'énumération
│ └─ Toutes les opérations mémoire via parcours de tables de pages CR3 (zéro handle, zéro OpenProcess)
│
└─ [Vanguard/Faceit détecté]
└─ Avertissement : AC hyperviseur — nécessite T3 (matériel DMA, non implémenté)
Ce projet démontre les concepts de cybersécurité suivants :
EPROCESS, ObCallbacks et des structures de tables de pagesUsage académique uniquement — Ce projet fait partie d'un cursus de thèse/recherche universitaire. Il sera détruit à la fin du semestre académique conformément à la politique de l'université.