最简单的方法检查 EfiGuard 是否干掉了您的 PatchGuard。
efiguard 在运行时留下了一个 SetVariable 后门——我们只需从用户态戳它一下,要求读取 ntoskrnl 基址处的 2 个字节。如果返回 MZ,则说明后门还在,efiguard 已完成其工作,PatchGuard 已失效。
仅当用户选择了默认的 DSE 绕过方法(DSE_DISABLE_SETVARIABLE_HOOK)时才有效——而这是默认设置。如果选择了 DSE_DISABLE_AT_BOOT,该钩子会在 ExitBootServices 时被移除,从用户态就无法检测到了。
需要管理员权限 + SeSystemEnvironmentPrivilege。
cl /EHsc src/main.cpp /link ntdll.lib psapi.lib
src/main.cpp