В Windows есть Code Integrity Guard (CIG), он же Binary Signature Policy. Параметр MicrosoftSignedOnly запрещает процессу загружать PE-модули, не подписанные Microsoft. Обычный Authenticode-сертификат компании или собственный сертификат не подойдёт.
#define _WIN32_WINNT 0x0602
#include <windows.h>
#include <stdio.h>
int main(void)
{
PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY policy = {0};
policy.MicrosoftSignedOnly = 1;
if (!SetProcessMitigationPolicy(
ProcessSignaturePolicy,
&policy,
sizeof(policy)))
{
printf("Error: %lu\n", GetLastError());
return 1;
}
puts("Microsoft-signed-only policy enabled");
return 0;
}
Этот флаг проверяет конкретную DLL при одном вызове LoadLibraryEx, тогда как MicrosoftSignedOnly действует на весь процесс. На практике CIG может ломать плагины, хуки EDR/AV, оверлеи и любые сторонние DLL.
Небольшая защитка от некоторых продуктов, которые любят пихнуть свою dll-ку в процесс для более глубокого мониторинга за user-mode пространством.