当前位置:天才代写 > tutorial > C语言/C++ 教程 > C++调解历程的特权的实现要领

C++调解历程的特权的实现要领

2017-11-03 08:00 星期五 所属: C语言/C++ 教程 浏览:387

通过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()的一个外包函数,为了便于设定调试特权。

 

    关键字:

天才代写-代写联系方式