進程添加 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號