
Техника, сочетающая снятие хуков с NTDLL и варианты гейтов HellsGate
Техника обхода EDR в пользовательском пространстве, позволяющая по своему желанию переключаться между нехукированной и хукированной ntdll.dll. О том, как я это создал, можно прочитать здесь.
Вы можете просто перетащить файлы .h и .c в свой проект, убедитесь, что вы отредактировали определение в заголовочном файле для функций CRT, которые должны быть либо переопределены вами, либо использовать то, что вы хотите. Вам также нужно будет отредактировать функцию switch_memory_protection внутри файла .c, поскольку вам необходимо реализовать её самостоятельно, чтобы проект работал корректно.
Вот фрагмент того, как использовать библиотеку:
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!
}