Windows提高进程权限至Debug

原创 2012年03月26日 06:36:34

关于提权,需要了解知道下面三个函数吧,

OpenProcessToken 得到进程的令牌句柄

LookupPrivilegeValue 查询进程的权限

AdjustTokenPrivileges 判断令牌权限

在Windows下,每个进程不是说有管理员权限就可以为所欲为。因为每个进程还有个令牌,访问令牌吧。而令牌代表了一些权限使用,如果需要某些特殊权限,需要自己去使能或除能。

Windows核心编程里有提权代码如下:

BOOL EnableDebugPrivilege(BOOL bEnable) 
{ 

BOOL fOK = FALSE;
HANDLE hToken;
if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken)) //打开进程访问令牌
{ 
   //试图修改“调试”特权
   TOKEN_PRIVILEGES tp;
   tp.PrivilegeCount = 1;
   LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &tp.Privileges[0].Luid);
   tp.Privileges[0].Attributes = bEnable ? SE_PRIVILEGE_ENABLED : 0;
   AdjustTokenPrivileges(hToken, FALSE, &tp, sizeof(tp), NULL, NULL);
   fOK = (GetLastError() == ERROR_SUCCESS);
   CloseHandle(hToken); 
} 
return fOK; 
}


类似提高权限函数如下:

void RaiseToDebug()
{
    HANDLE hToken;
    HANDLE hProcess = GetCurrentProcess();  // 获取当前进程句柄
 
    // 打开当前进程的Token,就是一个权限令牌,第二个参数可以用TOKEN_ALL_ACCESS
    if (OpenProcessToken(hProcess, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
    {
        TOKEN_PRIVILEGES tkp;
        if (LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &tkp.Privileges[0].Luid))
        {
            tkp.PrivilegeCount = 1;
            tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
   
            //通知系统修改进程权限
            BOOL bREt = AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, NULL, 0);
        }
        CloseHandle(hToken);
    }   
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

将进程提权至DEBUG级别

//引用API,设置基本参数 internal const int SE_PRIVILEGE_ENABLED = 0x00000002; internal cons...

提示进程SeDebugPriviLege权限

[code=c/c++] BOOL SetPrivilege() { HANDLE hToken;  TOKEN_PRIVILEGES NewState;  LUID luidPrivile...

读取其他进程的内存-让程序提升Debug权限

最近一直忙着写毕业论文,但对于我这种没语言天赋的人,写写实际做的工作还可以,但要写课题背景、意义什么的,头都要大了,憋了两天才憋出两页的绪论,我容易吗我。。。 所以这半个月也没时间更新博客,现在论文...

Windows 系统debug级 进程调试工具 ntsd 详解

ntsd从Windows 2000开始就是系统自带的进程调试工具,在system32目录下。NTSD的功能非常的强大,用法也比较复杂,但如果只用来结束一些进程,那就比较简单了。在Windows中只有S...
  • rznice
  • rznice
  • 2012-09-09 13:30
  • 2257

Windows提升进程权限

Windows提升进程权限 文章一: 在枚举/结束系统进程或操作系统服务时,会出现权限不足而失败的情况,这时就需要提升自己进程到系统权限,其实提升权限的代码很简单的,看过的最经典的应该是《WIND...

2.1 Windows核心编程-进程UAC下以管理员权限运行

从NT6.0开始,微软为了提高安全防护增加了非常多的新机制,其中对普通用户层开发人员影响最大的就是”用户账户控制系统(User Account Control , UAC)”如果想让自己的程序默认以指...
  • bxsec
  • bxsec
  • 2017-07-27 16:13
  • 612

提升进程权限为debug权限,无法禁止进程

GetCurrentProcessID 得到当前进程的ID OpenProcessToken 得到进程的令牌句柄LookupPrivilegeValue 查询进程的权限 AdjustTokenPriv...

c#注入-OpenProcess之前应先获取debug权限

DWORD dwProcessId; GetWindowThreadProcessId(hWnd, &dwProcessId); HANDLE hProcess = OpenProcess(PR...

四、开启程序 Debug 权限

因为 win7 对程序的权限进行了一些限制, 导致有些程序在 xp 下正常运行, 而在 win7 下就出错了, 例如 OpenProcess() 失败, 这个程序就要提升我们的程序的特权, 开启它的 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)