我已经按照微软关于如何使用 SeDebugPrivilege 获得任何进程的句柄来
获得SE_DEBUG
我的进程令牌的权限。
但是,当尝试以完全权限打开句柄时,我收到( )MsMpEng.exe
的错误代码。c0000022
STATUS_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));
}