一、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 }