[Win32] 启用进程Debug权限

在Windows中,即使以管理员权限运行程序,也无法直接关闭一些系统进程,如dwm.exe,因为强制完整性控制机制。文章介绍了如何通过启用Debug权限来解决这个问题,包括使用OpenProcessToken、LookupPrivilegeValue和AdjustTokenPrivileges等API来修改权限令牌,从而以高完整性访问系统进程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本博文由优快云博主zuishikonghuan所作,版权归zuishikonghuan所有,转载请注明出处:http://blog.youkuaiyun.com/zuishikonghuan/article/details/47746451

在上一篇中,写过一个KillProcessAndWait函数,这个函数是用来终止一个进程并等待进程退出的函数,我们使用这个函数,可以关闭同一个用户下的进程,但是,即使以管理员权限运行程序,我们发现也无法终止系统的进程(比如系统桌面管理器dwm.exe)!这是为什么呢。

另外,在写一篇中获取进程映像路径中,也会出现此问题。

甚至只要是访问那些进程,即使是管理员权限都会出问题!

其实,管理员权限完全可以关闭系统中运行的任何用户模式下的进程,但是为何无法关闭呢,是因为Windows有一项机制叫“强制完整性控制”,IE保护模式处于低完整性,标准用户进程和管理员以标准用户权限运行时处于中完整性,管理员权限进程有高完整性,SYSTEM权限进程是系统完整性,强制完整性控制要优先于访问控制和安全描述符,所以管理员权限的程序依然不能直接访问服务程序的进程,只有获取了Debug权限,才可以以高完整性访问系统完整性的进程。

可能有人没有听说过强制完整性控制,但想必知道UIPI(用户界面特权隔离)吧,其实UIPI不是根据用户权限来隔离Windows消息的!而是通过强制完整性控制!哈哈,其实以前我也不知道,而且有些资料对于这个UIPI也是知其然但不知其所以然,说的很含糊,误导了很多人。

如何获取Debug特权呢?
首先用OpenProcessToken获取自身的

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值