GENERATE_INTERCEPT_HEADER(LoadLibraryExA, HMODULE, WINAPI, _In_ LPCSTR lpLibFileName, _Reserved_ HANDLE hFile, _In_ DWORD dwFlags) { SDLOG(2, "DetouredLoadLibraryExA %s\n", lpLibFileName); string fn(lpLibFileName); if(fn.find("GeDoSaTo") != fn.npos) return GetCurrentModule(); // find out why we need this HMODULE mod = TrueLoadLibraryExA(lpLibFileName, hFile, dwFlags); // restart detour in case we missed anything if(mod) restartDetour(lpLibFileName); return mod; }
HMODULE WINAPI HookLL::HookLoadLibraryExA(LPCSTR lpLibFileName, HANDLE hFile, DWORD dwFlags) { if (!InputHookManager::Get().GetInputHook().GetState(InputHook::HOOK_LL)) return TrueLoadLibraryExA(lpLibFileName, hFile, dwFlags); if (SelfCheckA(lpLibFileName)) { PrintLog("LoadLibraryExA"); InputHookManager::Get().GetInputHook().StartTimeoutThread(); std::string path; if (ModulePath(&path, InputHookManager::Get().GetInputHook().GetEmulator())) return TrueLoadLibraryExA(path.c_str(), hFile, dwFlags); else return TrueLoadLibraryExA(lpLibFileName, hFile, dwFlags); } return TrueLoadLibraryExA(lpLibFileName, hFile, dwFlags); }