OpenProcessToken,LookupPrivilegeValue,AdjustTokenPrivileges提升进程权限

对于一些运行的程序,我们希望它们能尽可能的像操作系统能做的事情一样多,但是操作系统对于每个进程都有权限划分,那么此时我们就需要对期望中的进程进行提升权限,查看MSDN和一些其他资料之后,写了个可用于提升进程权限的函数,可被用在程序中直接调用。代码如下:

//传入Privileges参数,用于取得想要获取的权限
//查看MSDN的LookupPrivilegeValue函数宏定义权限表可自行修改;
BOOL GetPrivilege(TCHAR* Privileges)   
{   
    HANDLE hToken;
    TOKEN_PRIVILEGES tkp;
    LUID namevalue;
    if(!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken))
    {
        return FALSE;
    }
    if(!LookupPrivilegeValue(NULL, Privileges, &namevalue))
    {
        CloseHandle(hToken);
        return FALSE;
    }
    tkp.PrivilegeCount = 1;
    tkp.Privileges[0].Luid = namevalue;
    tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
    if(!AdjustTokenPrivileges(hToken, FALSE, &tkp, sizeof(tkp), NULL, NULL))
    {
        CloseHandle(hToken);
        return FALSE;
    }
    CloseHandle(hToken);
    if(GetLastError() == ERROR_NOT_ALL_ASSIGNED)
    {
        return FALSE;
    }
    return TRUE;
}
时间: 2024-10-11 11:01:18

OpenProcessToken,LookupPrivilegeValue,AdjustTokenPrivileges提升进程权限的相关文章

windowsAPI之OpenProcessToken,AdjustTokenPrivileges 和LookupPrivilegeValue

这三个函数主要用来提升进程的权限 1 OpenProcessToken()函数:获取进程的令牌句柄 OpenProcessToken的原型. BOOL WINAPI OpenProcessToken( __in HANDLE ProcessHandle, __in DWORD DesiredAccess, __out PHANDLE TokenHandle ); 第一个参数 进程句柄(当前进程为GetCurrentProcess()为参数) 第二个参数 访问令牌特权(可以参考msdnhttps:

android绕过permission验证及fork进程权限提升

脱壳时写patch补丁时Native代码并没有太高的权限,以至于如文件IO.网络IO等基本的C函数都无法使用,提示权限不足.在网上搜索了资料大致进行以下几种尝试: 1.APK在安装时会在/data/system/packages.xml记录当前app需要申请的权限,如下:  <package name="com.example.unpacker" codePath="/data/app/com.example.unpacker-1.apk" nativeLib

XP下无法杀掉进程权限设置

1 // 提升升级工具进程权限为SE_DEBUG_NAME,否则XP下无法杀掉进程 2 HANDLE hToken = NULL; 3 if(OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, &hToken)) 4 { 5 LUID luid; 6 if(LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &luid)) 7 { 8 TOKEN_PRIVILEGES TokenPrivileges

014 进程权限

进程权限 ● 1 DOS 时代 物理内存 同一等级 内存(代码) CPU 程序可以修改操作系统的代码 造成系统的不安全 1.系统不稳定 2.毫无保密性的系统 ● 2 Win XP 出现虚拟内存 ○ 虚拟内存的存在 ○ 杜绝了修改操作系统代码的可能 ○ 无法修改操作系统的代码 ○ 出现了进程 ○ 完全封闭 ○ 开放了一些接口 ○ CreateProcess ○ 打开一个子进程 ○ 父进程拥有子进程的访问权限 ○ 必须拥有一定的权限(用户赋予的权限) ○ XP下并不完全 权限体系 ○ 管理员权限 可

Linux基础:用户身份与进程权限

一.基本概念 权限: 定义了用户对资源的访问能力. 用户: 对于多用户多任务的Linux操作系统来说,是通过什么来区分不同的使用者呢? 用户:用户就是获取资源或服务的凭证.当我们登录系统的时候,系统会提示输入用户名和密码进行登录验证.对于Linux系统来说,用户通常就是一个标识,以 UID 来表示. 进程: 程序的执行过程.所谓对计算机的操作,比如双击某个应用程序图标或者是通过命令提示符敲入命令,其最终产生的结果就是创建进程.看似用户的操作,实际上是进程在代替我们完成,进程就是我们访问计算机资源

程序的开机关机重启,开机启动,休眠功能delphi实现(使用AdjustTokenPrivileges提升权限)

TShutDownStatus = (sdShutDown,sdReboot,sdLogOff,sdPowerOff); procedure ShutDown(sdStatus : TShutDownStatus); var     NewState:       TTokenPrivileges;     lpLuid:         Int64;     ReturnLength:   DWord;     ToKenHandle:    Cardinal;  begin     Open

0220自学Linux_逻辑理解用户进程权限相关+理解文件内各字段(passwd,shadow,group)

11 内核是真正意义上的操作系统 库有动态库也有静态库,Linux的动态库是.so后缀的,也称为共享库 库是不能够独立运行的,只能被调用 Window的动态库是.dll后缀的 我们平时所谓的安装操作系统是装在硬盘上的 我们对于系统而言,最基本的程序就是shell,不然我们无法和系统交互,打开一个命令行窗口,就打开了一个shell进程 硬件之上的是内核,内核之上是进程 如果进程中他需要调用库,那首先启动这个程序,他的进程会把这个调用的库装入内存 ,而如果是共享库,其他进程调用的话就直接在内存调用这

关于 Unix 用户权限及进程权限及 Saved set-user-id

最近在看APUE,看到3.14节,fcntl的时候#include <fcntl.h>int fcntl(int fd, int cmd, .../* int arg */);出错返回-1,具体返回值依赖于cmd参数.其中提到一个CMD,FD_GETFD FD_SETFD所返回的文件描述符标志FD_CLOEXEC(当前的文件描述符标志只有这一个)最8.10节 函数子进程调用exec是对打开文件的处理.对于fork一个进程,子进程与父进程共享一些数据,包裹已打开的文件描述符(子进程复制了所有父进

windbg修改cmd的token提升其权限

使用windbg 调试xp. 运行cmd,whoami查看权限如下: 下面要做的就是把cmd.exe 的token值用system的token替换. 1.  Ctrl + break ,windbg进入调试模式 !process 0 0 查看xp所有进程,结果如下: kd> !process 0 0 **** NT ACTIVE PROCESS DUMP **** PROCESS 865b7830 SessionId: none Cid: 0004 Peb: 00000000 ParentCid