If LoadLibrary is called with flags == 0 and module's loaded, do nothing

* In this case we don't have to rehook anything. Only if a new module
  is loaded should we do any work.
This commit is contained in:
baldurk
2015-10-06 00:52:44 +02:00
parent 78fc832722
commit 96b2368381
+12 -2
View File
@@ -310,22 +310,32 @@ static void HookAllModules()
HMODULE WINAPI Hooked_LoadLibraryExA(LPCSTR lpLibFileName, HANDLE fileHandle, DWORD flags)
{
bool dohook = true;
if(flags == 0 && GetModuleHandleA(lpLibFileName))
dohook = false;
// we can use the function naked, as when setting up the hook for LoadLibraryExA, our own module
// was excluded from IAT patching
HMODULE mod = LoadLibraryExA(lpLibFileName, fileHandle, flags);
HookAllModules();
if(dohook)
HookAllModules();
return mod;
}
HMODULE WINAPI Hooked_LoadLibraryExW(LPCWSTR lpLibFileName, HANDLE fileHandle, DWORD flags)
{
bool dohook = true;
if(flags == 0 && GetModuleHandleW(lpLibFileName))
dohook = false;
// we can use the function naked, as when setting up the hook for LoadLibraryExA, our own module
// was excluded from IAT patching
HMODULE mod = LoadLibraryExW(lpLibFileName, fileHandle, flags);
HookAllModules();
if(dohook)
HookAllModules();
return mod;
}