diff --git a/game_payload/src/hi3.c b/game_payload/src/hi3.c index bcd43c3..e17a7bb 100644 --- a/game_payload/src/hi3.c +++ b/game_payload/src/hi3.c @@ -1,5 +1,7 @@ #include #include +#include +#include #include @@ -12,15 +14,18 @@ const char *HI3_TVM_SECTION_NAME = ".tvm0"; void hi3_fill_data(struct game_data *buf) { - // !!! TEMPORARY WORKAROUND FOR HI3 6.8.0 -> 6.9.0 - const uint32_t NEW_CHECKSUM = 0x885b4c63; - - uint32_t crc = utils_file_crc32c(L"UnityPlayer.dll"); - - if (crc == NEW_CHECKSUM) { + // !!! TEMPORARY WORKAROUND + // Name in exe matches name in base module + HMODULE exe = GetModuleHandleA(NULL); + if (pe_find_section(exe, HI3_TXS_SECTION_NAME_OLD)) { + // Old name + buf->txs_section_name = HI3_TXS_SECTION_NAME_OLD; + } else if (pe_find_section(exe, HI3_TXS_SECTION_NAME_NEW)) { + // New name buf->txs_section_name = HI3_TXS_SECTION_NAME_NEW; } else { - buf->txs_section_name = HI3_TXS_SECTION_NAME_OLD; + // This should not happen + msg_err_a("Could not determine region-specific section name. " ISSUE_SUFFIX); } buf->base_module_name = HI3_BASE_MODULE_NAME;