遍历某一进程模块

#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;

}

 

posted @ 2020-06-05 13:57  OneTrainee  阅读(605)  评论(0编辑  收藏  举报