文章详情
C++通过进程pid获取指定模块地址与大小
Posted on 2016-02-29 10:05:01 by 主打一个C++
//取模块句柄/自身8664位程序通用
LONGLONG GetModuleBaseAddress(DWORD pid, const wchar_t* modName, DWORD* _modSize = nullptr)
{
uintptr_t modBaseAddr = 0;
HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32, pid);
if (hSnap != INVALID_HANDLE_VALUE)
{
MODULEENTRY32 modEntry;
modEntry.dwSize = sizeof(modEntry);
if (Module32First(hSnap, &modEntry))
{
do
{
if (!_wcsicmp(modEntry.szModule, modName))
{
if (_modSize)
*_modSize = modEntry.modBaseSize;
modBaseAddr = (LONGLONG)modEntry.modBaseAddr;
break;
}
} while (Module32Next(hSnap, &modEntry));
}
}
CloseHandle(hSnap);
return modBaseAddr;
}
*转载请注明出处:原文链接:https://cpp.vin/page/74.html