/// <summary>
/// 获取模块地址
/// </summary>
/// <param name="pid">进程PID</param>
/// <param name="ModuleName">模块名称</param>
/// <param name="StartAddress">开始地址</param>
/// <param name="EndAddress">结束地址</param>
/// <returns></returns>
BOOL ModuleAddress(DWORD pid, wchar_t* ModuleName, QWORD& StartAddress, QWORD& EndAddress)
{
MODULEENTRY32 me32;//模块结构信息//#include <tlhelp32.h>
me32.dwSize = sizeof(MODULEENTRY32);
HANDLE handle = ::CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pid);
if (INVALID_HANDLE_VALUE == handle)
{
return FALSE;
}
BOOL ret = ::Module32First(handle, &me32);
while (ret)
{
if (wcscmp(me32.szModule, ModuleName) == 0)
{
StartAddress = (QWORD)me32.modBaseAddr;
EndAddress = StartAddress + me32.modBaseSize;
CloseHandle(handle);
return TRUE;
}
ret = ::Module32Next(handle, &me32);
}
CloseHandle(handle);
return FALSE;
}