From 4fedb2c6b21e806ace0161e2d4b31bbb81fbc008 Mon Sep 17 00:00:00 2001 From: Dethrace Labs <78985374+dethrace-labs@users.noreply.github.com> Date: Mon, 8 Sep 2025 12:07:01 +1200 Subject: [PATCH] EncodeFileWrapper effectively matching --- src/DETHRACE/common/utility.c | 58 ++++++++++++----------------------- src/DETHRACE/macros.h | 1 - 2 files changed, 19 insertions(+), 40 deletions(-) diff --git a/src/DETHRACE/common/utility.c b/src/DETHRACE/common/utility.c index d1f0a773..056896ed 100644 --- a/src/DETHRACE/common/utility.c +++ b/src/DETHRACE/common/utility.c @@ -1589,50 +1589,30 @@ void EncodeFile(char* pThe_path) { void EncodeFileWrapper(char* pThe_path) { int len; +#define STR_ENDS_WITH(haystack, haystack_len, needle) strcmp(haystack_len - sizeof(needle) + 1 + haystack, needle) + len = strlen(pThe_path); - // if file doesn't end in .txt, bail out - if (STR_ENDS_WITH(pThe_path, ".TXT") != 0) { - return; - } - if (STR_ENDS_WITH(pThe_path, "DKEYMAP0.TXT") == 0) { - return; - } - if (STR_ENDS_WITH(pThe_path, "DKEYMAP1.TXT") == 0) { - return; - } - if (STR_ENDS_WITH(pThe_path, "DKEYMAP2.TXT") == 0) { - return; - } - if (STR_ENDS_WITH(pThe_path, "DKEYMAP3.TXT") == 0) { - return; - } - if (STR_ENDS_WITH(pThe_path, "KEYMAP_0.TXT") == 0) { - return; - } - if (STR_ENDS_WITH(pThe_path, "KEYMAP_1.TXT") == 0) { - return; - } - if (STR_ENDS_WITH(pThe_path, "KEYMAP_2.TXT") == 0) { - return; - } - if (STR_ENDS_WITH(pThe_path, "KEYMAP_3.TXT") == 0) { - return; - } - if (STR_ENDS_WITH(pThe_path, "OPTIONS.TXT") == 0) { - return; - } - if (STR_ENDS_WITH(pThe_path, "KEYNAMES.TXT") == 0) { - return; - } - if (STR_ENDS_WITH(pThe_path, "KEYMAP.TXT") == 0) { - return; - } - if (STR_ENDS_WITH(pThe_path, "PATHS.TXT") == 0) { + if (STR_ENDS_WITH(pThe_path, len, ".TXT")) { return; } + if (STR_ENDS_WITH(pThe_path, len, "DKEYMAP0.TXT") + && STR_ENDS_WITH(pThe_path, len, "DKEYMAP1.TXT") + && STR_ENDS_WITH(pThe_path, len, "DKEYMAP2.TXT") + && STR_ENDS_WITH(pThe_path, len, "DKEYMAP3.TXT") + && STR_ENDS_WITH(pThe_path, len, "KEYMAP_0.TXT") + && STR_ENDS_WITH(pThe_path, len, "KEYMAP_1.TXT") + && STR_ENDS_WITH(pThe_path, len, "KEYMAP_2.TXT") + && STR_ENDS_WITH(pThe_path, len, "KEYMAP_3.TXT") + && STR_ENDS_WITH(pThe_path, len, "OPTIONS.TXT") + && STR_ENDS_WITH(pThe_path, len, "KEYNAMES.TXT") + && STR_ENDS_WITH(pThe_path, len, "KEYMAP.TXT")) { - EncodeFile(pThe_path); + if (!STR_ENDS_WITH(pThe_path, len, "PATHS.TXT")) { + return; + } + EncodeFile(pThe_path); + } } // IDA: void __usercall EncodeAllFilesInDirectory(char *pThe_path@) diff --git a/src/DETHRACE/macros.h b/src/DETHRACE/macros.h index 9ace8a26..2ff70345 100644 --- a/src/DETHRACE/macros.h +++ b/src/DETHRACE/macros.h @@ -13,7 +13,6 @@ #define SLOBYTE(x) (*((signed char*)&(x))) #define STR_STARTS_WITH(haystack, needle) strncmp(haystack, needle, strlen(needle)) -#define STR_ENDS_WITH(haystack, needle) strcmp(haystack + strlen(haystack) - strlen(needle), needle) #define MAX(a, b) ((a) > (b) ? (a) : (b)) #define MIN(a, b) ((a) < (b) ? (a) : (b))