Heim >Backend-Entwicklung >C#.Net-Tutorial >Kleines C/C++-Tool zum Durchlaufen von Prozessen und Prozess-IDs
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:
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
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)!