zoukankan      html  css  js  c++  java
  • 【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 于南昌

  • 相关阅读:
    java map集合的知识
    [JAVA_开课吧资源]第三周 常用类库、异常处理
    [SmartTV_Samsung]Samsung Smart TV 开发环境搭建
    [JAVA_源代码]如何在Eclipse sdk中查看源代码rt.jar
    [PPT_书]《Presentation Zen》
    [JAVA_开课吧资源]第二周 面向对象程序设计
    [Java_kaikeba]java中堆和栈的区别(对象变量的理解)
    [JAVA_开课吧资源]第一周 Java语言概述、Java语言基础
    [u/COS-II_安装]在PC机上的移植
    [IOS_HTML5]各种JS框架介绍--用HTML5/CSS3/JS开发Android/IOS应用
  • 原文地址:https://www.cnblogs.com/java20130723/p/3211425.html
Copyright © 2011-2022 走看看