• 【VC++积累】之二、黑客编程之提权SDK


     提权啊。。。。1要打开当前进程的权限令牌。。。。。。。2要获取权限标识。。。。。。。3要提升令牌权限。。。。。。。。。。。。3个API函数搞定

    分别是:

               OpenProcessToken();
               LookupPrivilegeValue();
               AdjustTokenPrivileges();


          BOOL OpenProcessToken(
    
      __in HANDLE ProcessHandle, //要修改访问权限的进程句柄
      __in DWORD DesiredAccess, //指定你要进行的操作类型
      __out PHANDLE TokenHandle //返回的访问令牌指针
      );              
    
    
    
          BOOL LookupPrivilegevalue(
    
      LPCTSTR lpSystemName, // 表示所要查看的系统,本地系统直接用NULL
      LPCTSTR lpName, // 表示所要查看的特权信息的名称
      PLUID lpLuid //接收所返回的制定特权名称的信息
      );      
    
    
    
    
    
    
                   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 ;
            }

    呃。。。。忘了说了。。。。WINDOWS NT 以上的内核需要提权。。。。进行对系统的操作(关机  重启 注销)98啥的就不用了  直接调用 ExitWindowsEx就行了。。。。。。。这里只说提权了    要了解的话 去看一下MSDN这个API 函数的用法


    2012/8/5

    jofranks 于南昌

  • 相关阅读:
    MvcApplication 中方法的那点事
    Html 中阻止事件冒泡的三种方法比较
    WPF中 ItemsSource 和DataContext不同点
    解决:Visual Studio 启动就报错退出
    webapi是如何绑定参数的(How WebAPI does Parameter Binding)
    %cd% 和%~dp0%的区别及cd跨盘符切换路径问题
    win10中matlabR2015b安装libsvm
    MATLAB2015b链接MinGW编译器
    网易内推编程题:异或运算求混合颜料的最小种类
    小易喜欢的单词
  • 原文地址:https://www.cnblogs.com/java20130723/p/3211425.html
Copyright © 2020-2023  润新知