Decouple URL hooks from force_http

Signed-off-by: Sean Du <do4suki@gmail.com>
This commit is contained in:
2026-06-23 20:51:38 +08:00
parent 983d5c959f
commit a90d2ed352
+13 -8
View File
@@ -350,22 +350,23 @@ namespace {
apply_custom_preference_url_overrides(true); apply_custom_preference_url_overrides(true);
} }
if (!urls.force_http) { uintptr_t get_scheme_type_addr = 0;
InterlockedExchange(&g_hook_installed, 1); uintptr_t cp_set_scheme_mode_addr = 0;
hook_log("[cgss-dmm-hook] force_http disabled, keeping original scheme"); if (urls.force_http) {
return; get_scheme_type_addr = il2cpp_symbols::get_method_pointer(
}
auto get_scheme_type_addr = il2cpp_symbols::get_method_pointer(
"Assembly-CSharp.dll", "Stage", "NetworkUtil", "GetSchemeType", 0 "Assembly-CSharp.dll", "Stage", "NetworkUtil", "GetSchemeType", 0
); );
if (!get_scheme_type_addr) { if (!get_scheme_type_addr) {
hook_log("[cgss-dmm-hook] failed to resolve Stage.NetworkUtil.GetSchemeType"); hook_log("[cgss-dmm-hook] failed to resolve Stage.NetworkUtil.GetSchemeType");
return; return;
} }
auto cp_set_scheme_mode_addr = il2cpp_symbols::get_method_pointer( cp_set_scheme_mode_addr = il2cpp_symbols::get_method_pointer(
"Assembly-CSharp.dll", "Cute", "CustomPreference", "SetScemeMode", 1 "Assembly-CSharp.dll", "Cute", "CustomPreference", "SetScemeMode", 1
); );
} else {
hook_log("[cgss-dmm-hook] force_http disabled, keeping original scheme");
}
auto get_application_server_url_addr = il2cpp_symbols::get_method_pointer( auto get_application_server_url_addr = il2cpp_symbols::get_method_pointer(
"Assembly-CSharp.dll", "Stage", "NetworkUtil", "GetApplicationServerUrl", 0 "Assembly-CSharp.dll", "Stage", "NetworkUtil", "GetApplicationServerUrl", 0
); );
@@ -409,6 +410,7 @@ namespace {
return; return;
} }
if (urls.force_http) {
auto create_status = MH_CreateHook( auto create_status = MH_CreateHook(
reinterpret_cast<void*>(get_scheme_type_addr), reinterpret_cast<void*>(get_scheme_type_addr),
reinterpret_cast<void*>(&get_scheme_type_hook), reinterpret_cast<void*>(&get_scheme_type_hook),
@@ -424,6 +426,7 @@ namespace {
hook_log("[cgss-dmm-hook] MH_EnableHook failed"); hook_log("[cgss-dmm-hook] MH_EnableHook failed");
return; return;
} }
}
auto hook_method = [](uintptr_t address, void* detour, void** original, const char* name) { auto hook_method = [](uintptr_t address, void* detour, void** original, const char* name) {
if (!address) { if (!address) {
@@ -529,8 +532,10 @@ namespace {
} }
InterlockedExchange(&g_hook_installed, 1); InterlockedExchange(&g_hook_installed, 1);
if (urls.force_http) {
hook_log("[cgss-dmm-hook] hooked Stage.NetworkUtil.GetSchemeType"); hook_log("[cgss-dmm-hook] hooked Stage.NetworkUtil.GetSchemeType");
} }
}
DWORD WINAPI init_thread(void*) { DWORD WINAPI init_thread(void*) {
for (int i = 0; i < kHookPollMaxAttempts; ++i) { for (int i = 0; i < kHookPollMaxAttempts; ++i) {