From 51f3b07acfa3e65f173ea1f767ff2c8c23868d11 Mon Sep 17 00:00:00 2001 From: icex2 Date: Thu, 15 Aug 2024 13:24:43 +0200 Subject: [PATCH] feat: Add missing cleanup functions various iidx hook modules Summary: Test Plan: --- src/main/hooklib/acp.c | 8 +++++++- src/main/hooklib/acp.h | 2 ++ src/main/hooklib/adapter.c | 10 ++++++++++ src/main/hooklib/adapter.h | 2 ++ src/main/hooklib/setupapi.c | 11 +++++++++++ src/main/hooklib/setupapi.h | 2 ++ src/main/iidxhook-util/clock.c | 8 ++++++++ src/main/iidxhook-util/clock.h | 2 ++ src/main/iidxhook-util/eamuse.c | 8 ++++++++ src/main/iidxhook-util/eamuse.h | 2 ++ src/main/iidxhook-util/effector.c | 8 ++++++++ src/main/iidxhook-util/effector.h | 2 ++ src/main/iidxhook-util/settings.c | 8 ++++++++ src/main/iidxhook-util/settings.h | 2 ++ src/main/iidxhook1/ezusb-mon.c | 7 +++++++ src/main/iidxhook1/ezusb-mon.h | 2 ++ src/main/iidxhook1/log-ezusb.c | 8 ++++++++ src/main/iidxhook1/log-ezusb.h | 2 ++ 18 files changed, 93 insertions(+), 1 deletion(-) diff --git a/src/main/hooklib/acp.c b/src/main/hooklib/acp.c index 1729a2c..ecf4e40 100644 --- a/src/main/hooklib/acp.c +++ b/src/main/hooklib/acp.c @@ -64,5 +64,11 @@ static NTSTATUS NTAPI my_RtlMultiByteToUnicodeN( void acp_hook_init(void) { hook_table_apply(NULL, "ntdll.dll", acp_hook_syms, lengthof(acp_hook_syms)); - log_info("ACP Hook enabled"); + log_info("Inserted ACP hook"); +} + +void acp_hook_fini() +{ + hook_table_revert(NULL, "ntdll.dll", acp_hook_syms, lengthof(acp_hook_syms)); + log_info("Removed ACP hook"); } diff --git a/src/main/hooklib/acp.h b/src/main/hooklib/acp.h index b429996..85a993f 100644 --- a/src/main/hooklib/acp.h +++ b/src/main/hooklib/acp.h @@ -3,4 +3,6 @@ void acp_hook_init(void); +void acp_hook_fini(); + #endif diff --git a/src/main/hooklib/adapter.c b/src/main/hooklib/adapter.c index 2fe1466..cfdeb40 100644 --- a/src/main/hooklib/adapter.c +++ b/src/main/hooklib/adapter.c @@ -117,6 +117,16 @@ void adapter_hook_init(void) { hook_table_apply( NULL, "iphlpapi.dll", adapter_hook_syms, lengthof(adapter_hook_syms)); + + log_info("Inserted adapter hooks"); +} + +void adapter_hook_fini() +{ + hook_table_revert( + NULL, "iphlpapi.dll", adapter_hook_syms, lengthof(adapter_hook_syms)); + + log_info("Removed adapter hooks"); } void adapter_hook_override(const char *adapter_address) diff --git a/src/main/hooklib/adapter.h b/src/main/hooklib/adapter.h index 3f5e5da..23d7849 100644 --- a/src/main/hooklib/adapter.h +++ b/src/main/hooklib/adapter.h @@ -7,6 +7,8 @@ */ void adapter_hook_init(void); +void adapter_hook_fini(); + /** * Uses the provided address to try and match a network adapter. * This adapter is then returned as the only adapter. diff --git a/src/main/hooklib/setupapi.c b/src/main/hooklib/setupapi.c index 4239d62..5aee210 100644 --- a/src/main/hooklib/setupapi.c +++ b/src/main/hooklib/setupapi.c @@ -361,3 +361,14 @@ void hook_setupapi_init(const struct hook_setupapi_data *data) log_info( "Hooked setupapi for %s, %s", data->device_path, data->device_desc); } + +void hook_setupapi_fini() +{ + hook_table_revert( + NULL, "setupapi.dll", setupapi_hook_syms, lengthof(setupapi_hook_syms)); + + log_info( + "Removed hooks setupapi for %s, %s", hook_setupapi_data->device_path, hook_setupapi_data->device_desc); + + hook_setupapi_data = NULL; +} \ No newline at end of file diff --git a/src/main/hooklib/setupapi.h b/src/main/hooklib/setupapi.h index 9ebc4fa..4053d48 100644 --- a/src/main/hooklib/setupapi.h +++ b/src/main/hooklib/setupapi.h @@ -15,4 +15,6 @@ struct hook_setupapi_data { void hook_setupapi_init(const struct hook_setupapi_data *data); +void hook_setupapi_fini(); + #endif diff --git a/src/main/iidxhook-util/clock.c b/src/main/iidxhook-util/clock.c index 3a9399b..f3cec62 100644 --- a/src/main/iidxhook-util/clock.c +++ b/src/main/iidxhook-util/clock.c @@ -31,3 +31,11 @@ void iidxhook_util_clock_hook_init(void) log_info("Inserted clock hooks"); } + +void iidxhook_util_clock_hook_fini() +{ + hook_table_revert( + NULL, "kernel32.dll", clock_hook_syms, lengthof(clock_hook_syms)); + + log_info("Removed clock hooks"); +} diff --git a/src/main/iidxhook-util/clock.h b/src/main/iidxhook-util/clock.h index 28c08e5..7e3c57a 100644 --- a/src/main/iidxhook-util/clock.h +++ b/src/main/iidxhook-util/clock.h @@ -8,4 +8,6 @@ */ void iidxhook_util_clock_hook_init(void); +void iidxhook_util_clock_hook_fini(); + #endif diff --git a/src/main/iidxhook-util/eamuse.c b/src/main/iidxhook-util/eamuse.c index 3105a18..7b58c8d 100644 --- a/src/main/iidxhook-util/eamuse.c +++ b/src/main/iidxhook-util/eamuse.c @@ -120,6 +120,14 @@ void eamuse_hook_init(void) log_info("Inserted eamuse hooks"); } +void eamuse_hook_fini() +{ + hook_table_revert( + NULL, "ws2_32.dll", eamuse_hook_syms, lengthof(eamuse_hook_syms)); + + log_info("Removed eamuse hooks"); +} + void eamuse_set_addr(const struct net_addr *addr) { char *tmp_str; diff --git a/src/main/iidxhook-util/eamuse.h b/src/main/iidxhook-util/eamuse.h index 111ffe3..3bbec85 100644 --- a/src/main/iidxhook-util/eamuse.h +++ b/src/main/iidxhook-util/eamuse.h @@ -9,6 +9,8 @@ */ void eamuse_hook_init(void); +void eamuse_hook_fini(); + /** * Set a net_addr to a eamuse server for the game to connect to. * diff --git a/src/main/iidxhook-util/effector.c b/src/main/iidxhook-util/effector.c index 442e582..a6e4179 100644 --- a/src/main/iidxhook-util/effector.c +++ b/src/main/iidxhook-util/effector.c @@ -81,3 +81,11 @@ void effector_hook_init(void) log_info("Inserted rteffect hooks"); } + +void effector_hook_fini() +{ + hook_table_revert( + NULL, "rteffect.dll", effector_hook_syms, lengthof(effector_hook_syms)); + + log_info("Removed rteffect hooks"); +} \ No newline at end of file diff --git a/src/main/iidxhook-util/effector.h b/src/main/iidxhook-util/effector.h index 4a9592e..473f344 100644 --- a/src/main/iidxhook-util/effector.h +++ b/src/main/iidxhook-util/effector.h @@ -8,4 +8,6 @@ */ void effector_hook_init(void); +void effector_hook_fini(); + #endif diff --git a/src/main/iidxhook-util/settings.c b/src/main/iidxhook-util/settings.c index dce5013..9dab10d 100644 --- a/src/main/iidxhook-util/settings.c +++ b/src/main/iidxhook-util/settings.c @@ -100,6 +100,14 @@ void settings_hook_init(void) log_info("Inserted settings hooks, settings path: %s", settings_path); } +void settings_hook_fini() +{ + hook_table_revert( + NULL, "kernel32.dll", settings_hook_syms, lengthof(settings_hook_syms)); + + log_info("Removed settings hooks for settings path: %s", settings_path); +} + void settings_hook_set_path(const char *path) { size_t len; diff --git a/src/main/iidxhook-util/settings.h b/src/main/iidxhook-util/settings.h index d95d090..0f71391 100644 --- a/src/main/iidxhook-util/settings.h +++ b/src/main/iidxhook-util/settings.h @@ -12,6 +12,8 @@ */ void settings_hook_init(void); +void settings_hook_fini(); + /** * Change the path where settings file are stored. * diff --git a/src/main/iidxhook1/ezusb-mon.c b/src/main/iidxhook1/ezusb-mon.c index 3b78689..d13f150 100644 --- a/src/main/iidxhook1/ezusb-mon.c +++ b/src/main/iidxhook1/ezusb-mon.c @@ -232,3 +232,10 @@ void ezusb_mon_hook_init(void) log_info("Inserted ezusb mon hooks"); } + +void ezusb_mon_hook_fini() +{ + hook_table_revert(NULL, "ezusb.dll", ezusb_mon_hook_syms, lengthof(ezusb_mon_hook_syms)); + + log_info("Removed ezusb mon hooks"); +} \ No newline at end of file diff --git a/src/main/iidxhook1/ezusb-mon.h b/src/main/iidxhook1/ezusb-mon.h index 31a3340..be052eb 100644 --- a/src/main/iidxhook1/ezusb-mon.h +++ b/src/main/iidxhook1/ezusb-mon.h @@ -9,4 +9,6 @@ */ void ezusb_mon_hook_init(void); +void ezusb_mon_hook_fini(); + #endif diff --git a/src/main/iidxhook1/log-ezusb.c b/src/main/iidxhook1/log-ezusb.c index 8533683..9f0b052 100644 --- a/src/main/iidxhook1/log-ezusb.c +++ b/src/main/iidxhook1/log-ezusb.c @@ -49,3 +49,11 @@ void ezusb_log_hook_init(void) log_info("Inserted ezusb log hooks"); } + +void ezusb_log_hook_fini() +{ + hook_table_revert( + NULL, "user32.dll", ezusb_log_hook_syms, lengthof(ezusb_log_hook_syms)); + + log_info("Removed ezusb log hooks"); +} \ No newline at end of file diff --git a/src/main/iidxhook1/log-ezusb.h b/src/main/iidxhook1/log-ezusb.h index 1aa5ec6..565bf73 100644 --- a/src/main/iidxhook1/log-ezusb.h +++ b/src/main/iidxhook1/log-ezusb.h @@ -7,4 +7,6 @@ */ void ezusb_log_hook_init(void); +void ezusb_log_hook_fini(); + #endif