Home Backend Development C#.Net Tutorial C/C++ small tool for traversing processes and process IDs

C/C++ small tool for traversing processes and process IDs

Jan 22, 2017 pm 02:06 PM
c/c++

When we write some destructive programs, we need to traverse the process and extract the ID

For the above functions, we first introduce several APIs


1.CreateToolhelp32Snapshout function

Get a snapshot of a process, module or thread

The syntax is as follows:

HANDLE WINAPI CreateToolhelp32Snapshot(  
  _In_ DWORD dwFlags,  
  _In_ DWORD th32ProcessID  
);
Copy after login

The first parameter: the snapshot contains part of the system , the parameters are as follows:

C/C++ small tool for traversing processes and process IDs


C/C++ small tool for traversing processes and process IDs

#We use TH32CS_SNAPPROCESS

snapshot included here All processes in the system.


The second one is about the PROCESSENTRY32 structure

The syntax is as follows:

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;
Copy after login

This describes an entry, which is used as a snapshot When called, the process in the system address space is read.


Only szExeFile[MAX_PATH] and

th32ParentProcessID are introduced here: This is the identity of the process (parent process) after the process is created


szExeFile: The name of the executable file in the process



The following is the source code! Some functions are not explained, but you can understand them through comments or literal meaning

#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;  
}
Copy after login
The running results are as follows


C/C++ small tool for traversing processes and process IDs

##The above is the content of the C/C++ gadget for traversing processes and process IDs. For more related content, please pay attention to the PHP Chinese website (www.php.cn)!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

What are the differences between php and c# What are the differences between php and c# Jun 02, 2023 pm 01:45 PM

The differences between php and c# are: 1. The language type system is different, PHP is dynamic, while C# is static type; 2. The platforms used are different, PHP can be cross-platform, while C# is exclusive to Windows; 3. The programming paradigm is different, PHP It supports object-oriented, procedural and functional programming, and C# is more inclined to object-oriented programming; 4. The execution speed is different, PHP is faster, and C# is relatively slow; 5. The application scenarios are different, PHP is used in web development, servers, etc. C# is used for Windows desktop and web applications.

Why in C/C++, the sizeof of the structure is not equal to the sum of the sizeof of each member? Why in C/C++, the sizeof of the structure is not equal to the sum of the sizeof of each member? Aug 26, 2023 am 09:29 AM

The size of the structure type elements obtained by sizeof() is not always equal to the size of each individual member. Sometimes the compiler adds some padding to avoid alignment problems. So dimensions may change. Padding is added when a structure member is followed by a member of larger size or is at the end of the structure. Different compilers have different types of alignment constraints. In the C standard, total alignment structures are implementation dependent. Case 1 In this case, the double z is 8 bytes long, which is larger than x (4 bytes)). So another 4 bytes of padding are added. Additionally, the short type data y has 2 bytes of space in memory, so an extra 6 bytes are added as padding. Sample code #include<stdio.h>structmyS

Create a C/C++ code formatting tool using Clang tool Create a C/C++ code formatting tool using Clang tool Aug 26, 2023 pm 01:09 PM

In this tutorial, we willdiscussingaprogramtocreateaC/C++codeformattingtoolwiththehelpofclangtools.SETUPsudoaptinstallpythonsudoaptinstallclang-format-3.5 We will then create a Python file in a location where the current user has read and write permissions. Example importoscpp_extensions=(".cxx",".cpp&

In C/C++, there are two operations: pre-increment and post-increment. In C/C++, there are two operations: pre-increment and post-increment. Aug 25, 2023 pm 02:25 PM

Here we take a look at what are pre-increment and post-increment in C or C++. Both pre-increment and post-increment are increment operators. But there is little difference between them. The pre-increment operator first increments the value of a variable and then assigns it to other variables, but in the case of post-increment operator, it first assigns to a variable and then increments the value. Example #include<iostream>usingnamespacestd;main(){ intx,y,z; x=10; y=10;&nb

One article explains in detail vscode configuration C/C++ running environment [nanny-level teaching] One article explains in detail vscode configuration C/C++ running environment [nanny-level teaching] Feb 27, 2023 pm 07:33 PM

How to develop C/C++ in VScode? How to configure the C/C++ environment? The following article will share with you the VScode configuration C/C++ running environment tutorial (nanny-level teaching). I hope it will be helpful to you!

In C/C++, the strcpy() function is a function used to copy one string to another string In C/C++, the strcpy() function is a function used to copy one string to another string Sep 09, 2023 am 08:49 AM

The function strcpy() is a standard library function. It is used to copy one string to another string. In C language, it is declared in the "string.h" header file, while in C++ language, it is declared in the cstring header file. It returns a pointer to the destination. This is the syntax of strcpy() in C language, char*strcpy(char*dest,constchar*src); some key points of strcpy(). It copies the entire string into the target string. It replaces the entire string instead of appending it. It does not change the source string. The following is an example of strcpy() in C language: Example Online Demo#in

C/C++ program to calculate the number of trailing zeros in the factorial of a number C/C++ program to calculate the number of trailing zeros in the factorial of a number Aug 29, 2023 pm 12:29 PM

Here we will see how to calculate the number of trailing zeros in the factorial result of any number. Therefore, if n=5, then 5! =120. There is only one trailing 0. For 20!, it would be 4 zeros as 20!=2432902008176640000. The simplest way is to calculate the factorial and count 0. But for larger values ​​of n, this approach fails. So we're going to take another approach. If the prime factors are 2 and 5, then trailing zeros will appear. If we calculate 2 and 5, we can get the result. To do this we will follow this rule. Trailing 0 = Counting algorithm for 5 in factorial (n) prime factors countTrailingZeros(n)begin &

In C/C++, the putwchar() function is a function used to output a wide character In C/C++, the putwchar() function is a function used to output a wide character Sep 11, 2023 pm 05:57 PM

In this article, we will discuss the working principle, syntax and examples of putwchar() function in C++STL. What is putwchar()? The putwchar() function is a built-in function in C++STL, which is defined in the <cwchar> header file. The putwchar() function is used to write wide characters on the standard output device. This function takes the wide character from the argument and writes it to the system's stdout or standard output. This function is the wide character version of putchar(), which is defined in the <cstdio> header file. Syntax putwchar(wchar_twidec); Parameters This function accepts the following parameters

See all articles