From d95423f5e6d88c2a5b56291cf9ccfed90c5be65c Mon Sep 17 00:00:00 2001 From: FunkyFr3sh Date: Sat, 4 Nov 2023 04:26:19 +0100 Subject: [PATCH] also check imported dlls for ddraw.dll import --- src/hook.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/hook.c b/src/hook.c index f101e72..a7a4b27 100644 --- a/src/hook.c +++ b/src/hook.c @@ -406,13 +406,14 @@ void hook_patch_iat_list(HMODULE hmod, BOOL unhook, HOOKLIST* hooks, BOOL is_loc } } -BOOL hook_got_ddraw_import() +BOOL hook_got_ddraw_import(HMODULE mod, BOOL check_imported_dlls) { + if (!mod) + return FALSE; + __try { - HMODULE hmod = GetModuleHandleA(NULL); - - PIMAGE_DOS_HEADER dos_header = (PIMAGE_DOS_HEADER)hmod; + PIMAGE_DOS_HEADER dos_header = (PIMAGE_DOS_HEADER)mod; if (dos_header->e_magic != IMAGE_DOS_SIGNATURE) return FALSE; @@ -441,6 +442,11 @@ BOOL hook_got_ddraw_import() if (first_thunk->u1.Function) return TRUE; } + else if (check_imported_dlls) + { + if (hook_got_ddraw_import(GetModuleHandleA(imp_module_name), FALSE)) + return TRUE; + } } import_desc++; @@ -596,7 +602,7 @@ void hook_init(BOOL initial_hook) { if (initial_hook) { - if (g_config.hook == 4 && hook_got_ddraw_import()) + if (g_config.hook == 4 && hook_got_ddraw_import(GetModuleHandleA(NULL), TRUE)) { /* Switch to 3 if we can be sure that ddraw.dll will not be unloaded from the process */ g_config.hook = 3;