zoukankan      html  css  js  c++  java
  • 提权获取进程路径并获取进程列表

    1、进程提权:

    1. BOOL CProgressInfo::AdjustPrivileges()  
    2. {  
    3.     HANDLE hToken = NULL;  
    4.     TOKEN_PRIVILEGES tp = {0};  
    5.     TOKEN_PRIVILEGES oldtp = {0};  
    6.     DWORD dwSize = sizeof(TOKEN_PRIVILEGES);  
    7.     LUID luid = {0};  
    8.   
    9.     if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) {  
    10.         if (GetLastError()==ERROR_CALL_NOT_IMPLEMENTED)  
    11.             return TRUE;  
    12.         else  
    13.             return FALSE;  
    14.     }  
    15.     if (!LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &luid)) {  
    16.         CloseHandle(hToken);  
    17.         return FALSE;  
    18.     }  
    19.   
    20.     tp.PrivilegeCount=1;  
    21.     tp.Privileges[0].Luid = luid;  
    22.     tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;  
    23.   
    24.     /* Adjust Token Privileges */  
    25.     if (!AdjustTokenPrivileges(hToken, FALSE, &tp, sizeof(TOKEN_PRIVILEGES), &oldtp, &dwSize)) {  
    26.         CloseHandle(hToken);  
    27.         return FALSE;  
    28.     }  
    29.   
    30.     // close handles  
    31.     CloseHandle(hToken);  
    32.     return TRUE;  
    33. }  

    2、获取进程列表(提权后可获取基本所有的进程路径):

    1. BOOL CProgressInfo::GetProgressList()  
    2. {  
    3.     BOOL bResult = FALSE;  
    4.     HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);  
    5.     if ( hSnap == INVALID_HANDLE_VALUE )  
    6.         return FALSE;  
    7.   
    8.     HANDLE hProcess = NULL;  
    9.     PROCESSENTRY32 info = {0};  
    10.     info.dwSize = sizeof(PROCESSENTRY32);  
    11.   
    12.     BOOL bRet = Process32First(hSnap, &info);  
    13.     while(bRet) {  
    14.         hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, info.th32ProcessID);  
    15.         if (hProcess) {  
    16.             GetModuleFileNameEx(hProcess, NULL, /*缓冲区指针*/, MAX_PATH);//获取进程路径  
    17.         }  
    18.   
    19.         bRet = Process32Next(hSnap, &info);  
    20.     }  
    21.   
    22.     return TRUE;  
    23. }  

    3、根据进程的PID,结束此进程:

    1. void CProgressInfo::DeleteProgress(DWORD pUID)  
    2. {  
    3.     HANDLE hProcessHandle;  
    4.     hProcessHandle = ::OpenProcess(PROCESS_TERMINATE, FALSE,pUID);  
    5.     if(hProcessHandle)  
    6.     {  
    7.         TerminateProcess(hProcessHandle,-1);  
    8.         CloseHandle(hProcessHandle);  
    9.     }  
    10.     else  
    11.     {  
    12.         //......  
    13.     }  

    来源:http://blog.csdn.net/u012372584/article/details/61912606

     

  • 相关阅读:
    助力APP尽情“撒币”!阿里云正式上线移动直播问答解决方案
    Linux API的fork()测试
    完美搞定《DOCKER IN ACTION》第二章示例
    docker+python无头浏览器爬虫
    阿里云播放器SDK的正确打开方式 | Aliplayer Web播放器介绍及功能实现(三)
    11月9日云栖精选夜读:阿里90后工程师_如何用AI程序写出双11打call歌?
    知名网站的 404 页面长啥样?你的404长啥样?
    10月24日云栖精选夜读:2017杭州•云栖大会完美收官 虚拟化平台精彩回顾
    memcache漏洞你补上了吗
    5分钟用Jitpack发布开源库
  • 原文地址:https://www.cnblogs.com/acmexyz/p/8521861.html
Copyright © 2011-2022 走看看