Game anti-cheats use kernel drivers to load monitoring DLLs into game processes, ensuring they cannot be tampered with by user-mode hacks.
Game security companies use kernel-level tools to detect cheats that are also running in the kernel.
Instead of forcing the target process to call LoadLibrary (which leaves traces), kernel injectors often use . The kernel driver parses the DLL's PE (Portable Executable) headers, copies the sections into the target memory, resolves imports, and executes the DLL entry point manually. This leaves no entry in the process's Loaded Modules list. Process Hollowing from Kernel
The DLL is mapped into memory by the injector, not by the Windows loader. This means the DLL doesn't exist on disk, allowing it to evade file-based antivirus scanners. kernel dll injector
Forcing the target process to call LoadLibrary via a remote thread.
: A project focusing on manual mapping from within the kernel.
Memory allocation in the target process for the DLL path string. Writing the DLL path into the allocated memory. Game anti-cheats use kernel drivers to load monitoring
The driver opens the section for kernel32.dll in \\KnownDLLs , maps a view of it into its own space, and locates gaps in the code section. It places shellcode in these gaps that hooks CreateThread . When any thread calls CreateThread , the shellcode executes and loads the target DLL. The hook is then quickly removed to minimize stability issues. This method can inject a DLL within one second of process creation.
| Tool | Key Features | Target Audience | | :--- | :--- | :--- | | (BlackBone) | Supports both x86 and x64, kernel‑mode injection and manual mapping, thread hijacking, hiding VAD entries, native process injection | General DLL injection research | | KMInjector | Manual PE mapping from kernel, uses RtlCreateUserThread , requires self‑contained DLLs | Low‑level PE loader research | | fumo_loader | Injects via kernel APCs, re‑generates encrypted executable each run, no open handles to target, defeats user‑mode anti‑cheats | Advanced stealth testing | | kernelmodeinjector | Manual mapping + thread hijacking, XOR payload encryption, specifically designed to test BattlEye and EAC on Windows 11 | Anti‑cheat validation in game development | | Rhydon1337’s driver | Kernel APC injection, parses kernel32.dll PE header inside target, straightforward implementation | Learning kernel APC injection |
A kernel DLL injector typically consists of two parts: a user-mode loader (EXE) and a kernel-mode driver (SYS). The driver does the heavy lifting to bypass security restrictions. 1. Driver Deployment The kernel driver parses the DLL's PE (Portable
6.2 Hardening drivers and kernel interfaces
Drivers communicate via IRPs. A malicious driver can hook the IRP handlers of legitimate drivers (like the filesystem driver). When the OS tries to load a legitimate DLL, the malicious driver intercepts the request and returns a handle to the malicious DLL instead.
// Create a remote thread to load the DLL LPTHREAD_START_ROUTINE pRoutine = (LPTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle(L"kernel32"), "LoadLibraryW"); CreateRemoteThread(hProcess, NULL, 0, pRoutine, pDll, 0, NULL);
The injector executes syscall instructions directly via assembly stubs, completely bypassing any userland hooks placed by EDRs or antivirus software on ntdll.dll functions. System Service Numbers (SSNs) are dynamically resolved from ntdll.dll at runtime. If a function is hooked, the injector employs Halo's Gate to recover the SSN from neighboring clean syscall stubs.
Defenders have developed kernel drivers that proactively block injection attempts. One example uses pre-handle creation callbacks to revoke process access rights. Specifically, PROCESS_VM_* and PROCESS_CREATE_THREAD rights are revoked from all handles to processes in a protected whitelist. However, blocking access too broadly can crash critical system processes like wininit.exe , requiring careful targeting.
Here you'll find all collections you've created before.