https://bugs.winehq.org/show_bug.cgi?id=45567
Bug ID: 45567 Summary: League of Legends 8.12+ fails to start a game (anticheat engine, validation of WoW64 syscall dispatcher) Product: Wine Version: 3.13 Hardware: x86 OS: Linux Status: NEW Severity: normal Priority: P2 Component: ntdll Assignee: wine-bugs@winehq.org Reporter: z.figura12@gmail.com Distribution: ---
Diagnosed by Andrew Wesie; partially split off from bug 45327.
The game inspects the %cs register to determine if it is running under WoW64. Since Linux 32-bit code segment is the same as the WoW64 32-bit code segment, 0x23, the anti-cheat will expect to be in a WoW64 environment regardless of whether the prefix is 32- or 64-bit.
Consequently the game will try to use the Wow64Transition export if it is available, or otherwise request the module name of the address contained at the WOW32Reserved TEB field (i.e. %fs:0xc0), and verifies that the latter matches wow64cpu.dll.
This can be solved either by moving the syscall dispatcher to wow64cpu.dll, or by implementing Wow64Transition.