[Bug 34455] NCsoft's Aion (MMORPG) fails to load "CrySystem.dll" (WinLicense software protection, avoid forwarding some msvcrt API to ntdll)
wine-bugs at winehq.org
wine-bugs at winehq.org
Sat Sep 7 15:58:01 CDT 2013
http://bugs.winehq.org/show_bug.cgi?id=34455
Anastasius Focht <focht at gmx.net> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |download, obfuscation
Status|UNCONFIRMED |NEW
URL| |ftp://ftp.ncsoft.com/aionin
| |staller/AionInstaller.exe
CC| |focht at gmx.net
Component|-unknown |msvcrt
Summary|Aion launch failed |NCsoft's Aion (MMORPG)
| |fails to load
| |"CrySystem.dll" (WinLicense
| |software protection, avoid
| |forwarding some msvcrt API
| |to ntdll)
Ever Confirmed|0 |1
--- Comment #5 from Anastasius Focht <focht at gmx.net> 2013-09-07 15:58:01 CDT ---
Hello folks,
please avoid mixing various issues in one bug.
--- quote ---
Now the game launched fails with an error:
[Launcher error] An error has occurred. E03001
--- quote ---
This is described here:
https://aiononline.custhelp.com/app/answers/detail/a_id/9302/~/new-launcher---error-e03001
--- quote ---
Running the launcher from the NCLauncher.exe instead of the shortcut on your
desktop may cause you to receive error E03001. Try using the shortcut that is
located on your desktop or selecting the shortcut from your Aion folder in your
Start Menu. Following these steps should resolve your issue.
--- quote ---
Debugging their crappy command line parsing code sheds some light on this...
Actually it's one of the gazillion broken apps that expects a _trailing_
whitespace at end of command line (similar to bug 16543).
To work around, use builtin "start.exe" for "NClauncher.exe" which
automagically adds the whitespace (mimics Windows behaviour).
--- snip ---
$ pwd
/home/focht/.wine/drive_c/Program Files/NCWest/NCLauncher
...
wine start ./NCLauncher.exe /LauncherID:NCWest /CompanyID:12 /GameID:AION
/LUpdateAddr:updater.nclauncher.ncsoft.com
--- snip ---
The game downloader/updater/launcher comes with builtin torrent client which
works a bit flaky (sometimes emits error E02018) but still manages to download
several GiB of game data (given some restarts).
NOTE: I'm still on clean 32-bit WINEPREFIX, no native components (winetricks)
Now coming to the first crash "Aion started to launch, then gave error:
CrySystem.dll Loading failed" ...
It seems the game is wrapped with the WinLicense software protection scheme
from Oreans (http://www.oreans.com/).
Yes, these guys that gave much grievance to Windows and Wine users with their
infamous Themida protection scheme.
Despite various anti-debugging/dumping measure employed I worked out some
issues...
It seems the protection doesn't like Wine's msvcrt forwards to ntdll.
Partial dump of extra IAT:
--- snip ---
...
033B8514 F34F088A OFFSET msvcrt._splitpath
033B8518 F34EF7AC OFFSET msvcrt.MSVCRT__findfirst64i32
033B851C F3540318 OFFSET msvcrt.MSVCRT__snprintf_s
033B8520 F356C35A ASCII "ntdll.wcsstr"
033B8524 F35105D4 OFFSET msvcrt._mbsicmp
033B8528 F3532F92 OFFSET msvcrt.MSVCRT_wcschr
...
033B85D0 F3532C4A OFFSET msvcrt.MSVCRT_memset
033B85D4 F3532EAF OFFSET msvcrt.MSVCRT_strstr
033B85D8 F356C2B7 ASCII "ntdll.strncat"
033B85DC F35304B0 OFFSET msvcrt.MSVCRT_strncpy
033B85E0 F350BCA1 OFFSET msvcrt._CIlog
...
033B8620 F35332B0 OFFSET msvcrt._beginthreadex
033B8624 F356C2D3 ASCII "ntdll.strrchr"
033B8628 F3532C17 OFFSET msvcrt.MSVCRT_memcpy
...
--- snip ---
Wine's msvcrt has been changed several times to not forward various API to
ntdll anymore (see GIT commit log "Don't forward <foo> to ntdll")
I reduced the list further (copying the code from ntdll):
--- snip ---
-@ cdecl _wcsnicmp(wstr wstr long) ntdll._wcsnicmp
+@ cdecl _wcsnicmp(wstr wstr long) MSVCRT__wcsnicmp
...
-@ cdecl memcmp(ptr ptr long) ntdll.memcmp
+@ cdecl memcmp(ptr ptr long) MSVCRT_memcmp
...
-@ cdecl memmove(ptr ptr long) ntdll.memmove
+@ cdecl memmove(ptr ptr long) MSVCRT_memmove
...
-@ cdecl strcmp(str str) ntdll.strcmp
+@ cdecl strcmp(str str) MSVCRT_strcmp
...
-@ cdecl strlen(str) ntdll.strlen
-@ cdecl strncat(str str long) ntdll.strncat
+@ cdecl strlen(str) MSVCRT_strlen
+@ cdecl strncat(str str long) MSVCRT_strncat
...
-@ cdecl strrchr(str long) ntdll.strrchr
+@ cdecl strrchr(str long) MSVCRT_strrchr
...
-@ cdecl strstr(str str) ntdll.strstr
+@ cdecl strstr(str str) MSVCRT_strstr
...
-@ cdecl wcschr(wstr long) ntdll.wcschr
+@ cdecl wcschr(wstr long) MSVCRT_wcschr
...
-@ cdecl wcslen(wstr) ntdll.wcslen
+@ cdecl wcslen(wstr) MSVCRT_wcslen
...
-@ cdecl wcsstr(wstr wstr) ntdll.wcsstr
+@ cdecl wcsstr(wstr wstr) MSVCRT_wcsstr
--- snip ---
With those forwards removed the game runs a bit further - into next bug
(similar issue with Wine's msvcp80.dll which deserves a separate bug)
$ wine --version
wine-1.7.1-229-g7813f5c
Regards
--
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.
More information about the wine-bugs
mailing list