diff --git a/hook/iohook.c b/hook/iohook.c index 6c26072..8aca2ea 100644 --- a/hook/iohook.c +++ b/hook/iohook.c @@ -229,11 +229,7 @@ static void iohook_init(void) /* Splice iohook into IAT entries referencing Win32 I/O APIs */ - hook_table_apply( - NULL, - "kernel32.dll", - iohook_kernel32_syms, - _countof(iohook_kernel32_syms)); + iohook_apply_hooks(NULL); /* Here be dragons: @@ -281,6 +277,15 @@ static void iohook_init(void) LeaveCriticalSection(&iohook_lock); } +void iohook_apply_hooks(HMODULE target) +{ + hook_table_apply( + target, + "kernel32.dll", + iohook_kernel32_syms, + _countof(iohook_kernel32_syms)); +} + // Deprecated HANDLE iohook_open_dummy_fd(void) { diff --git a/hook/iohook.h b/hook/iohook.h index 58bf642..0c1ec24 100644 --- a/hook/iohook.h +++ b/hook/iohook.h @@ -48,3 +48,4 @@ __attribute__((deprecated("Use iohook_open_nul_fd instead"))) HRESULT iohook_open_nul_fd(HANDLE *fd); HRESULT iohook_push_handler(iohook_fn_t fn); HRESULT iohook_invoke_next(struct irp *irp); +void iohook_apply_hooks(HMODULE target); diff --git a/hooklib/serial.c b/hooklib/serial.c index fc203a1..e57e44e 100644 --- a/hooklib/serial.c +++ b/hooklib/serial.c @@ -84,10 +84,14 @@ void serial_hook_init(void) return; } - hook_table_apply(NULL, "kernel32.dll", serial_syms, _countof(serial_syms)); + serial_hook_apply_hooks(NULL); serial_hook_initted = true; } +void serial_hook_apply_hooks(HMODULE target) { + hook_table_apply(target, "kernel32.dll", serial_syms, _countof(serial_syms)); +} + static BOOL WINAPI my_ClearCommError( HANDLE fd, uint32_t *errors, diff --git a/hooklib/serial.h b/hooklib/serial.h index 2551aa0..c027cbe 100644 --- a/hooklib/serial.h +++ b/hooklib/serial.h @@ -1,3 +1,4 @@ #pragma once void serial_hook_init(void); +void serial_hook_apply_hooks(HMODULE target);