https://bugs.winehq.org/show_bug.cgi?id=42493
Michael Müller michael@fds-team.de changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |michael@fds-team.de
--- Comment #3 from Michael Müller michael@fds-team.de --- Created attachment 58298 --> https://bugs.winehq.org/attachment.cgi?id=58298 Hack to speedup xign loadtime
Wine Staging 2.9 contains patches to make the user mode part of XIGNCODE3 happy (at least in a 32-bit prefix, I have not tested if 64-bit makes a difference), which includes:
* Loading Nt functions based on the VA offset calculated from the builtin dll using ReadFile and executing it * Opening Files through NT device paths * Comparing the content of some functions between the builtin and fake ntdll * Manually loading kernel32 and calling functions like VirtualAlloc
Afterwards the anticheat engine will load a kernel driver xhunter1.sys which crashes due to:
wine: Call from 0x7b43c559 to unimplemented function ntoskrnl.exe.IoCreateNotificationEvent, aborting wine: Unimplemented function ntoskrnl.exe.IoCreateNotificationEvent called at address 0x7b43c559 (thread 008a), starting debugger...
When working around this bug, the driver will crash, because the Mutex related functions just return error codes, causing the driver to unload itself, which wine does not handle properly. So there is still some work left.
If anyone is interested in working on this, I suggest to apply the attached patch on Wine Staging 2.9. The anticheat engine calls many Nt functions twice, one time with the pseudo handle and one time with a real process handle for the current process. The later case requires a huge amount of wineserver calls and APCs leading to an extreme slowdown. The hack reduces the loading time to something more reasonable.