From 7dc4cbadee3ea4534da23a03ba92cd087952b78f Mon Sep 17 00:00:00 2001 From: love-code-yeyixiao <188240888@qq.com> Date: Sun, 23 Jun 2024 12:04:36 +0800 Subject: [PATCH 01/15] Lanuage Spoof --- Sandboxie/core/dll/kernel.c | 267 +++++++++++++++++++++++++++++++++++- 1 file changed, 265 insertions(+), 2 deletions(-) diff --git a/Sandboxie/core/dll/kernel.c b/Sandboxie/core/dll/kernel.c index 62f4390b..d1f53dfe 100644 --- a/Sandboxie/core/dll/kernel.c +++ b/Sandboxie/core/dll/kernel.c @@ -48,7 +48,53 @@ typedef DWORD(*P_SleepEx)(DWORD dwMiSecond, BOOL bAlert); typedef BOOL (*P_QueryPerformanceCounter)(LARGE_INTEGER* lpPerformanceCount); +typedef LANGID (*P_GetUserDefaultUILanguage)(); +typedef int (*P_GetUserDefaultLocaleName)( + LPWSTR lpLocaleName, + int cchLocaleName +); + +typedef LCID (*P_GetUserDefaultLCID)(); + +typedef LANGID (*P_GetUserDefaultLangID)(); + +typedef int (*P_GetUserDefaultGeoName)( + LPWSTR geoName, + int geoNameCount +); + +typedef LANGID (*P_GetSystemDefaultUILanguage)(); + +typedef int (*P_GetSystemDefaultLocaleName)( + LPWSTR lpLocaleName, + int cchLocaleName +); + +typedef LCID (*P_GetSystemDefaultLCID)(); + +typedef LANGID (*P_GetSystemDefaultLangID)(); + +typedef int (*P_GetLocaleInfoEx)( + LPCWSTR lpLocaleName, + LCTYPE LCType, + LPWSTR lpLCData, + int cchData +); + +typedef int (*P_GetLocaleInfoA)( + LCID Locale, + LCTYPE LCType, + LPSTR lpLCData, + int cchData +); + +typedef int (*P_GetLocaleInfoW)( + LCID Locale, + LCTYPE LCType, + LPWSTR lpLCData, + int cchData +); //--------------------------------------------------------------------------- // Variables //--------------------------------------------------------------------------- @@ -68,6 +114,18 @@ P_GetTickCount64 __sys_GetTickCount64 = NULL; P_QueryUnbiasedInterruptTime __sys_QueryUnbiasedInterruptTime = NULL; P_QueryPerformanceCounter __sys_QueryPerformanceCounter = NULL; +P_GetUserDefaultUILanguage __sys_GetUserDefaultUILanguage = NULL; +P_GetUserDefaultLocaleName __sys_GetUserDefaultLocaleName = NULL; +P_GetUserDefaultLCID __sys_GetUserDefaultLCID = NULL; +P_GetUserDefaultLangID __sys_GetUserDefaultLangID = NULL; +P_GetUserDefaultGeoName __sys_GetUserDefaultGeoName = NULL; +P_GetSystemDefaultUILanguage __sys_GetSystemDefaultUILanguage = NULL; +P_GetSystemDefaultLocaleName __sys_GetSystemDefaultLocaleName = NULL; +P_GetSystemDefaultLCID __sys_GetSystemDefaultLCID = NULL; +P_GetSystemDefaultLangID __sys_GetSystemDefaultLangID = NULL; +P_GetLocaleInfoEx __sys_GetLocaleInfoEx = NULL; +P_GetLocaleInfoA __sys_GetLocaleInfoA = NULL; +P_GetLocaleInfoW __sys_GetLocaleInfoW = NULL; //--------------------------------------------------------------------------- // Functions @@ -91,6 +149,53 @@ static DWORD Kernel_SleepEx(DWORD dwMiSecond, BOOL bAlert); static BOOL Kernel_QueryPerformanceCounter(LARGE_INTEGER* lpPerformanceCount); +static LANGID(*P_GetUserDefaultUILanguage)(); + +static int Kernel_GetUserDefaultLocaleName( + LPWSTR lpLocaleName, + int cchLocaleName + ); + +static LCID Kernel_GetUserDefaultLCID(); + +static LANGID Kernel_GetUserDefaultLangID(); + +static int Kernel_GetUserDefaultGeoName( + LPWSTR geoName, + int geoNameCount + ); + +static LANGID Kernel_GetSystemDefaultUILanguage(); + +static int Kernel_GetSystemDefaultLocaleName( + LPWSTR lpLocaleName, + int cchLocaleName + ); + +static LCID Kernel_GetSystemDefaultLCID(); + +static LANGID Kernel_GetSystemDefaultLangID(); + +static int Kernel_GetLocaleInfoEx( + LPCWSTR lpLocaleName, + LCTYPE LCType, + LPWSTR lpLCData, + int cchData + ); + +static int Kernel_GetLocaleInfoA( + LCID Locale, + LCTYPE LCType, + LPSTR lpLCData, + int cchData + ); + +static int Kernel_GetLocaleInfoW( + LCID Locale, + LCTYPE LCType, + LPWSTR lpLCData, + int cchData + ); //--------------------------------------------------------------------------- // Kernel_Init @@ -151,7 +256,27 @@ _FX BOOLEAN Kernel_Init() //SBIEDLL_HOOK(Kernel_, Sleep); SBIEDLL_HOOK(Kernel_, SleepEx); } - + if (SbieApi_QueryConfBool(NULL, L"UseSpoofLocale", FALSE)) + { + SBIEDLL_HOOK(Kernel_, GetUserDefaultUILanguage); + P_GetUserDefaultLocaleName GetUserDefaultLocaleName = Ldr_GetProcAddrNew(Dll_Kernel32, L"GetUserDefaultLocaleName", "GetUserDefaultLocaleName"); + if (GetUserDefaultLocaleName) + SBIEDLL_HOOK(Kernel_, GetUserDefaultLocaleName); + SBIEDLL_HOOK(Kernel_, GetUserDefaultLCID); + SBIEDLL_HOOK(Kernel_, GetUserDefaultLangID); + SBIEDLL_HOOK(Kernel_, GetUserDefaultGeoName); + SBIEDLL_HOOK(Kernel_, GetSystemDefaultUILanguage); + P_GetSystemDefaultLocaleName GetSystemDefaultLocaleName = Ldr_GetProcAddrNew(Dll_Kernel32, L"GetSystemDefaultLocaleName", "GetSystemDefaultLocaleName"); + if (GetSystemDefaultLocaleName) + SBIEDLL_HOOK(Kernel_, GetSystemDefaultLocaleName); + SBIEDLL_HOOK(Kernel_, GetSystemDefaultLCID); + SBIEDLL_HOOK(Kernel_, GetSystemDefaultLangID); + /*SBIEDLL_HOOK(Kernel_, GetLocaleInfoA); + SBIEDLL_HOOK(Kernel_, GetLocaleInfoW); + P_GetLocaleInfoEx GetLocaleInfoEx = Ldr_GetProcAddrNew(Dll_Kernel32, L"GetLocaleInfoEx", "GetLocaleInfoEx"); + if (GetLocaleInfoEx) + SBIEDLL_HOOK(Kernel_, GetLocaleInfoEx);*/ + } return TRUE; } @@ -270,4 +395,142 @@ _FX BOOL Kernel_QueryPerformanceCounter(LARGE_INTEGER* lpPerformanceCount) if (add != 0 && low != 0) lpPerformanceCount->QuadPart = lpPerformanceCount->QuadPart * add / low; return rtn; -} \ No newline at end of file +} + +_FX LANGID GetUserDefaultUILanguage() { + return SbieApi_QueryConfNumber(NULL, L"FalseLCID", 1033); +} +typedef int (*LCIDToLocaleName)( + LCID Locale, + LPWSTR lpName, + int cchName, + DWORD dwFlags +); +_FX int Kernel_GetUserDefaultLocaleName( + LPWSTR lpLocaleName, + int cchLocaleName +) { + LCIDToLocaleName ltln = Ldr_GetProcAddrNew(Dll_Kernel32, L"LCIDToLocaleName", "LCIDToLocaleName"); + if (ltln) { + return ltln(SbieApi_QueryConfBool(NULL, L"FalseLCID", 1033), lpLocaleName, cchLocaleName, 0); + } + else { + if (cchLocaleName >= 4) + lstrcpy(lpLocaleName, L"en_US"); + else + return 0; + } + return 4; +} + +_FX LCID Kernel_GetUserDefaultLCID() { + return SbieApi_QueryConfNumber(NULL, L"FalseLCID", 1033); +} + +_FX LANGID Kernel_GetUserDefaultLangID() { + return SbieApi_QueryConfNumber(NULL, L"FalseLCID", 1033); +} +char* itoa(int num, char* str, int radix) +{ + char index[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + unsigned unum; + int i = 0, j, k; + + + if (radix == 10 && num < 0) + { + unum = (unsigned)-num; + str[i++] = '-'; + } + else unum = (unsigned)num; + + + do + { + str[i++] = index[unum % (unsigned)radix]; + unum /= radix; + + } while (unum); + + str[i] = '\0'; + + + if (str[0] == '-') k = 1; + else k = 0; + + char temp; + for (j = k; j <= (i - 1) / 2; j++) + { + temp = str[j]; + str[j] = str[i - 1 + k - j]; + str[i - 1 + k - j] = temp; + } + + return str; + +} +const wchar_t* GetWC(const char* c) +{ + const size_t cSize = strlen(c) + 1; + wchar_t* wc = new wchar_t[cSize]; + mbstowcs(wc, c, cSize); + + return wc; +} +_FX int Kernel_GetUserDefaultGeoName( + LPWSTR geoName, + int geoNameCount +) { + lstrcpy(geoName, GetWC(itoa(SbieApi_QueryConfNumber(NULL, L"FalseAreaNumber", 840))); +} + +_FX LANGID Kernel_GetSystemDefaultUILanguage() { + return SbieApi_QueryConfNumber(NULL, L"FalseLCID", 1033); +} + +_FX int Kernel_GetSystemDefaultLocaleName( + LPWSTR lpLocaleName, + int cchLocaleName +) { + LCIDToLocaleName ltln = Ldr_GetProcAddrNew(Dll_Kernel32, L"LCIDToLocaleName", "LCIDToLocaleName"); + if (ltln) { + return ltln(SbieApi_QueryConfBool(NULL, L"FalseLCID", 1033), lpLocaleName, cchLocaleName, 0); + } + else { + if (cchLocaleName >= 4) + lstrcpy(lpLocaleName, L"en_US"); + else + return 0; + } + return 4; +} + +_FX LCID Kernel_GetSystemDefaultLCID() { + return SbieApi_QueryConfNumber(NULL, L"FalseLCID", 1033); +} + +_FX LANGID Kernel_GetSystemDefaultLangID() { + return SbieApi_QueryConfNumber(NULL, L"FalseLCID", 1033); +} + +/*_FX int Kernel_GetLocaleInfoEx( + LPCWSTR lpLocaleName, + LCTYPE LCType, + LPWSTR lpLCData, + int cchData +); + +_FX int Kernel_GetLocaleInfoA( + LCID Locale, + LCTYPE LCType, + LPSTR lpLCData, + int cchData +); + +_FX int Kernel_GetLocaleInfoW( + LCID Locale, + LCTYPE LCType, + LPWSTR lpLCData, + int cchData +); +*/ From e50a5d93a7ecb9cdecf0611e82a4275840387f02 Mon Sep 17 00:00:00 2001 From: love-code-yeyixiao <188240888@qq.com> Date: Sun, 23 Jun 2024 13:47:57 +0800 Subject: [PATCH 02/15] fix --- Sandboxie/core/dll/kernel.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sandboxie/core/dll/kernel.c b/Sandboxie/core/dll/kernel.c index d1f53dfe..2b017861 100644 --- a/Sandboxie/core/dll/kernel.c +++ b/Sandboxie/core/dll/kernel.c @@ -149,7 +149,7 @@ static DWORD Kernel_SleepEx(DWORD dwMiSecond, BOOL bAlert); static BOOL Kernel_QueryPerformanceCounter(LARGE_INTEGER* lpPerformanceCount); -static LANGID(*P_GetUserDefaultUILanguage)(); +static LANGID Kernel_GetUserDefaultUILanguage(); static int Kernel_GetUserDefaultLocaleName( LPWSTR lpLocaleName, From 89a25ad37e5475b3ece839ebb6975004a3426142 Mon Sep 17 00:00:00 2001 From: love-code-yeyixiao <188240888@qq.com> Date: Sun, 23 Jun 2024 13:53:00 +0800 Subject: [PATCH 03/15] fix --- Sandboxie/core/dll/kernel.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Sandboxie/core/dll/kernel.c b/Sandboxie/core/dll/kernel.c index 2b017861..e744c265 100644 --- a/Sandboxie/core/dll/kernel.c +++ b/Sandboxie/core/dll/kernel.c @@ -398,7 +398,7 @@ _FX BOOL Kernel_QueryPerformanceCounter(LARGE_INTEGER* lpPerformanceCount) } _FX LANGID GetUserDefaultUILanguage() { - return SbieApi_QueryConfNumber(NULL, L"FalseLCID", 1033); + return (LANGID)SbieApi_QueryConfNumber(NULL, L"FalseLCID", 1033); } typedef int (*LCIDToLocaleName)( LCID Locale, @@ -469,10 +469,11 @@ char* itoa(int num, char* str, int radix) return str; } +#include const wchar_t* GetWC(const char* c) { const size_t cSize = strlen(c) + 1; - wchar_t* wc = new wchar_t[cSize]; + wchar_t* wc = malloc(sizeof(wchar_tŁ©* cSize)); mbstowcs(wc, c, cSize); return wc; From 8dc48cb210ecdd46b0ffbd8658ca2f24a93eae8c Mon Sep 17 00:00:00 2001 From: love-code-yeyixiao <188240888@qq.com> Date: Sun, 23 Jun 2024 13:53:49 +0800 Subject: [PATCH 04/15] 1.14.3 --- Sandboxie/core/dll/kernel.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sandboxie/core/dll/kernel.c b/Sandboxie/core/dll/kernel.c index e744c265..6fabf1a3 100644 --- a/Sandboxie/core/dll/kernel.c +++ b/Sandboxie/core/dll/kernel.c @@ -473,7 +473,7 @@ char* itoa(int num, char* str, int radix) const wchar_t* GetWC(const char* c) { const size_t cSize = strlen(c) + 1; - wchar_t* wc = malloc(sizeof(wchar_tŁ©* cSize)); + wchar_t* wc = (wchar_t*)malloc(sizeof(wchar_tŁ©* cSize)); mbstowcs(wc, c, cSize); return wc; From 9bda4c9d4a096fd8350232114eafd17427d3d1e9 Mon Sep 17 00:00:00 2001 From: love-code-yeyixiao <188240888@qq.com> Date: Sun, 23 Jun 2024 14:00:26 +0800 Subject: [PATCH 05/15] repair --- Sandboxie/core/dll/kernel.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Sandboxie/core/dll/kernel.c b/Sandboxie/core/dll/kernel.c index 6fabf1a3..65092e9e 100644 --- a/Sandboxie/core/dll/kernel.c +++ b/Sandboxie/core/dll/kernel.c @@ -397,7 +397,7 @@ _FX BOOL Kernel_QueryPerformanceCounter(LARGE_INTEGER* lpPerformanceCount) return rtn; } -_FX LANGID GetUserDefaultUILanguage() { +_FX LANGID Kernel_GetUserDefaultUILanguage() { return (LANGID)SbieApi_QueryConfNumber(NULL, L"FalseLCID", 1033); } typedef int (*LCIDToLocaleName)( @@ -412,7 +412,7 @@ _FX int Kernel_GetUserDefaultLocaleName( ) { LCIDToLocaleName ltln = Ldr_GetProcAddrNew(Dll_Kernel32, L"LCIDToLocaleName", "LCIDToLocaleName"); if (ltln) { - return ltln(SbieApi_QueryConfBool(NULL, L"FalseLCID", 1033), lpLocaleName, cchLocaleName, 0); + return ltln(SbieApi_QueryConfNumber(NULL, L"FalseLCID", 1033), lpLocaleName, cchLocaleName, 0); } else { if (cchLocaleName >= 4) @@ -430,7 +430,7 @@ _FX LCID Kernel_GetUserDefaultLCID() { _FX LANGID Kernel_GetUserDefaultLangID() { return SbieApi_QueryConfNumber(NULL, L"FalseLCID", 1033); } -char* itoa(int num, char* str, int radix) +char* itoa2(int num, char* str, int radix) { char index[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; unsigned unum; @@ -469,7 +469,7 @@ char* itoa(int num, char* str, int radix) return str; } -#include +#include const wchar_t* GetWC(const char* c) { const size_t cSize = strlen(c) + 1; @@ -482,7 +482,7 @@ _FX int Kernel_GetUserDefaultGeoName( LPWSTR geoName, int geoNameCount ) { - lstrcpy(geoName, GetWC(itoa(SbieApi_QueryConfNumber(NULL, L"FalseAreaNumber", 840))); + lstrcpy(geoName, GetWC(itoa2(SbieApi_QueryConfNumber(NULL, L"FalseAreaNumber", 840))); } _FX LANGID Kernel_GetSystemDefaultUILanguage() { From bd5101270972bccf385dcba4d7976cea4678c9c8 Mon Sep 17 00:00:00 2001 From: love-code-yeyixiao <188240888@qq.com> Date: Sun, 23 Jun 2024 14:10:55 +0800 Subject: [PATCH 06/15] fix --- Sandboxie/core/dll/kernel.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/Sandboxie/core/dll/kernel.c b/Sandboxie/core/dll/kernel.c index 65092e9e..8eebc2dd 100644 --- a/Sandboxie/core/dll/kernel.c +++ b/Sandboxie/core/dll/kernel.c @@ -428,7 +428,7 @@ _FX LCID Kernel_GetUserDefaultLCID() { } _FX LANGID Kernel_GetUserDefaultLangID() { - return SbieApi_QueryConfNumber(NULL, L"FalseLCID", 1033); + return (LANGID)SbieApi_QueryConfNumber(NULL, L"FalseLCID", 1033); } char* itoa2(int num, char* str, int radix) { @@ -473,7 +473,7 @@ char* itoa2(int num, char* str, int radix) const wchar_t* GetWC(const char* c) { const size_t cSize = strlen(c) + 1; - wchar_t* wc = (wchar_t*)malloc(sizeof(wchar_tŁ©* cSize)); + wchar_t* wc=(wchar_t*)malloc(sizeof(wchar_t)*cSize); mbstowcs(wc, c, cSize); return wc; @@ -482,11 +482,14 @@ _FX int Kernel_GetUserDefaultGeoName( LPWSTR geoName, int geoNameCount ) { - lstrcpy(geoName, GetWC(itoa2(SbieApi_QueryConfNumber(NULL, L"FalseAreaNumber", 840))); + char* buf = malloc(sizeof(char) * geoNameCount); + itoa2(SbieApi_QueryConfNumber(NULL, L"FalseAreaNumber", 840),buf,10); + lstrcpy(geoName, GetWC(buf)); + return sizeof(GetWC(buf)); } _FX LANGID Kernel_GetSystemDefaultUILanguage() { - return SbieApi_QueryConfNumber(NULL, L"FalseLCID", 1033); + return (LANGID)SbieApi_QueryConfNumber(NULL, L"FalseLCID", 1033); } _FX int Kernel_GetSystemDefaultLocaleName( From 199876483a89485c4bb7b16afcd756643dd65b76 Mon Sep 17 00:00:00 2001 From: love-code-yeyixiao <188240888@qq.com> Date: Sun, 23 Jun 2024 14:29:01 +0800 Subject: [PATCH 07/15] fix --- Sandboxie/core/dll/kernel.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Sandboxie/core/dll/kernel.c b/Sandboxie/core/dll/kernel.c index 8eebc2dd..720ae6f1 100644 --- a/Sandboxie/core/dll/kernel.c +++ b/Sandboxie/core/dll/kernel.c @@ -498,7 +498,7 @@ _FX int Kernel_GetSystemDefaultLocaleName( ) { LCIDToLocaleName ltln = Ldr_GetProcAddrNew(Dll_Kernel32, L"LCIDToLocaleName", "LCIDToLocaleName"); if (ltln) { - return ltln(SbieApi_QueryConfBool(NULL, L"FalseLCID", 1033), lpLocaleName, cchLocaleName, 0); + return ltln(SbieApi_QueryConfNumber(NULL, L"FalseLCID", 1033), lpLocaleName, cchLocaleName, 0); } else { if (cchLocaleName >= 4) @@ -514,7 +514,7 @@ _FX LCID Kernel_GetSystemDefaultLCID() { } _FX LANGID Kernel_GetSystemDefaultLangID() { - return SbieApi_QueryConfNumber(NULL, L"FalseLCID", 1033); + return (LANGID)SbieApi_QueryConfNumber(NULL, L"FalseLCID", 1033); } /*_FX int Kernel_GetLocaleInfoEx( From f06ab092cc8172e08fb360768fb166a6650705d1 Mon Sep 17 00:00:00 2001 From: love-code-yeyixiao <188240888@qq.com> Date: Sun, 23 Jun 2024 15:18:14 +0800 Subject: [PATCH 08/15] fix link --- Sandboxie/core/dll/kernel.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/Sandboxie/core/dll/kernel.c b/Sandboxie/core/dll/kernel.c index 720ae6f1..c68b083e 100644 --- a/Sandboxie/core/dll/kernel.c +++ b/Sandboxie/core/dll/kernel.c @@ -469,13 +469,14 @@ char* itoa2(int num, char* str, int radix) return str; } -#include + const wchar_t* GetWC(const char* c) { const size_t cSize = strlen(c) + 1; - wchar_t* wc=(wchar_t*)malloc(sizeof(wchar_t)*cSize); + + wchar_t* wc=(wchar_t*)GlobalAlloc(GMEM_FIXED | GMEM_ZEROINIT, sizeof(wchar_t) * cSize)); mbstowcs(wc, c, cSize); - + return wc; } _FX int Kernel_GetUserDefaultGeoName( @@ -484,8 +485,11 @@ _FX int Kernel_GetUserDefaultGeoName( ) { char* buf = malloc(sizeof(char) * geoNameCount); itoa2(SbieApi_QueryConfNumber(NULL, L"FalseAreaNumber", 840),buf,10); - lstrcpy(geoName, GetWC(buf)); - return sizeof(GetWC(buf)); + wchar_t* tmp = GetWC(buf); + int length = sizeof(GetWC(buf)); + lstrcpy(geoName, tmp); + GlobalFree(tmp); + return length; } _FX LANGID Kernel_GetSystemDefaultUILanguage() { From 77947120afc4a483952100a7f7cb4f6aa794bbd4 Mon Sep 17 00:00:00 2001 From: love-code-yeyixiao <188240888@qq.com> Date: Sun, 23 Jun 2024 15:27:10 +0800 Subject: [PATCH 09/15] fix --- Sandboxie/core/dll/kernel.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sandboxie/core/dll/kernel.c b/Sandboxie/core/dll/kernel.c index c68b083e..d271a851 100644 --- a/Sandboxie/core/dll/kernel.c +++ b/Sandboxie/core/dll/kernel.c @@ -474,7 +474,7 @@ const wchar_t* GetWC(const char* c) { const size_t cSize = strlen(c) + 1; - wchar_t* wc=(wchar_t*)GlobalAlloc(GMEM_FIXED | GMEM_ZEROINIT, sizeof(wchar_t) * cSize)); + wchar_t* wc=(wchar_t*)GlobalAlloc(GMEM_FIXED | GMEM_ZEROINIT, sizeof(wchar_t) * cSize); mbstowcs(wc, c, cSize); return wc; From 10ed66bdd47b702bdbef597c6a9edd1b78d93b41 Mon Sep 17 00:00:00 2001 From: love-code-yeyixiao <188240888@qq.com> Date: Sun, 23 Jun 2024 15:38:47 +0800 Subject: [PATCH 10/15] fix --- Sandboxie/core/dll/kernel.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Sandboxie/core/dll/kernel.c b/Sandboxie/core/dll/kernel.c index d271a851..13a5d440 100644 --- a/Sandboxie/core/dll/kernel.c +++ b/Sandboxie/core/dll/kernel.c @@ -475,19 +475,19 @@ const wchar_t* GetWC(const char* c) const size_t cSize = strlen(c) + 1; wchar_t* wc=(wchar_t*)GlobalAlloc(GMEM_FIXED | GMEM_ZEROINIT, sizeof(wchar_t) * cSize); - mbstowcs(wc, c, cSize); - + MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, c, cSize, wc, cSize); return wc; } _FX int Kernel_GetUserDefaultGeoName( LPWSTR geoName, int geoNameCount ) { - char* buf = malloc(sizeof(char) * geoNameCount); + char* buf = (char*)GlobalAlloc(GMEM_FIXED | GMEM_ZEROINIT, sizeof(char) * geoNameCount); itoa2(SbieApi_QueryConfNumber(NULL, L"FalseAreaNumber", 840),buf,10); wchar_t* tmp = GetWC(buf); int length = sizeof(GetWC(buf)); lstrcpy(geoName, tmp); + GlobalFree(buf); GlobalFree(tmp); return length; } From a658a5e3e9b765279c97969747ffc88befd3e096 Mon Sep 17 00:00:00 2001 From: love-code-yeyixiao <188240888@qq.com> Date: Sun, 23 Jun 2024 16:17:45 +0800 Subject: [PATCH 11/15] fix again --- Sandboxie/core/dll/kernel.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sandboxie/core/dll/kernel.c b/Sandboxie/core/dll/kernel.c index 13a5d440..4464fdcd 100644 --- a/Sandboxie/core/dll/kernel.c +++ b/Sandboxie/core/dll/kernel.c @@ -484,7 +484,7 @@ _FX int Kernel_GetUserDefaultGeoName( ) { char* buf = (char*)GlobalAlloc(GMEM_FIXED | GMEM_ZEROINIT, sizeof(char) * geoNameCount); itoa2(SbieApi_QueryConfNumber(NULL, L"FalseAreaNumber", 840),buf,10); - wchar_t* tmp = GetWC(buf); + const wchar_t* tmp = GetWC(buf); int length = sizeof(GetWC(buf)); lstrcpy(geoName, tmp); GlobalFree(buf); From da120a1b377708a99855e819a6e027fb80b3da34 Mon Sep 17 00:00:00 2001 From: love-code-yeyixiao <188240888@qq.com> Date: Sun, 23 Jun 2024 16:22:47 +0800 Subject: [PATCH 12/15] fix --- Sandboxie/core/dll/kernel.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Sandboxie/core/dll/kernel.c b/Sandboxie/core/dll/kernel.c index 4464fdcd..2aff0804 100644 --- a/Sandboxie/core/dll/kernel.c +++ b/Sandboxie/core/dll/kernel.c @@ -470,7 +470,7 @@ char* itoa2(int num, char* str, int radix) } -const wchar_t* GetWC(const char* c) +wchar_t* GetWC(const char* c) { const size_t cSize = strlen(c) + 1; @@ -484,7 +484,7 @@ _FX int Kernel_GetUserDefaultGeoName( ) { char* buf = (char*)GlobalAlloc(GMEM_FIXED | GMEM_ZEROINIT, sizeof(char) * geoNameCount); itoa2(SbieApi_QueryConfNumber(NULL, L"FalseAreaNumber", 840),buf,10); - const wchar_t* tmp = GetWC(buf); + wchar_t* tmp = GetWC(buf); int length = sizeof(GetWC(buf)); lstrcpy(geoName, tmp); GlobalFree(buf); From a59b1a65f5cc23a75924a1545d6f2bfbdec721cc Mon Sep 17 00:00:00 2001 From: love-code-yeyixiao <188240888@qq.com> Date: Sun, 23 Jun 2024 18:06:35 +0800 Subject: [PATCH 13/15] Debug --- Sandboxie/core/dll/kernel.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Sandboxie/core/dll/kernel.c b/Sandboxie/core/dll/kernel.c index 2aff0804..bbc67fea 100644 --- a/Sandboxie/core/dll/kernel.c +++ b/Sandboxie/core/dll/kernel.c @@ -265,12 +265,14 @@ _FX BOOLEAN Kernel_Init() SBIEDLL_HOOK(Kernel_, GetUserDefaultLCID); SBIEDLL_HOOK(Kernel_, GetUserDefaultLangID); SBIEDLL_HOOK(Kernel_, GetUserDefaultGeoName); - SBIEDLL_HOOK(Kernel_, GetSystemDefaultUILanguage); + /*SBIEDLL_HOOK(Kernel_, GetSystemDefaultUILanguage); P_GetSystemDefaultLocaleName GetSystemDefaultLocaleName = Ldr_GetProcAddrNew(Dll_Kernel32, L"GetSystemDefaultLocaleName", "GetSystemDefaultLocaleName"); if (GetSystemDefaultLocaleName) SBIEDLL_HOOK(Kernel_, GetSystemDefaultLocaleName); SBIEDLL_HOOK(Kernel_, GetSystemDefaultLCID); SBIEDLL_HOOK(Kernel_, GetSystemDefaultLangID); + */ + /*SBIEDLL_HOOK(Kernel_, GetLocaleInfoA); SBIEDLL_HOOK(Kernel_, GetLocaleInfoW); P_GetLocaleInfoEx GetLocaleInfoEx = Ldr_GetProcAddrNew(Dll_Kernel32, L"GetLocaleInfoEx", "GetLocaleInfoEx"); From 4694ebf105409975e20e140116918d87af881aeb Mon Sep 17 00:00:00 2001 From: love-code-yeyixiao <188240888@qq.com> Date: Sat, 29 Jun 2024 20:14:16 +0800 Subject: [PATCH 14/15] Debug --- Sandboxie/core/dll/kernel.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Sandboxie/core/dll/kernel.c b/Sandboxie/core/dll/kernel.c index bbc67fea..34ed08ab 100644 --- a/Sandboxie/core/dll/kernel.c +++ b/Sandboxie/core/dll/kernel.c @@ -258,20 +258,20 @@ _FX BOOLEAN Kernel_Init() } if (SbieApi_QueryConfBool(NULL, L"UseSpoofLocale", FALSE)) { - SBIEDLL_HOOK(Kernel_, GetUserDefaultUILanguage); + /*SBIEDLL_HOOK(Kernel_, GetUserDefaultUILanguage); P_GetUserDefaultLocaleName GetUserDefaultLocaleName = Ldr_GetProcAddrNew(Dll_Kernel32, L"GetUserDefaultLocaleName", "GetUserDefaultLocaleName"); if (GetUserDefaultLocaleName) - SBIEDLL_HOOK(Kernel_, GetUserDefaultLocaleName); + SBIEDLL_HOOK(Kernel_, GetUserDefaultLocaleName);*/ SBIEDLL_HOOK(Kernel_, GetUserDefaultLCID); SBIEDLL_HOOK(Kernel_, GetUserDefaultLangID); - SBIEDLL_HOOK(Kernel_, GetUserDefaultGeoName); - /*SBIEDLL_HOOK(Kernel_, GetSystemDefaultUILanguage); + /*SBIEDLL_HOOK(Kernel_, GetUserDefaultGeoName); + SBIEDLL_HOOK(Kernel_, GetSystemDefaultUILanguage); P_GetSystemDefaultLocaleName GetSystemDefaultLocaleName = Ldr_GetProcAddrNew(Dll_Kernel32, L"GetSystemDefaultLocaleName", "GetSystemDefaultLocaleName"); if (GetSystemDefaultLocaleName) SBIEDLL_HOOK(Kernel_, GetSystemDefaultLocaleName); SBIEDLL_HOOK(Kernel_, GetSystemDefaultLCID); - SBIEDLL_HOOK(Kernel_, GetSystemDefaultLangID); - */ + SBIEDLL_HOOK(Kernel_, GetSystemDefaultLangID);*/ + /*SBIEDLL_HOOK(Kernel_, GetLocaleInfoA); SBIEDLL_HOOK(Kernel_, GetLocaleInfoW); From 5b0b35d5fea1e382fd3ec6572eefbd9af440b6cc Mon Sep 17 00:00:00 2001 From: love-code-yeyixiao <188240888@qq.com> Date: Sat, 29 Jun 2024 21:56:21 +0800 Subject: [PATCH 15/15] Debug --- Sandboxie/core/dll/kernel.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Sandboxie/core/dll/kernel.c b/Sandboxie/core/dll/kernel.c index 34ed08ab..d9ddf423 100644 --- a/Sandboxie/core/dll/kernel.c +++ b/Sandboxie/core/dll/kernel.c @@ -258,19 +258,19 @@ _FX BOOLEAN Kernel_Init() } if (SbieApi_QueryConfBool(NULL, L"UseSpoofLocale", FALSE)) { - /*SBIEDLL_HOOK(Kernel_, GetUserDefaultUILanguage); - P_GetUserDefaultLocaleName GetUserDefaultLocaleName = Ldr_GetProcAddrNew(Dll_Kernel32, L"GetUserDefaultLocaleName", "GetUserDefaultLocaleName"); - if (GetUserDefaultLocaleName) - SBIEDLL_HOOK(Kernel_, GetUserDefaultLocaleName);*/ + SBIEDLL_HOOK(Kernel_, GetUserDefaultUILanguage); + //P_GetUserDefaultLocaleName GetUserDefaultLocaleName = Ldr_GetProcAddrNew(Dll_Kernel32, L"GetUserDefaultLocaleName", "GetUserDefaultLocaleName"); + //if (GetUserDefaultLocaleName) + // SBIEDLL_HOOK(Kernel_, GetUserDefaultLocaleName); SBIEDLL_HOOK(Kernel_, GetUserDefaultLCID); SBIEDLL_HOOK(Kernel_, GetUserDefaultLangID); - /*SBIEDLL_HOOK(Kernel_, GetUserDefaultGeoName); + //SBIEDLL_HOOK(Kernel_, GetUserDefaultGeoName); SBIEDLL_HOOK(Kernel_, GetSystemDefaultUILanguage); - P_GetSystemDefaultLocaleName GetSystemDefaultLocaleName = Ldr_GetProcAddrNew(Dll_Kernel32, L"GetSystemDefaultLocaleName", "GetSystemDefaultLocaleName"); - if (GetSystemDefaultLocaleName) - SBIEDLL_HOOK(Kernel_, GetSystemDefaultLocaleName); + //P_GetSystemDefaultLocaleName GetSystemDefaultLocaleName = Ldr_GetProcAddrNew(Dll_Kernel32, L"GetSystemDefaultLocaleName", "GetSystemDefaultLocaleName"); + //if (GetSystemDefaultLocaleName) + // SBIEDLL_HOOK(Kernel_, GetSystemDefaultLocaleName); SBIEDLL_HOOK(Kernel_, GetSystemDefaultLCID); - SBIEDLL_HOOK(Kernel_, GetSystemDefaultLangID);*/ + SBIEDLL_HOOK(Kernel_, GetSystemDefaultLangID); /*SBIEDLL_HOOK(Kernel_, GetLocaleInfoA);