C++调整进程的特权的实现方法

通过OpenProcess(PROCESS_ALL_ACCESS,FALSE,dId)获取ID较低进程的句柄时可能会得到错误代码,这些进程都是保持系统活动的系统服务。一个普通用户进程不允许执行针对系统服务的所有操作。如果一个程序意外终止了一个系统服务,那么整个系统都将崩溃。因此,一个进程只有拥有确切的访问权限才会有适当的特权 。

由于多种原因,调试器必须拥有大量的权限来完成他的工作。改变进程的特权可以通过以下三个简单的基本步骤:

1.首先,必须打开进程的访问令牌(accesstoken),使用advapi32.dll中的函数OpenProcessToken()。

2.如果上一步正确完成,接下来就是准备TOKEN_PRIVILEGES结构,该结构包含有关要请求的特权的信息。这个工作需要advapi32.dll中的另一个函数LookupPrivilegeValue()的帮助。特权通过名称来指定。SDK文档winnt.h定义了27中特权名称和其对应的符号名称。例如,调试权限的符号名称为:SE_DEBUG_NAME,该名称和字符串“SeDebugPrivilege”等效。

3.如果上一步正确完成,就可以使用进程的令牌句柄(TokenHandle)来调用AdjustTokenPrivileges()函数以初始化TOKEN_PRIVILEGES结构。该函数也是advapi32.dll导出的。

4.如果OpenProcessToken()调用成功,要记得关闭其返回的令牌句柄(TokenHandle)。w2k_dbg.dll包含一个dbgPrivilegeSet()函数,该函数合并了这几个步骤,还有w2k_dbg.dll中的另一个函数:dbgPrivilegeDebug()。此函数是dbgPrivilegeSet()的一个外包函数,为了便于设定调试特权。

时间: 2024-07-31 12:02:08

C++调整进程的特权的实现方法的相关文章

urlproc.exe是什么进程?进程结束与删除的方法

urlproc.exe是360浏览器的安全红绿灯扩展程序文件,只要电脑中安装有360浏览器,并且随浏览器启动一起启动. urlproc.exe进程作用: 通过安全红绿灯能有效拦截挂马带毒.钓鱼.欺诈等威胁网站,同时可以进行修复浏览器.清理浏览痕迹.启动无痕浏览.启动隔离模式等操作,并能有效保护上网安全. 安全红绿灯拦截技术: URL拦截层:360安全浏览器的URL拦截应用了网页搜索技术,定位挂马.钓鱼.欺诈网址.这种依靠恶意网址库的拦截方式十分快速.准确,并且其资源消耗由360后台的服务器承担,

python定时检查某个进程是否已经关闭的方法

  本文实例讲述了python定时检查某个进程是否已经关闭的方法.分享给大家供大家参考.具体如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 import threading import time import os import subprocess def get_process_count(imagename): p = os.popen('tasklist /FI "IMAGENAME eq %s"' % imagen

解决win8系统TrustedInstaller.exe进程占用过高的方法

  win8系统用户在任务管理器中会发现有一个TrustedInstaller.exe的系统进程,有时会占用用户很高的CPU,对于该进程很多用户不知道是干什么的,也不敢轻易的禁止,其实win8系统中的TrustedInstaller.exe进程是Windows模块安装服务模块进程,用户是可以禁止的,下面我们看下该进程的禁止方法吧! TrustedInstaller.exe进程是什么 TrustedInstaller.exe其实就是"Windows Module Installer"(W

VC++中进程与多进程管理的方法详解_C 语言

本文实例讲述了VC++中进程与多进程管理的方法,分享给大家供大家参考.具体方法分析如下: 摘要: 本文主要介绍了多任务管理中的多进程管理技术,对进程的互斥运行.子进程的创建与结束等作了较详细的阐述. 关键词: VC++6.0:进程:环境变量:子进程 进程 进程是当前操作系统下一个被加载到内存的.正在运行的应用程序的实例.每一个进程都是由内核对象和地址空间所组成的,内核对象可以让系统在其内存放有关进程的统计信息并使系统能够以此来管理进程,而地址空间则包括了所有程序模块的代码和数据以及线程堆栈.堆分

python使用Queue在多个子进程间交换数据的方法_python

本文实例讲述了python使用Queue在多个子进程间交换数据的方法.分享给大家供大家参考.具体如下: 这里将Queue作为中间通道进行数据传递,Queue是线程和进程安全的 from multiprocessing import Process, Queue def f(q): q.put([42, None, 'hello']) if __name__ == '__main__': q = Queue() p = Process(target=f, args=(q,)) p.start()

php计划任务之验证是否有多个进程调用同一个job的方法_php技巧

本文实例讲述了php计划任务之验证是否有多个进程调用同一个job的方法.分享给大家供大家参考,具体如下: 在使用计划任务的时候,公司有一次出现过2个进程跑同一个计划任务的情况,导致很多job都执行了2次,为了预防这种情况需要对linux的进程做一个限制,同一时间如果有进程在调用这个计划任务,那么就不允许另一个进程再进行调用了,下面是具体的代码. // $pro 方法名字 private function _verifyPsAux($pro) { $arrProcess = array( $pro

Android编程防止进程被第三方软件杀死的方法_Android

本文实例讲述了Android编程防止进程被第三方软件杀死的方法.分享给大家供大家参考,具体如下: 项目测试的时候发现,按home键回到桌面,再用360清理内存,软件被结束,再次进入的时候报错,看了下log,以为是有的地方没有控制好,但是又不知道360结束的是什么(这个现在还没弄明白).使用小米系统的进程管理优化内存就不报错. 后来想到用Service防止软件被kill掉,查了下资料,发现google 管方就有,ForegroundService 前台服务,让服务一直以前台任务的方式运行,可以在s

Conime.exe是什么进程?Conime.exe病毒清除方法

Conime.exe是什么进程 conime.exe是输入法编辑器相关程序.允许用户使用标准键盘就能输入复杂的字符与符号,需要注意它同时可能是一个bfghost1.0远程控制后门程序.此程序允许攻击者访问你的计算机,窃取密码和个人数据.建议立即删除此进程. 进程文件: conime 或者 conime.exe 进程名称: conime 出品者: 微软 属于: Microsoft 系统进程: 否 后台程序: 否 使用网络: 否 硬件相关: 否 常见错误: 未知N/A 内存使用: 未知N/A 安全等

CentOS下查看某个进程的线程数量的方法

  有些时候需要确实进程内部当前运行着多少线程,那么以下几个方法值得一用. 1.根据进程号进行查询: # pstree -p 进程号 # top -Hp 进程号 2.根据进程名字进行查询: # pstree -p `ps -e | grep server | awk '{print $1}'` # pstree -p `ps -e | grep server | awk '{print $1}'` | wc -l 这里利用了管道和命令替换, 关于命令替换,我也是今天才了解,就是说用``括起来的命