windowsAPI之OpenProcessToken,AdjustTokenPrivileges 和LookupPrivilegeValue转
这三个函数主要用来提升进程的权限
1 OpenProcessToken()函数:获取进程的令牌句柄
OpenProcessToken的原型.
BOOL WINAPI OpenProcessToken(
__in HANDLE ProcessHandle,
__in DWORD DesiredAccess,
__out PHANDLE TokenHandle
);
第一个参数 进程句柄(当前进程为GetCurrentProcess()为参数)
第二个参数 访问令牌特权(可以参考msdnhttps://msdn.microsoft.com/zh-cn/library/aa374905)
第三个参数 令牌句柄 返回的参数 就是AdjustTokenPrivileges的第一个参数
2LookupPrivilegeValue()函数:
在认识这个函数之前我们需要了解一下结构体
TOKEN_PRIVILEGES结构体
typedef struct _TOKEN_PRIVILEGES
{
DWORD PrivilegeCount;
LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY];
}TOKEN_PRIVILEGES;
第一个参数是个特权数组。
第二个参数是要修改的特权数目
LUID_AND_ATTRIBUTES 结构体
typedef struct _LUID_AND_ATTRIBUTES
{
LUID Luid;
DWORD Attributes;
} LUID_AND_ATTRIBUTES;
LookupPrivilegeValue的原型
BOOL WINAPI LookupPrivilegeValue(
__in_opt LPCTSTR lpSystemName,
__in LPCTSTR lpName,
__out PLUID lpLuid
);
第一个参数是系统的名字,如果为NULL,就是本地名字(这里就填NULL)
第二个参数是特权的名字,要查看详细特权,在这里写SE_DEBUG_NAME
第三个参数就可以通过指针返回一个LUID类型的Luid的标识了。 通过这个值就可以填入刚才的结构体里了。
3 AdjustTokenPrivileges()函数
BOOL WINAPI AdjustTokenPrivileges(
__in HANDLE TokenHandle,
__in BOOL DisableAllPrivileges,
__in_opt PTOKEN_PRIVILEGES NewState,
__in DWORD BufferLength,
__out_opt PTOKEN_PRIVILEGES PreviousState,
__out_opt PDWORD ReturnLength
);
第一个参数为OpenProcessToken第三个指针参数传出的句柄值
第二个参数为是否禁用所有所有的特权(这里填false)
第三个参数为新的TOKEN_PRIVILEGES的特权结构体指针
第四个参数是上面结构体的字节长度(sizeof)
第五个参数是 接受原先的特权的结构体
第六个参数也是这个结构体的字节长度的指针
最后要记得调用CloseHandle()函数
我们可以将上述函数组合为一个方法
void EenableDebugPriv() {HANDLE hToken;TOKEN_PRIVILEGES tkp;OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY, &hToken);LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid);tkp.PrivilegeCount = 1;tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,(PTOKEN_PRIVILEGES)NULL, 0);CloseHandle( hToken ); }
这样就可以修改相关进程的权限了
原贴地址:https://blog.csdn.net/cxq_1993/article/details/48053997
windowsAPI之OpenProcessToken,AdjustTokenPrivileges 和LookupPrivilegeValue转相关推荐
- OpenProcessToken LookupPrivilegeValue 和AdjustTokenPrivilege
文章目录 OpenProcessToken 函数功能 函数申明 第一个参数 第二个参数 第三个参数 返回值 补充: LookupPrivilegeValue 函数功能 函数声明 第一个参数 第二个参数 ...
- Windows提升进程权限
Windows提升进程权限 文章一: 在枚举/结束系统进程或操作系统服务时,会出现权限不足而失败的情况,这时就需要提升自己进程到系统权限,其实提升权限的代码很简单的,看过的最经典的应该是<WIN ...
- Sality病毒分析
Sality病毒分析 基本信息 MD5:E100C2C3F93CABF695256362E7DE4443 样本来源:https://www.52pojie.cn/thread-537381-1-1.h ...
- LNK2019:无法解析的外部符号, _imp_OpenProcessToken, 该符号在函数main中被引用
开发环境:Win10 + QT5.9.9 + MSVC2015-64bit 背景:需要调用windowsAPI,OpenProcessToken(),结果报错了,见下图: 看到LNK这个词,我就知道是 ...
- GetCurrentProcessID、OpenProcessToken、LookupPrivilegeValue、AdjustTokenPrivileges
GetCurrentProcessID 得到当前进程的ID OpenProcessToken 得到进程的令牌句柄 LookupPrivilegeVal ...
- GetCurrentProcessID、OpenProcessToken、LookupPrivilegeValue
GetCurrentProcessID 得到当前进程的ID OpenProcessToken 得到进程的令牌句柄 LookupPrivilegeValue ...
- API函数的中文说明及所有的32位WindowsAPI函数的定义
API函数的中文说明及所有的32位WindowsAPI函数的定义 ============================API函数的中文说明============================= ...
- [转载]提升进程权限-OpenProcessToken等函数的用法
GetCurrentProcessID 得到当前进程的ID OpenProcessToken 得到进程的令牌句柄LookupPrivilegeValue 查询进程的权限 AdjustTokenPriv ...
- WindowsAPI关机、重启
#include "Windows.h" //强制关闭计算机 bool systemShutDown() { HANDLE hToken; TOKEN_PRIVILEGES ...
最新文章
- 【数据结构第一周】最大子列和问题整理
- java代码如何降低重复率_影响网站跳出率的主要因素及如何降低网站跳出率?...
- 文献学习(part80-B)--Do we Need Hundreds of Classifiers to Solve Real World Classification Problems?
- [原]一步一步自己制作弹出框
- LeetCode 1953. 你可以工作的最大周数
- 尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。...
- Sublime 编译运行JavaScript
- goland设置代码颜色主题(同Sublime Text 3的代码颜色一样)
- 指针变量的所占字节数大小确定
- java设置word页面为A3_word页面怎么设置为A3打印格式
- 汇编语言程序设计技巧详解(附例题)
- 助学贷款系统导入预申请时问题解决办法汇总
- Swift桥接OC,手动创建Objective-OC Bridging Header
- 高等数学:数列前后项【递推式的单调性】与【整个数列单调性】的关系
- 不使用插件,小程序也能完整的渲染富文本(视频展现,图片自适应)
- 追踪算法MUSTer体验
- Linux攻关之基础模块十二 进程相关
- ubuntu 环境搭建问题归纳
- 2023最新泛站群系统,一键搭建泛目录,泛二级
- 胡萝卜的故事 第四篇