Windows API进程枚举技术
进程枚举的玩法真不少,尤其是在做系统工具或者搞安全的时候,这招还蛮实用的。用得最多的,还是 ToolHelp Library,像 CreateToolhelp32Snapshot
、Process32First
这些 API,用来扫进程或者模块都挺顺手。
简单说,就是先用 CreateToolhelp32Snapshot
抓个“快照”,配合 Process32Next
这类函数,一个个把进程列出来,响应也快,代码也不难写。
像下面这样:
HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
PROCESSENTRY32 pe32 = { sizeof(PROCESSENTRY32) };
if (Process32First(hSnap, &pe32)) {
do {
printf("%s\n", pe32.szExeFile);
} while (Process32Next(hSnap, &pe32));
}
除了 ToolHelp,你还可以玩玩 WMI,比如查 Win32_Process
,写起来偏重一点,但能拿到的东西更全。再进阶点,就是 PsAPI 和写内核驱动了,适合搞一些进程保护、反注入那一类的东西。
如果你是用 VB、C++、甚至 Python 做这类事儿,网上也有不少资料和源码,比如:
嗯,,如果你想搞点进程或者写个轻量的系统工具,这些 API 都挺值得上手玩玩的。
如果你是 Windows 平台的开发者,建议先从 ToolHelp 入门,熟了以后再试着接触 WMI 和 PsAPI,会更得心应手。
70KB
文件大小:
评论区