在指定的进程中查找特定DLL模块
1、概述
如题,代码你知道怎么写么
2、代码
#include <iostream>
#include <Windows.h>
#include <tlhelp32.h>
#include <Shlwapi.h>
#pragma comment(lib, "Shlwapi.lib")BOOL FindDllHModuleFromProcess(DWORD dwProcessId, const WCHAR* szDllName, HMODULE* phDll)
{if (dwProcessId == 0 || szDllName == NULL || phDll == NULL){return FALSE;}*phDll = NULL;BOOL bRet = FALSE;HANDLE h = INVALID_HANDLE_VALUE;MODULEENTRY32 me = { 0 };me.dwSize = sizeof(me);h = ::CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwProcessId);if (h == INVALID_HANDLE_VALUE){return FALSE;}if (::Module32First(h, &me)){do{if (::_wcsicmp(szDllName, ::PathFindFileNameW(me.szExePath)) == 0){*phDll = me.hModule;bRet = TRUE;break;}} while (::Module32Next(h, &me));}::CloseHandle(h);return bRet;
}int main()
{// 示例:在微信进程查找,Weixin.dllDWORD pid = 31248;HMODULE hDll = NULL;const WCHAR* dllName = L"Weixin.dll";BOOL b = FindDllHModuleFromProcess(pid, dllName, &hDll);if (b){std::cout << "成功找到 " << dllName << L",HMODULE = " << hDll << std::endl;}else{std::cout << "没找到 " << dllName << std::endl;}return 0;
}
学习链接:https://github.com/0voice