Skip to content

Commit 8a19fbe

Browse files
committed
Handle validation of undocumented uxtheme.dll exported functions in ARM64 builds
1 parent 36c3b19 commit 8a19fbe

File tree

1 file changed

+21
-0
lines changed
  • bundles/org.eclipse.swt/Eclipse SWT PI/win32/library

1 file changed

+21
-0
lines changed

bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_custom.c

+21
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,13 @@ BOOL Validate_AllowDarkModeForWindow(const BYTE* functionPtr)
7878
return TRUE;
7979
}
8080

81+
return FALSE;
82+
#elif defined(_M_ARM64)
83+
if (*(const DWORD*)(&functionPtr[0x18]) == 0xD29523C1) // mov x1,#0xA91E
84+
{
85+
return TRUE;
86+
}
87+
8188
return FALSE;
8289
#else
8390
#error Unsupported processor type
@@ -128,6 +135,13 @@ BOOL Validate_AllowDarkModeForWindowWithTelemetryId(const BYTE* functionPtr)
128135
return TRUE;
129136
}
130137

138+
return FALSE;
139+
#elif defined(_M_ARM64)
140+
if (*(const DWORD*)(&functionPtr[0x18]) == 0xD29523C1) // mov x1,#0xA91E
141+
{
142+
return TRUE;
143+
}
144+
131145
return FALSE;
132146
#else
133147
#error Unsupported processor type
@@ -219,6 +233,13 @@ BOOL Validate_SetPreferredAppMode(const BYTE* functionPtr)
219233
(functionPtr[0x00] == 0x8B) && (functionPtr[0x01] == 0x05) && // mov eax,dword ptr [uxtheme!g_preferredAppMode]
220234
(functionPtr[0x06] == 0x87) && (functionPtr[0x07] == 0x0D) && // xchg ecx,dword ptr [uxtheme!g_preferredAppMode]
221235
(functionPtr[0x0C] == 0xC3); // ret
236+
#elif defined(_M_ARM64)
237+
if (*(const DWORD*)(&functionPtr[0x1C]) == 0x912F6100) // add x0,x8,#0xBD8
238+
{
239+
return TRUE;
240+
}
241+
242+
return FALSE;
222243
#else
223244
#error Unsupported processor type
224245
#endif

0 commit comments

Comments
 (0)