Can I have any way to detect the Driver Signing Policy status?

后端 未结 2 1860
孤城傲影
孤城傲影 2021-01-27 06:03

I have a modified driver and must be installed when driver signing is disabled, so I want to detect this status to remind users to reboot to SafeMode. I had tried this command :

2条回答
  •  深忆病人
    2021-01-27 07:03

    I would rather wrap this into a nicer function like so:

    bool IsSystemCodeIntegrityEnabled() {
            typedef NTSTATUS(__stdcall* td_NtQuerySystemInformation)(
                    ULONG           SystemInformationClass,
                    PVOID           SystemInformation,
                    ULONG           SystemInformationLength,
                    PULONG          ReturnLength
                    );
    
            struct SYSTEM_CODEINTEGRITY_INFORMATION {
                    ULONG Length;
                    ULONG CodeIntegrityOptions;
            };
    
            static td_NtQuerySystemInformation NtQuerySystemInformation = (td_NtQuerySystemInformation)GetProcAddress(GetModuleHandleA("ntdll.dll"), "NtQuerySystemInformation");
    
            SYSTEM_CODEINTEGRITY_INFORMATION Integrity ={ sizeof(SYSTEM_CODEINTEGRITY_INFORMATION), 0 };
            NTSTATUS status = NtQuerySystemInformation(103, &Integrity, sizeof(Integrity), NULL);
    
            return (NT_SUCCESS(status) && (Integrity.CodeIntegrityOptions & 1));
    }
    

提交回复
热议问题