函数-模块遍历

/// <summary>
/// 模块遍历
/// </summary>
/// <param name="dwProcessId">进程PID</param>
/// <returns></returns>
BOOL EnumProcessModule(DWORD dwProcessId)
{
    MODULEENTRY32 me32 = { 0 };
    me32.dwSize = sizeof(MODULEENTRY32);
    HANDLE hModuleSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwProcessId);    // 获取指定进程全部模块的快照
    if (INVALID_HANDLE_VALUE == hModuleSnap)
    {
        ShowError(L"CreateToolhelp32Snapshot");
        return FALSE;
    }
    BOOL bRet = ::Module32First(hModuleSnap, &me32);// 获取快照中第一条信息
    while (bRet)
    {
        printf("[%d]\t", me32.th32ProcessID);// 显示 Process ID
        printf("[0x%p]\t", me32.modBaseAddr);// 显示 模块加载基址
        printf("[%s]\n", me32.szModule);// 显示 模块名称
        bRet = ::Module32Next(hModuleSnap, &me32);    // 获取快照中下一条信息
    }
    ::CloseHandle(hModuleSnap);// 关闭句柄
    return TRUE;
}

 

posted @ 2021-12-27 17:21  梦之心  阅读(31)  评论(0编辑  收藏  举报