一、Ring3层方法总结

  1)利用Createtoolhelp32Snapshot

    Createtoolhelp32Snapshot会返回当前进程的进程快照句柄  通过 Process32First 和 Process32Next枚举进程

 1 #include "stdafx.h"
 2 #include <Windows.h>
 3 #include <tlhelp32.h>
 4 
 5 int main()
 6 {
 7     //创建快照句柄,CreateToolhelp32Snapshot()函数返回当前运行的进程快照句柄
 8     HANDLE ToolHelpHandle = NULL;
 9 
10     //PROCESSENTRY32结构体记录当前进程的一些信息,其中dwSize必须指定大小,大小为当前结构体大小
11     PROCESSENTRY32 ProcessEntry32 = { 0 };
12     ProcessEntry32.dwSize = sizeof(PROCESSENTRY32);
13     
14     ToolHelpHandle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
15     if (ToolHelpHandle == INVALID_HANDLE_VALUE)
16     {
17         return FALSE;
18     }
19     
20     BOOL bOk = Process32First(ToolHelpHandle, &ProcessEntry32);
21     while (bOk)
22     {
23         printf("PID:\t0x%X,", ProcessEntry32.th32ProcessID);
24         printf("\tName:\t%S\r\n", ProcessEntry32.szExeFile);
25         bOk = Process32Next(ToolHelpHandle, &ProcessEntry32);
26     }
27 
28     CloseHandle(ToolHelpHandle);
29     ToolHelpHandle = INVALID_HANDLE_VALUE;
30     return 0;
31 }
View Code

相关文章: