#include <iostream>
#include <Windows.h>
#include <TlHelp32.h>
#include <locale.h>
using namespace std;
// 遍历系统的进程模块
BOOL TraverseProcessModules(DWORD dwPid) {
HANDLE hModuleSnap = INVALID_HANDLE_VALUE;
MODULEENTRY32 me32 = { sizeof(MODULEENTRY32) };
// 创建一个快照句柄
hModuleSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwPid);
if (hModuleSnap == INVALID_HANDLE_VALUE)
return FALSE;
// 通过模块快照句柄获取第一个模块
if (!Module32First(hModuleSnap, &me32)) {
CloseHandle(hModuleSnap);
return FALSE;
}
// 循环获取模块信息
do {
printf("模块基地址:%x,模块大小:%x,模块名称:%s\n",
me32.modBaseAddr,
me32.modBaseSize,
me32.szModule);
} while (Module32Next(hModuleSnap, &me32));
// 关闭句柄并且退出函数
CloseHandle(hModuleSnap);
return TRUE;
}