https://bugs.winehq.org/show_bug.cgi?id=45568
Bug ID: 45568 Summary: League of Legends 8.12+ fails to start a game (anticheat engine, validation of loaded DLLs) Product: Wine Version: 3.13 Hardware: x86 OS: Linux Status: NEW Severity: normal Priority: P2 Component: -unknown Assignee: wine-bugs@winehq.org Reporter: z.figura12@gmail.com Distribution: ---
Diagnosed by Andrew Wesie; partially split off from bug 45327.
The game marks all pages of its executable as NOACCESS, then registers a vectored exception handler. When a page is accessed, it will determine if the access is authorized, and if so, it will decrypt the page and mark it as readable. The game only allows access from its own modules, or from a module explicitly loaded by LoadLibrary; in specific, libraries that are automatically loaded as dependences are not considered authorized.
In particular this fails because the game loads dinput8, whose real implementation lives in dinput, and this will attempt to access data via callbacks.
If this diagnosis is complete, this bug is a WONTFIX. We can easily work around this specific case by sharing source between dinput and dinput8, but no similar solution exists for other dependencies.