当前位置: 代码迷 >> 综合 >> openprocess 提升权限结束进程(来自网络)
  详细解决方案

openprocess 提升权限结束进程(来自网络)

热度:98   发布时间:2024-01-10 15:13:18.0

1、进程相当于系统提供的一个平台,它可以包括一个或多个线程,如IE是个进程,

  打开多个网页是它的多个线程,把IE进程Kill掉即可关闭多个打开网页的线程。

  2、98和NT不一样。98下可以用CreateToolhelp32Snapshot函数Process32First和

  Process32Next来枚举当前所有进程的进程ID(先调用函数CreateToolhelp32Snapshot)

  NT下用EnumProcesses函数来枚举。2000是支持CreateToolhelp32Snapshot函数的。

  得到进程ID后就可以用OpenProcess函数得到句柄了,在NT和2000下要通过安全检测。

  3、EnumProcess 也可以得到系统中的进程列表

  杀掉本地进程其实很简单,取得进程ID后,调用OpenProcess函数打开进程句柄,然

  后调用TerminateProcess函数就可以杀掉进程了。有些情况下并不能直接打开进程句柄,

  例如WINLOGON等系统进程,因为权限不够。这个时候我们就得先提升自己的进程的权限了。

  提升权限过程也不复杂,先调用GetCurrentProcess函数取得当前进程的句柄,然后调用

  OpenProcessToken打开当前进程的访问令牌,接着调用LookupPrivilegeValue函数取得你

  想提升的权限的值,最后调用AdjustTokenPrivileges函数给当前进程的访问令牌增加权限

  就可以了。一般有了SeDebugPrivilege特权后,就可以杀掉除Idle外的所有进程了。

  1.OpenProcessToken

  要对一个任意进程(包括系统安全进程和服务进程)进行指定了写相关的访问权的OpenProcess操作,只要当前进程具有SeDeDebug权限就可以了。要是一个用户是Administrator或是被给予了相应的权限,就可以具有该权限。可是,就算我们用Administrator帐号对一个系统安全进程执行OpenProcess(PROCESS_ALL_ACCESS,FALSE, dwProcessID)还是会遇到"访问拒绝"的错误。什么原因呢?原来在默认的情况下进程的一些访问权限是没有被置为可用状态(即Enabled)的,所以我们要做的首先是使这些权限可用。与此相关的一些API函数有OpenProcessToken、LookupPrivilegevalue、AdjustTokenPrivileges。我们要修