Heim >Backend-Entwicklung >C#.Net-Tutorial >Kleines C/C++-Tool zum Durchlaufen von Prozessen und Prozess-IDs

Kleines C/C++-Tool zum Durchlaufen von Prozessen und Prozess-IDs

黄舟
黄舟Original
2017-01-22 14:06:072033Durchsuche

Wenn wir einige destruktive Programme schreiben, müssen wir den Prozess durchlaufen und die ID extrahieren

Für die oben genannten Funktionen führen wir zunächst mehrere APIs ein


1.CreateToolhelp32Snapshout-Funktion

Erhalten Sie einen Snapshot eines Prozesses, Moduls oder Threads

Die Syntax lautet wie folgt:

HANDLE WINAPI CreateToolhelp32Snapshot(  
  _In_ DWORD dwFlags,  
  _In_ DWORD th32ProcessID  
);

Der erste Parameter: Der Snapshot enthält die Systemteil sind die Parameter wie folgt:

Kleines C/C++-Tool zum Durchlaufen von Prozessen und Prozess-IDs


Kleines C/C++-Tool zum Durchlaufen von Prozessen und Prozess-IDs

Wir verwenden TH32CS_SNAPPROCESS

Snapshot hier Enthält alle Prozesse im System.


Im zweiten geht es um die PROCESSENTRY32-Struktur

Die Syntax lautet wie folgt:

typedef struct tagPROCESSENTRY32 {  
  DWORD     dwSize;  
  DWORD     cntUsage;  
  DWORD     th32ProcessID;  
  ULONG_PTR th32DefaultHeapID;  
  DWORD     th32ModuleID;  
  DWORD     cntThreads;  
  DWORD     th32ParentProcessID;  
  LONG      pcPriClassBase;  
  DWORD     dwFlags;  
  TCHAR     szExeFile[MAX_PATH];  
} PROCESSENTRY32, *PPROCESSENTRY32;

Dies beschreibt einen Eintrag, der Beim Aufruf des Snapshots wird der Prozess im Systemadressraum gelesen.


Hier stellen wir nur szExeFile[MAX_PATH] und

th32ParentProcessID vor: Dies ist die Identität des Prozesses (übergeordneter Prozess), nachdem der Prozess erstellt wurde

szExeFile: Der Name der ausführbaren Datei im Prozess


Das Folgende ist der Quellcode! Einige Funktionen werden nicht erklärt, aber Sie können sie durch Kommentare oder wörtliche Bedeutungen verstehen

#include <Windows.h>  
#include <stdio.h>  
#include <TlHelp32.h>  
  
int main()  
{  
    HANDLE hProceessnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);  
    if (hProceessnap == INVALID_HANDLE_VALUE)  
    {  
        printf_s("创建进行快照失败\n");  
        return -1;  
    }  
    else  
    {  
        PROCESSENTRY32 pe32;  
        pe32.dwSize = sizeof(pe32);  
        BOOL hProcess = Process32First(hProceessnap, &pe32);  
        char buff[1024];  
        while (hProcess)  
        {  
            wsprintf(buff, "进程名:%s--------------------进程ID:%d", pe32.szExeFile, pe32.th32ParentProcessID);  
            printf_s("%s\n", buff);  
            memset(buff, 0x00, 1024);  
            hProcess = Process32Next(hProceessnap, &pe32);  
        }  
    }  
    CloseHandle(hProceessnap);  
  
    return 0;  
}

Die laufenden Ergebnisse sind wie folgt


Kleines C/C++-Tool zum Durchlaufen von Prozessen und Prozess-IDs

Das Obige ist der Inhalt des C/C++-Gadgets zum Durchlaufen von Prozessen und Prozess-IDs. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php. cn)!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn