zoukankan      html  css  js  c++  java
  • 扫描系统进程和获取某进程的PID

    扫描系统的所有进程

     1 #include <stdio.h>
     2 #include <windows.h>
     3 #include <tlhelp32.h>
     4 
     5 int scan()
     6 {
     7     HANDLE            hprocessShap = NULL;
     8     PROCESSENTRY32    pe32         = {0};
     9     hprocessShap = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0);
    10 
    11     if(hprocessShap == INVALID_HANDLE_VALUE)
    12     {
    13         printf("
    CreateToolhelp32Snapshot() failed:%d", GetLastError());
    14         return 1;
    15     }
    16 
    17     pe32.dwSize = sizeof(PROCESSENTRY32);
    18 
    19     if(Process32First(hprocessShap, &pe32))
    20     {
    21         do
    22         {
    23             wprintf(pe32.szExeFile);
    24             printf("
    ");
    25         }
    26         while (Process32Next(hprocessShap, &pe32));
    27     }
    28     else
    29     {
    30         printf("
    Process32First() failed:%d", GetLastError());
    31     }
    32     CloseHandle(hprocessShap);
    33     return 0;
    34 }
    35 
    36 int main(int argc, char *argv)
    37 {
    38     scan();
    39     return 0;
    40 }

     获取某进程的PID

    有时候在对系统某个进程进行操作时,我们需要获取程序的PID作为参数。其中一个方法当然是在任务管理器的详细信息里寻找,另外一个方法就是通过代码获取到进程的PID直接利用

     1 int getpid(wchar_t *name)
     2 {
     3     HANDLE            hprocessShap = NULL;
     4     //存放快照进程信息的结构体
     5     PROCESSENTRY32    pe32         = {0};        
     6     //对系统的进程建立一个快照进行扫描
     7     hprocessShap = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0);
     8     if(hprocessShap == INVALID_HANDLE_VALUE)
     9     {
    10         printf("
    CreateToolhelp32Snapshot() failed:%d", GetLastError());
    11         return 1;
    12     }
    13     //设置结构体的大小
    14     pe32.dwSize = sizeof(PROCESSENTRY32);
    15     //Process32First获得第一个进程的句柄
    16     if(Process32First(hprocessShap, &pe32))
    17     {
    18         //匹配输入的进程名
    19         do
    20         {
    21             if(!wcscmp(name, pe32.szExeFile))
    22             {
    23                 return (int)pe32.th32ProcessID;
    24             }
    25         }
    26         while (Process32Next(hprocessShap, &pe32));
    27     }
    28     else
    29     {
    30         printf("
    Process32First() failed:%d", GetLastError());
    31     }
    32     CloseHandle(hprocessShap);
    33     return 0;
    34 }
    谦谦君子,卑以自牧
  • 相关阅读:
    Exploits Likely Leveraged by Russia’s APT28 in Highly-Targeted Attack
    WAF绕过的一些总结和思考
    PHP SAFE MODE BYPASS
    RAS算法原理
    如何绕过WAF
    360手机助手关于签名校验的分析
    cat 命令详解
    面向对象简介
    APK签名及简单反编译
    面向对象之基本概念 封装、单多继承
  • 原文地址:https://www.cnblogs.com/QKSword/p/8343870.html
Copyright © 2011-2022 走看看