对当前进程进行提升权限
来源:互联网 发布:阿里云备案拍照地址 编辑:程序博客网 时间:2024/04/29 08:38
对于进程提升权限主要用到下面三个API
OpenProcessToken(); 打开权限令牌
LookupPrivilegeValue(); 检索一个唯一的本地标识符 LUID
AdjustTokenPrivileges(); 调整令牌特权
BOOL OpenProcessToken(
HANDLE ProcessHandle, //要修改访问权限的进程句柄
DWORD DesiredAccess, //指定你要进行的操作类型
PHANDLE TokenHandle //返回的访问令牌指针
);
BOOL LookupPrivilegevalue(
LPCTSTR lpSystemName, //表示所要查看的系统,本地系统直接用NULL
LPCTSTR lpName, //表示所要查看的特权信息的名称
PLUID lpLuid //接收所返回的制定特权名称的信息
);
LUID是用来填充如下结构体的
typedef struct _TOKEN_PRIVILEGES {
DWORDPrivilegeCount; //令牌属性的个数
LUID_AND_ATTRIBUTESPrivileges[]; //LUID和属性数组
} TOKEN_PRIVILEGES, *PTOKEN
BOOL AdjustTokenPrivileges(
HANDLE TokenHandle, //包含特权的句柄
BOOL DisableAllPrivileges,//禁用所有权限标志
PTOKEN_PRIVILEGESNewState,//新特权信息的指针(结构体)
DWORD BufferLength, //缓冲数据大小,以字节为单位的PreviousState的缓存区(sizeof)
PTOKEN_PRIVILEGES PreviousState,//接收被改变特权当前状态的Buffer
PDWORD ReturnLength //接收PreviousState缓存区要求的大小
);
看代码:
- HANDLE TokenHandle;
- if(!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &TokenHandle))
- {
- return ;
- }
- TOKEN_PRIVILEGES t_privileges = {0};
- if(!LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &t_privileges.Privileges[0].Luid))
- {
- return ;
- }
- t_privileges.PrivilegeCount = 1;
- t_privileges.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
- if(!AdjustTokenPrivileges(TokenHandle, FALSE, &t_privileges, sizeof(TOKEN_PRIVILEGES), NULL, NULL))
- {
- CloseHandle(TokenHandle);
- return ;
- }
- 对当前进程进行提升权限
- 对经过权限提升/筛选的进程进行调试
- MFC对进程权限的提升
- 代码注入(提升当前进程权限,创建远程线程)
- .NET中提升当前进程的UAC权限
- 代码注入(提升当前进程权限,创建远程线程)
- 提升进程权限代码
- 提升进程的权限
- [ZT]提升进程权限
- 提升进程权限
- 提升进程权限
- 如何提升进程权限
- 进程提升权限
- 提升进程访问权限
- 提升进程权限代码 .
- 提升进程权限
- 一句话提升进程权限
- 提升进程权限
- java下Class.forName的作用是什么,为什么要使用它(转)
- 设计模式(2)-简单工厂模式
- CIO们正在努力寻找“带上自己的设备(BYOD)”舒适区
- VB工程---百例88--播放动画
- 困扰了很久的ubuntu下智能拼音输入法
- 对当前进程进行提升权限
- 设计模式(3)-工厂方法模式
- sql server 2008评估期已到 不能打开数据库了 怎么才能打开?
- oracle创建表空间
- web.xml中的初始化参数(init-param)与上下文参数(context-param)
- JAVA正则表达式 Pattern和Matcher
- java模拟登陆
- java实现持续写入内容到txt文件
- 看孙鑫的VC 14课网络编程 自己总结的 呵呵