
Eine Technik, die NTDLL-Unhooking und HellsGate-Gate-Varianten kombiniert
Eine Userland-EDR-Bypass-Technik, mit der du nach Belieben zwischen ungehookter und gehookter ntdll.dll wechseln kannst. Wie ich das gebaut habe, findest du hier.
Du kannst einfach die .h- und .c-Datei in dein Projekt ziehen und ablegen. Stelle sicher, dass du die Header-Datei-Definition für CRT-Funktionen bearbeitest, die entweder von dir neu implementiert oder nach Belieben ersetzt werden sollten. Du musst außerdem die switch_memory_protection- Funktion in der .c-Datei bearbeiten, da du diese selbst implementieren musst, damit das Projekt korrekt funktioniert.
Hier ist ein Snippet zur Verwendung der Lib:
struct hook_cache *cache = 0;
cache = ntdll_reconstruction_init();
if (cache == 0)
// Throw Error!
while (1) {
// Do whatever
cache = ntdll_reconstruction_flip(cache); // Back to hooked stub
if (cache == 0)
// Throw Error!
Sleep(1234);
cache = ntdll_reconstruction_flip(cache); // Back to clean stub
if (cache == 0)
// Throw Error!
}