| 16 | } |
| 17 | |
| 18 | static void OnlyLoadMSSignedBinaries() |
| 19 | { |
| 20 | PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY sigPolicy = {}; |
| 21 | sigPolicy.MicrosoftSignedOnly = 1; |
| 22 | BOOL result = ::SetProcessMitigationPolicy(ProcessSignaturePolicy, &sigPolicy, sizeof(sigPolicy)); |
| 23 | if (!result) { |
| 24 | debugMessage(L"**wssecure** SetProcessMitigationPolicy(ProcessSignaturePolicy) failed (%lu)", ::GetLastError()); |
| 25 | } |
| 26 | |
| 27 | // This mitigation by itself does not block DLL injection. |
| 28 | PROCESS_MITIGATION_DYNAMIC_CODE_POLICY dynamicCodePolicy = {}; |
| 29 | dynamicCodePolicy.AllowRemoteDowngrade = 0; |
| 30 | dynamicCodePolicy.ProhibitDynamicCode = 1; |
| 31 | result = ::SetProcessMitigationPolicy(ProcessDynamicCodePolicy, &dynamicCodePolicy, sizeof(dynamicCodePolicy)); |
| 32 | if (!result) { |
| 33 | debugMessage(L"**wssecure** SetProcessMitigationPolicy(ProcessDynamicCodePolicy) failed (%lu)", ::GetLastError()); |
| 34 | } |
| 35 | |
| 36 | PROCESS_MITIGATION_IMAGE_LOAD_POLICY ilp = {}; |
| 37 | ilp.PreferSystem32Images = 1; |
| 38 | result = ::SetProcessMitigationPolicy(ProcessImageLoadPolicy, &ilp, sizeof(ilp)); |
| 39 | if (!result) { |
| 40 | debugMessage(L"**wssecure** SetProcessMitigationPolicy(ProcessImageLoadPolicy) failed (%lu)", ::GetLastError()); |
| 41 | } |
| 42 | } |
| 43 | |
| 44 | BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) |
| 45 | { |
no test coverage detected