https://bugs.winehq.org/show_bug.cgi?id=36627
Bug ID: 36627 Summary: Games For Windows Live 2.0.0687.0 (PANORAMA_V2.00_RTM.090421-2351) needs MSASN1.dll Product: Wine Version: 1.7.19 Hardware: x86 OS: Linux Status: NEW Severity: normal Priority: P2 Component: -unknown Assignee: wine-bugs@winehq.org Reporter: focht@gmx.net
Hello folks,
there were a few GFWL/XLive bug comments in the past that stated "copying MSASN1.dll solves the issue" (bug 28035).
There is indeed a specific version of GFWL that hard-binds to 'MSASN1.dll'.
'winetricks msasn1' obviously solves the problem for 'xlive.dll' load failure.
It doesn't solve GFWL init failure at runtime as explained in https://bugs.winehq.org/show_bug.cgi?id=28035#c37
This bug is about adding a stub dll and possible implementation later.
The specific version is:
--- snip --- xlive.dll Microsoft Corporation Games for Windows - LIVE DLL 2.0.0687.0 (PANORAMA_V2.00_RTM.090421-2351) Wednesday 22 April 2009, 00.20.44 --- snip ---
Other versions such as '2.0.0672.0 (PANORAMA_V2.00_RTM.081022-0447)' don't have this binding.
'xLiveRedist.msi' redist installer 'File' table dumped with 'ORCA':
--- snip --- File Component_ FileName FileSize Version
s72 s72 l255 i4 S72
dxdx1037 DirectXRedist ze3kb3ub.cab|Mar2008_d3dx10_37_x86.cab 821508 512 xlive XLiveRuntimeComponent xlive.dll 14311680 2.0.687.0 sqmapidll SQMAPI sqmapi.dll 134144 6.0.6000.16386 dxdxsetupexe DirectXRedist DXSETUP.exe 527880 4.9.0.904 dxdx937 DirectXRedist rxp0yibt.cab|Mar2008_d3dx9_37_x86.cab 1446530 512 dxxinput DirectXRedist qdji7bjl.cab|APR2007_xinput_x86.cab 56902 512 dxdsetupdll DirectXRedist DSETUP.dll 97288 4.9.0.904 dxdsetup32 DirectXRedist dsetup32.dll 1694728 4.9.0.904 dxdllreg DirectXRedist an7grfka.cab|dxdllreg_x86.cab 47596 512 dxupdate DirectXRedist dxupdate.cab 97396 512 xlivecat XLiveRuntimeComponent kh3w9dph.cat|xlive.dll.cat 172173 512 xlivefnt XLiveRuntimeComponent xlivefnt.dll 13642496 2.0.687.0 ... --- snip ---
It bundles/installs .NET Framework 3.0
--- snip --- Wine-dbg>info process pid threads executable (all id:s are in hex) 00000024 1 'explorer.exe' 0000000e 8 'services.exe' 000000cf 4 _ 'mscorsvw.exe' 00000019 3 _ 'plugplay.exe' 00000012 4 _ 'winedevice.exe' 00000008 1 'setup.exe' 00000034 6 _ 'msiexec.exe' 0000003b 2 _ 'gfwlivesetup.exe' 0000003e 1 _ 'GFWLIVESetupStub.exe' 00000030 2 _ 'dotnetfx3.exe' 00000028 2 _ 'setup.exe' --- snip ---
Starting a game that installed this specific GFWL version, for example 'Resident Evil 5' (bug 23914) yields:
--- snip --- $ wine ./Launcher.exe err:module:import_dll Library MSASN1.dll (which is needed by L"C:\windows\system32\xlive.dll") not found err:module:import_dll Library xlive.dll (which is needed by L"C:\Program Files\CAPCOM\RESIDENT EVIL 5\RE5DX9.EXE") not found err:module:LdrInitializeThunk Main exe initialization for L"C:\Program Files\CAPCOM\RESIDENT EVIL 5\RE5DX9.EXE" failed, status c0000135 --- snip ---
Dumping the 'MSASN1.dll' import descriptor from main executable yields:
--- snip --- ...
26. ImageImportDescriptor: OriginalFirstThunk: 0x005ED47C TimeDateStamp: 0x00000000 (GMT: Thu Jan 01 00:00:00 1970) ForwarderChain: 0x00000000 Name: 0x005ECA68 ("MSASN1.dll") FirstThunk: 0x000018B4
Ordinal/Hint API name ------------ --------------------------------------- 0x0019 "ASN1BERDecS32Val" 0x000C "ASN1BERDecGeneralizedTime" 0x000A "ASN1BERDecExplicitTag" 0x000F "ASN1BERDecNotEndOfContents" 0x0017 "ASN1BERDecPeekTag" 0x0053 "ASN1DecAlloc" 0x0025 "ASN1BERDecZeroCharString" 0x0008 "ASN1BERDecEndOfContents" 0x0031 "ASN1BEREncExplicitTag" 0x003C "ASN1BEREncS32" 0x002F "ASN1BEREncEndOfContents" 0x0013 "ASN1BERDecOctetString" 0x0005 "ASN1BERDecCharString" 0x0029 "ASN1BEREncBool" 0x0000 "ASN1BERDecBitString" 0x001F "ASN1BERDecU32Val" 0x004C "ASN1CEREncGeneralizedTime" 0x002C "ASN1BEREncCharString" 0x0028 "ASN1BEREncBitString" 0x0039 "ASN1BEREncOctetString" 0x003F "ASN1BEREncU32" 0x00DB "ASN1_CloseEncoder" 0x00DE "ASN1_CreateDecoder" 0x00E0 "ASN1_CreateEncoder" 0x00E3 "ASN1_Encode" 0x00E2 "ASN1_Decode" 0x00DA "ASN1_CloseDecoder" --- snip ---
This might be also useful to split out ASN.1 API/helpers from builtin crypt.
$ sha1sum gfwlivesetup.exe ed02393e367c2a9e47f2a3f10da553cc292fa22a gfwlivesetup.exe
$ du -sh gfwlivesetup.exe 171M gfwlivesetup.exe
$ wine --version wine-1.7.19-70-gd6a59f7
Regards