调整非特权帐户(C、Windows)上的令牌
我正在使用下面的代码(这是MSDN中的一个稍加修改的示例)来检查我是否对某个进程具有调试权限。如果我不这样做,我就试着设置它们调整非特权帐户(C、Windows)上的令牌,c,windows,debugging,privileges,C,Windows,Debugging,Privileges,我正在使用下面的代码(这是MSDN中的一个稍加修改的示例)来检查我是否对某个进程具有调试权限。如果我不这样做,我就试着设置它们 int SetDebugPriv() { HANDLE TokenHandle; LUID lpLuid; TOKEN_PRIVILEGES NewState; if(!OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, &TokenHandle)) {
int SetDebugPriv()
{
HANDLE TokenHandle;
LUID lpLuid;
TOKEN_PRIVILEGES NewState;
if(!OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, &TokenHandle))
{
//failed
return 0;
}
if(!LookupPrivilegeValue(NULL, "SeDebugPrivilege" , &lpLuid))
{
//failed
CloseHandle(TokenHandle);
return 0;
}
NewState.PrivilegeCount = 1;
NewState.Privileges[0].Luid = lpLuid;
NewState.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
if(!AdjustTokenPrivileges(TokenHandle, FALSE, &NewState, sizeof(NewState), NULL, NULL))
{
//failed
CloseHandle(TokenHandle);
return 0;
}
CloseHandle(TokenHandle);
return 1;
}
现在,在Windows XP和2003上的特定帐户下,我在尝试设置令牌时遇到一个拒绝访问错误。我的猜测是,我无法设置特定的令牌,因为我没有权限这样做。
如何在非管理员帐户或权限较低的帐户上设置调试令牌
代码是赞赏的
谢谢你不能。如果可以的话,这将是一个巨大的安全漏洞(SeDebugPrivilege比管理员更有魔力) AdjustTokenPrivileges启用令牌拥有但未启用的特权。例如,SeShutdownPrivilege就是其中之一 您必须将权限添加到用户帐户,然后用户必须注销并再次登录(以获得具有该权限的新令牌) 要以编程方式向用户帐户添加权限,请从以下内容开始: