进程添加 SE_DEBUG_NAME 权限
SE_DEBUG_NAME 权限作用
赋予进程对其他进程的完全访问权限,允许调试或修改任意进程的内存,是系统安全机制中的高权限标识
添加权限用到的接口
- LookupPrivilegeValue 检索指定系统上用于本地表示指定特权名称的本地唯一标识符(LUID)。先用该函数获取 SE_DEBUG_NAME 的 luid
- OpenProcessToken 打开与进程关联的访问令牌
- AdjustTokenPrivileges 函数启用或禁用指定访问令牌中的特权。 启用或禁用访问令牌中的特权需要 TOKEN_ADJUST_PRIVILEGES 访问权限。所以在 OpenProcess 的时候需要指定 TOKEN_ADJUST_PRIVILEGES 权限
代码实现
bool RemoveDebugPrivileges(HANDLE hProcess)
{
TOKEN_PRIVILEGES Debug_Privileges;
if (LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &Debug_Privileges.Privileges[0].Luid))
{
HANDLE hToken = 0;
if (OpenProcessToken(hProcess, TOKEN_ADJUST_PRIVILEGES, &hToken))
{
Debug_Privileges.Privileges[0].Attributes = 0;
Debug_Privileges.PrivilegeCount = 1;
AdjustTokenPrivileges(hToken, FALSE, &Debug_Privileges, 0, NULL, NULL);
CloseHandle(hToken);
return true;
}
}
return false;
}
浙公网安备 33010602011771号