extern "C" HMODULE __stdcall track_LoadLibraryA(LPCSTR file) { uintptr_t loc = (uintptr_t)_ReturnAddress(); DllTrackInfo* pInfo = tracker_get_dlltrackinfo(loc); char* path = NULL; if (pInfo) path = pInfo->pDll->GetFileName(); HMODULE hHandle = dllLoadLibraryExtended(file, path); tracker_library_track(loc, hHandle); return hHandle; }
extern "C" HMODULE __stdcall dllLoadLibraryExExtended(LPCSTR lpLibFileName, HANDLE hFile, DWORD dwFlags, LPCSTR sourcedll) { char strFlags[512]; strFlags[0] = '\0'; if (dwFlags & DONT_RESOLVE_DLL_REFERENCES) strcat(strFlags, "\n - DONT_RESOLVE_DLL_REFERENCES"); if (dwFlags & LOAD_IGNORE_CODE_AUTHZ_LEVEL) strcat(strFlags, "\n - LOAD_IGNORE_CODE_AUTHZ_LEVEL"); if (dwFlags & LOAD_LIBRARY_AS_DATAFILE) strcat(strFlags, "\n - LOAD_LIBRARY_AS_DATAFILE"); if (dwFlags & LOAD_WITH_ALTERED_SEARCH_PATH) strcat(strFlags, "\n - LOAD_WITH_ALTERED_SEARCH_PATH"); CLog::Log(LOGDEBUG, "LoadLibraryExA called with flags: %s", strFlags); return dllLoadLibraryExtended(lpLibFileName, sourcedll); }
extern "C" HMODULE __stdcall dllLoadLibraryA(LPCSTR file) { return dllLoadLibraryExtended(file, NULL); }