是否可以使用PROCESS_ALL_ACCESS或PROCESS_TERMINATE权限打开Windows Defender(MsMpEng.exe)进程的句柄?

时间:2018-09-01 16:30:08

标签: c winapi ntdll

我在How to obtain a handle to any process with SeDebugPrivilege上关注了Microsoft 以获得我的流程令牌中的SE_DEBUG特权。

但是,当尝试打开具有完整权限的MsMpEng.exe的句柄时,我收到了错误代码c0000022STATUS_ACCESS_DENIED)。

我想知道我是否犯了一个错误,或者根本无法获得对该流程的访问权限。

下面是我打开Defender进程句柄的代码。该块之后是向我的令牌添加SE_DEBUG特权的块。

if (Process32First(hSnap, &pt))
{
    do {
        if (!strcmp(pt.szExeFile, "MsMpEng.exe"))
        {
            printf("%d\n", pt.th32ProcessID);
            OBJECT_ATTRIBUTES oa = { sizeof(oa), 0, 0, 0, 0 };
            CLIENT_ID pid = { (HANDLE)pt.th32ProcessID, NULL };
            NTSTATUS status = NtOpenProcess(&hDef, PROCESS_TERMINATE, &oa, &pid);
            if (status == STATUS_SUCCESS)
            {
                printf("Handle to defender opened!");
                NtClose(hDef);
            }
            else
                printf("%x", status);
        }

    } while (Process32Next(hSnap, &pt));
}

0 个答案:

没有答案