Bonjour, aujourd'hui je compte vous apprendre à créer une console, qui va suspendre un process, ainsi que le résumer, bonne lecture.
Suspendre un process
Je vais utiliser Typedef pour faciliter mon code au plus possible
Je définis la fonction pour avoir le PID d'un process
Maintenant notre fonction principal
Resumer un process
On refait le même code en remplaçant Suspend par Resume
Suspendre un process
Je vais utiliser Typedef pour faciliter mon code au plus possible
PHP:
#include <windows.h>
#include <tlhelp32.h>
typedef DWORD(NTAPI *_ZwSuspendProcess)(HANDLE hProcess);
Je définis la fonction pour avoir le PID d'un process
PHP:
DWORD GetPidByName(char* szProcess)
{
HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
PROCESSENTRY32 PE;
PE.dwSize = sizeof(PE) ;
Process32First(hSnap, &PE);
while (Process32Next(hSnap, &PE))
{
char Converted[100] = "\0";
wcstombs(Converted, PE.szExeFile, sizeof(Converted));
if (strcmp(Converted, szProcess) == 0)
{
return PE.th32ProcessID;
}
}
return 0;
}
Maintenant notre fonction principal
PHP:
int main(int argc, CHAR* argv[])
{
SetConsoleTitleA("Tutoriel pour suspendre un process");
DWORD PID = GetPidByName("Process.exe"); /Modifiez Process.exe par le nom de votre process
if (PID == 0)
{
system("PAUSE");
return 0;
}
else
{
_ZwSuspendProcess ZwSuspendProcess = (_ZwSuspendProcess)GetProcAddress(GetModuleHandleA("ntdll.dll"), "ZwSuspendProcess");
HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, PID);
ZwSuspendProcess(hProc);
}
}
Resumer un process
On refait le même code en remplaçant Suspend par Resume
PHP:
#include <windows.h>
#include <tlhelp32.h>
typedef DWORD(NTAPI *_ZwResumeProcess)(HANDLE hProcess);
DWORD GetPidByName(char* szProcess)
{
HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
PROCESSENTRY32 PE;
PE.dwSize = sizeof(PE) ;
Process32First(hSnap, &PE);
while (Process32Next(hSnap, &PE))
{
char Converted[100] = "\0";
wcstombs(Converted, PE.szExeFile, sizeof(Converted));
if (strcmp(Converted, szProcess) == 0)
{
return PE.th32ProcessID;
}
}
return 0;
}
int main(int argc, CHAR* argv[])
{
SetConsoleTitleA("Tutoriel pour suspendre un process");
DWORD PID = GetPidByName("Process.exe");
if (PID == 0)
{
system("PAUSE");
return 0;
}
else
{
_ZwResumeProcess ZwResumeProcess = (_ZwResumeProcess)GetProcAddress(GetModuleHandleA("ntdll.dll"), "ZwResumeProcess");
HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, PID);
ZwResumeProcess(hProc);
}
}
Attachments
Last edited: