• VC提权代码


    //方法一:

    bool EnableDebugPrivilege()  
    {  
        HANDLE hToken;  
        LUID sedebugnameValue;  
        TOKEN_PRIVILEGES tkp;  
        if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
        {  
            return   FALSE;  
        }  
        if (!LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &sedebugnameValue)) 
        {  
            CloseHandle(hToken);  
            return false;  
        }  
        tkp.PrivilegeCount = 1;  
        tkp.Privileges[0].Luid = sedebugnameValue;  
        tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;  
        if (!AdjustTokenPrivileges(hToken, FALSE, &tkp, sizeof(tkp), NULL, NULL))
        {  
            CloseHandle(hToken);  
            return false;  
        }  
        return true;  
    }

    //方法二:

    //C/C++ code

    bool UpPrivilege()  
    {  
        HANDLE hToken;                             //   handle   to   process   token  
        TOKEN_PRIVILEGES tkp;               //   pointer   to   token   structure  
        bool result = OpenProcessToken(GetCurrentProcess(),  
            TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,    
            &hToken);  
        if(!result)         //打开进程错误  
            return result;  
        result   =   LookupPrivilegeValue(     NULL,    
            SE_DEBUG_NAME,  
            &tkp.Privileges[0].Luid);  
        if(!result)         //查看进程权限错误  
            return   result;  
        tkp.PrivilegeCount   =   1;     //   one   privilege   to   set  
        tkp.Privileges[0].Attributes   =   SE_PRIVILEGE_ENABLED;  
        result   =   AdjustTokenPrivileges(   hToken,    
            FALSE,    
            &tkp,    
            sizeof(TOKEN_PRIVILEGES),  
            (PTOKEN_PRIVILEGES)   NULL,    
            (PDWORD)   NULL);  
        return   result;  
    }

    //方法三:

    //C/C++ code

    #define SE_CREATE_TOKEN_NAME              TEXT("SeCreateTokenPrivilege")
    #define SE_ASSIGNPRIMARYTOKEN_NAME        TEXT("SeAssignPrimaryTokenPrivilege")
    #define SE_LOCK_MEMORY_NAME               TEXT("SeLockMemoryPrivilege")
    #define SE_INCREASE_QUOTA_NAME            TEXT("SeIncreaseQuotaPrivilege")
    #define SE_UNSOLICITED_INPUT_NAME         TEXT("SeUnsolicitedInputPrivilege")
    #define SE_MACHINE_ACCOUNT_NAME           TEXT("SeMachineAccountPrivilege")
    #define SE_TCB_NAME                       TEXT("SeTcbPrivilege")
    #define SE_SECURITY_NAME                  TEXT("SeSecurityPrivilege")
    #define SE_TAKE_OWNERSHIP_NAME            TEXT("SeTakeOwnershipPrivilege")
    #define SE_LOAD_DRIVER_NAME               TEXT("SeLoadDriverPrivilege")
    #define SE_SYSTEM_PROFILE_NAME            TEXT("SeSystemProfilePrivilege")
    #define SE_SYSTEMTIME_NAME                TEXT("SeSystemtimePrivilege")
    #define SE_PROF_SINGLE_PROCESS_NAME       TEXT("SeProfileSingleProcessPrivilege")
    #define SE_INC_BASE_PRIORITY_NAME         TEXT("SeIncreaseBasePriorityPrivilege")
    #define SE_CREATE_PAGEFILE_NAME           TEXT("SeCreatePagefilePrivilege")
    #define SE_CREATE_PERMANENT_NAME          TEXT("SeCreatePermanentPrivilege")
    #define SE_BACKUP_NAME                    TEXT("SeBackupPrivilege")
    #define SE_RESTORE_NAME                   TEXT("SeRestorePrivilege")
    #define SE_SHUTDOWN_NAME                  TEXT("SeShutdownPrivilege")
    #define SE_DEBUG_NAME                     TEXT("SeDebugPrivilege")
    #define SE_AUDIT_NAME                     TEXT("SeAuditPrivilege")
    #define SE_SYSTEM_ENVIRONMENT_NAME        TEXT("SeSystemEnvironmentPrivilege")
    #define SE_CHANGE_NOTIFY_NAME             TEXT("SeChangeNotifyPrivilege")
    #define SE_REMOTE_SHUTDOWN_NAME           TEXT("SeRemoteShutdownPrivilege")
    #define SE_UNDOCK_NAME                    TEXT("SeUndockPrivilege")
    #define SE_SYNC_AGENT_NAME                TEXT("SeSyncAgentPrivilege")
    #define SE_ENABLE_DELEGATION_NAME         TEXT("SeEnableDelegationPrivilege")
    #define SE_MANAGE_VOLUME_NAME             TEXT("SeManageVolumePrivilege")

    BOOL EnablePrivilege(LPCTSTR lpszPrivilegeName,BOOL bEnable)
    {
        HANDLE hToken;
        TOKEN_PRIVILEGES tp;
        LUID luid;
        if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES |
            TOKEN_QUERY | TOKEN_READ,&hToken))
            return FALSE;
        if(!LookupPrivilegeValue(NULL, lpszPrivilegeName, &luid))
            return TRUE;
        tp.PrivilegeCount = 1;
        tp.Privileges[0].Luid = luid;
        tp.Privileges[0].Attributes = (bEnable) ? SE_PRIVILEGE_ENABLED : 0;
        AdjustTokenPrivileges(hToken,FALSE,&tp,NULL,NULL,NULL);
        CloseHandle(hToken);
        return (GetLastError() == ERROR_SUCCESS);
    }

    /********************************VISTA************************/
    /*

    嵌入manifest 如果是vs2008 在项目属性里面直接修改为requireAdministrator就可以了
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>  
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">  
    <assemblyIdentity  
        version="1.0.0.0"  
        processorArchitecture="X86"  
        name="test.exe.manifest"  
        type="win32"
    />  
    <!-- Identify the application security requirements. -->
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
      <security>
        <requestedPrivileges>
          <requestedExecutionLevel
            level="requireAdministrator"
            uiAccess="false"/>
        </requestedPrivileges>
      </security>
    </trustInfo>
    </assembly>  
    该代码添加到VC资源中, 添加方式:  
    添加一个“custom”资源,”resource type”填24,把资源ID改为1

    */

  • 相关阅读:
    Gof 设计模式
    系统架构师-笔记
    微信小程序弹出层点击穿透问题
    微信小程序-两个input叠加,多次点击字体变粗或闪动
    微信小程序-下拉松开弹不回去顶部留一段空白
    node+vue报错合辑
    Nodejs脚手架搭建基于express的应用
    Vue 核心之数据劫持
    Date——时间戳转化为YYYY-MM-DD h:m:s时间格式
    web页面加载、解析、渲染过程
  • 原文地址:https://www.cnblogs.com/lizs/p/3664459.html
Copyright © 2020-2023  润新知