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

     

  • 相关阅读:
    [UVA10859 放置街灯 Placing Lampposts]
    洛谷7月月赛题解(2020)
    [学习笔记]马拉车-Manacher
    [SP1026] FAVDICE
    [NOIP2013]货车运输
    [洛谷P1801]黑匣子
    [HAOI2015]树上染色
    python-第二块:time模块和datatime模块
    python-作业:员工信息表
    python-第二块,笔记整理和学习内容复习(day7)
  • 原文地址:https://www.cnblogs.com/acmexyz/p/8521861.html
Copyright © 2011-2022 走看看