一种用户态 EDR 绕过技术,允许你随意在未挂钩和已挂钩的 ntdll.dll 之间切换。 我是如何构建它的可以在这里找到 here。
你可以直接将 .h 和 .c 文件拖放到你的项目中,确保你 编辑头文件中 CRT 函数的定义,这些函数应该由你重新实现 或者使用任何你想要的方式。你还需要编辑 .c 文件中的 switch_memory_protection 函数,因为你需要自己实现它,项目 才能正常工作。
以下是如何使用该库的代码片段:
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!
}