Windows API进程枚举技术

进程枚举的玩法真不少,尤其是在做系统工具或者搞安全的时候,这招还蛮实用的。用得最多的,还是 ToolHelp Library,像 CreateToolhelp32SnapshotProcess32First 这些 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,会更得心应手。

doc 文件大小:70KB