提高进程(程序)权限到Debug调试进程的权限

发布时间:2013年10月18日 作者:未知 查看次数:1315

提高进程(程序)权限到Debug调试进程的权限


提高进程(程序)权限方法详解 - [VC++编程]

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://www.blogbus.com/flyxxtt-logs/44126038.html

      在前面的文章中提到了用TerminateProcess这个API函数来终止(杀死)进程,但只是使用此函数并不能达到终止(杀死)一些系统进程的目的,比如csrss.exe这个系统进程。这个问题的原因并不在TerminateProcess函数,而是应为OpenProcess这个函数没有成功获得系统进程的句柄。不能获得系统进程句柄的原因是我们的进程的没有权限去打开这个系统进程的句柄,下面就分步介绍如何提高我们进程的权限到SeDebugPrivilege(调试进程)。

1、打开进程句柄

HANDLE token;
//GetCurrentProcess()函数返回本进程的伪句柄
if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&token))
    return FALSE;

2、查看权限

LUID luid;
if(!LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&luid))
    return FALSE;

3、提高权限

TOKEN_PRIVILEGES pToken;
pToken.PrivilegeCount=1;
pToken.Privileges[0].Luid=luid;
pToken.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
if(!AdjustTokenPrivileges(token,FALSE,&pToken,NULL,NULL,NULL))
    return FALSE;

      加入以上代码后,我们的进程就拥有DEBUG调试进程的权限,从而能够打开并获得系统进程的句柄,进而实现终止(杀死)系统进程了。

 



版权所有!www.sieye.cn
E.Mail:sieye@sohu.com QQ:66697110