Windows提权

c++

Posted by YiMiTuMi on July 26, 2019

提权

在运行一些与系统相关的操作时,会因为权限不够无法使用,每次都已管理员运行比较麻烦现在用程序进行提权。

windows API函数:

  OpenProcessToken 函数用来打开与进程相关联的访问令牌。

  GetCurrentProcess 检索当前进程的伪句柄。

  LookupPrivilegeValue 函数检索指定系统上使用的本地惟一标识符(LUID),用于本地表示指定的特权名称。

  AdjustTokenPrivileges 函数启用或禁用指定访问令牌中的特权。

程序:

bool EnableDebugPrivilege()
{
	HANDLE hToken;
	LUID sedebugnameValue;
	TOKEN_PRIVILEGES tkp;
	if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) //获取访问令牌
	{
		return FALSE;
	}
	if (!LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &sedebugnameValue))  //获取UID
	{
		CloseHandle(hToken);
		return false;
	}
	tkp.PrivilegeCount = 1;
	tkp.Privileges[0].Luid = sedebugnameValue;
	tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
	if (!AdjustTokenPrivileges(hToken, FALSE, &tkp, sizeof(tkp), NULL, NULL)) //进行提权
	{
		CloseHandle(hToken);
		return false;
	}
	return true;
}

水晶兰 – 真诚无害