我在How to obtain a handle to any process with SeDebugPrivilege上关注了Microsoft
以获得我的流程令牌中的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));
}