网站网页的收录数量,雪箭 wordpress 2.4主题下载,小说网站快速做排名,茂名专业网站建设文章目录 前言进程的遍历CreateToolhelp32SnapshotProcess32FirstProcess32Next进程遍历 总结 前言
各位师傅好#xff0c;我是qmx_07#xff0c;今天给大家讲解进程遍历的相关知识点
进程的遍历
快照#xff1a;使用vmware虚拟机的时候#xff0c;经常需要配置环境服务… 文章目录 前言进程的遍历CreateToolhelp32SnapshotProcess32FirstProcess32Next进程遍历 总结 前言
各位师傅好我是qmx_07今天给大家讲解进程遍历的相关知识点
进程的遍历
快照使用vmware虚拟机的时候经常需要配置环境服务拍照保存以防以后 环境崩溃又需要重新配置思路:进程遍历 通过快照的方式把当前系统的进程信息创建一份快照浏览相关信息.
CreateToolhelp32Snapshot
介绍:用于创建系统快照包含 进程、线程、模块相关信息需要引用tlhelp32.h
HANDLE CreateToolhelp32Snapshot([in] DWORD dwFlags,//保存快照的类型[in] DWORD th32ProcessID//创建快照的进程ID
);dwFlags 取值: TH32CS_SNAPPROCESS创建包含当前运行进程的快照。 TH32CS_SNAPTHREAD创建包含当前运行线程的快照。 TH32CS_SNAPMODULE创建包含当前加载模块的快照。 TH32CS_SNAPMODULE32创建包含当前加载模块的快照返回32位模块结构。 TH32CS_SNAPALL创建包含当前运行进程、线程和模块的快照。 th32ProcessID创建快照的进程ID0表示当前进程
通常用于获取系统中运行的进程和模块的信息例如获取进程列表、查找特定进程、遍历模块信息等。通过遍历系统快照可以获得进程、线程和模块的详细信息进而进行相应的操作和分析
Process32First
介绍:通过CreateToolhelp32Snapshot函数创建的进程快照中获取第一个进程的信息
BOOL Process32First([in] HANDLE hSnapshot,//快照句柄[in, out] LPPROCESSENTRY32 lppe//指向PROCESSENTRY32的指针用于接收进程的相关信息
);PROCESSENTRY32结构定义如下:
typedef struct tagPROCESSENTRY32 {DWORD dwSize;DWORD cntUsage;DWORD th32ProcessID;//进程IDULONG_PTR th32DefaultHeapID;DWORD th32ModuleID;//模块IDDWORD cntThreads;//线程数DWORD th32ParentProcessID;//父进程IDLONG pcPriClassBase;//进程优先级DWORD dwFlags;CHAR szExeFile[MAX_PATH];//进程名称
} PROCESSENTRY32;结构包含了进程的各种信息包括进程ID、父进程ID、线程数量、进程优先级等
Process32First函数通常与Process32Next函数一起使用用于遍历进程快照中的所有进程
Process32Next
介绍:通过CreateToolhelp32Snapshot函数创建的进程快照中获取下一个进程的信息
BOOL Process32Next([in] HANDLE hSnapshot,/快照句柄[out] LPPROCESSENTRY32 lppe//指向LPPROCESSENTRY32的指针
);注意:使用Process32Next函数之前必须先调用一次Process32First函数来获取第一个进程的信息
进程遍历
#include iostream
#include Windows.h
#include tlhelp32.h
#include stdio.husing namespace::std;int main()
{HANDLE hProcessSnap NULL;//创建获取进程的信息hProcessSnap CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);if (hProcessSnap INVALID_HANDLE_VALUE)return (FALSE);//结构体PROCESSENTRY32 pe32 { 0 };//填写结构体中的第一个成员pe32.dwSize sizeof(PROCESSENTRY32);if (Process32First(hProcessSnap, pe32)){//First成功之后进入循环 //循环的时候调一下next通过xxx拿一下进程的信息do{printf(pid:%d\t name:%s\r\n, pe32.th32ProcessID, pe32.szExeFile);} while (Process32Next(hProcessSnap, pe32));}CloseHandle(hProcessSnap);
}这边拿到的进程ID 基本与任务管理器一致但是HACKER Process能拿到更多包含内核的进程
总结
介绍了快照的基本概念CreateToolhelp32Snapshot创建快照LPPROCESSENTRY32结构以及ProcessFirst,ProcessNext遍历进程