MCPcopy Create free account
hub / github.com/SickleSec/GhostWolf / GetRemoteModuleBaseAddress

Function GetRemoteModuleBaseAddress

Ghostwolf/Process.cpp:250–283  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

248 return FALSE;
249}
250BOOL GetRemoteModuleBaseAddress(HANDLE hProcess, const wchar_t* moduleName, uintptr_t& baseAddress, DWORD* moduleSize) {
251
252 DWORD szModules = sizeof(HMODULE) * 1024;
253 HMODULE* hModules = (HMODULE*)malloc(szModules);
254 DWORD cbNeeded;
255
256 if (hModules == 0 || !EnumProcessModulesEx(hProcess, hModules, szModules, &cbNeeded, LIST_MODULES_ALL)) {
257 PRINT("EnumProcessModulesEx failed");
258 free(hModules);
259 return FALSE;
260 }
261
262 for (int i = 0; i < (cbNeeded / sizeof(HMODULE)); ++i) {
263 wchar_t szModuleName[MAX_PATH];
264 if (GetModuleBaseName(hProcess, hModules[i], szModuleName, sizeof(szModuleName) / sizeof(wchar_t)) == 0) {
265 PRINT("GetModuleBaseName failed");
266 continue;
267 }
268 if (_wcsicmp(szModuleName, moduleName) == 0) {
269 MODULEINFO moduleInfo;
270 if (!GetModuleInformation(hProcess, hModules[i], &moduleInfo, sizeof(moduleInfo))) {
271 PRINT("GetModuleInformation failed");
272 free(hModules);
273 return FALSE;
274 }
275 baseAddress = reinterpret_cast<uintptr_t>(moduleInfo.lpBaseOfDll);
276 *moduleSize = moduleInfo.SizeOfImage;
277 free(hModules);
278 return TRUE;
279 }
280 }
281 free(hModules);
282 return FALSE;
283}

Callers 1

mainFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected