[Bug 38656] New: Windows version of Warspear Online exits silently on startup (virtualization/emulation environment restrictions, Wine-specific export 'wine_get_version')

wine-bugs at winehq.org wine-bugs at winehq.org
Sat May 30 12:21:00 CDT 2015


https://bugs.winehq.org/show_bug.cgi?id=38656

            Bug ID: 38656
           Summary: Windows version of Warspear Online exits silently on
                    startup (virtualization/emulation environment
                    restrictions, Wine-specific export 'wine_get_version')
           Product: Wine
           Version: 1.7.44
          Hardware: x86-64
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: ntdll
          Assignee: wine-bugs at winehq.org
          Reporter: focht at gmx.net
      Distribution: ---

Hello folks,

I got curious about this:

https://github.com/wine-compholio/wine-staging/tree/master/patches/ntdll-Hide_Wine_Exports

There was neither a bug report here nor in Wine-Staging tracker hence doing
this here for documentation purpose.

Website: http://warspear-online.com/en/home

Download: http://cdn.warspear-online.com/distr/win32/ch0/warspear.exe

ProtectionID scan:

--- snip ---
-=[ ProtectionID v0.6.6.7 DECEMBER]=-
(c) 2003-2015 CDKiLLER & TippeX
Build 24/12/14-22:48:13
Ready...
Scanning -> C:\Warspear Online\warspear.exe
File Type : 32-Bit Exe (Subsystem : Win GUI / 2), Size : 5713920 (0573000h)
Byte(s)
Compilation TimeStamp : 0x553FDF8C -> Tue 28th Apr 2015 19:29:16 (GMT)
[TimeStamp] 0x553FDF8C -> Tue 28th Apr 2015 19:29:16 (GMT) | PE Header | - |
Offset: 0x000000F8 | VA: 0x004000F8 | -
[TimeStamp] 0x553FDF8C -> Tue 28th Apr 2015 19:29:16 (GMT) | DebugDirectory | -
| Offset: 0x003FBF14 | VA: 0x007FD914 | -
[!] Executable uses SEH Tables (/SAFESEH) (3845 calculated 3845 recorded... 0
invalid addresses) 
[File Heuristics] -> Flag #1 : 00000100000001001100000000000000 (0x0404C000)
[Entrypoint Section Entropy] : 6.55 (section #0) ".text   " | Size : 0x3FB182
(4174210) byte(s)
[DllCharacteristics] -> Flag : (0x8100) -> DEP | TSA
[SectionCount] 4 (0x4) | ImageSize 0x582000 (5775360) byte(s)
[VersionInfo] Product Name : Warspear Online client
[VersionInfo] Product Version : 4. 10. 1. 0
[VersionInfo] File Description : Warspear Online client
[VersionInfo] File Version : 4. 10. 1. 0
[VersionInfo] Original FileName : Warspear.exe
[VersionInfo] Internal Name : Warspear
[VersionInfo] Legal Copyrights : © AIGRIND LLC
[Debug Info] (record 1 of 1) (file offset 0x3FBF10)
Characteristics : 0x0 | TimeDateStamp : 0x553FDF8C (Tue 28th Apr 2015 19:29:16
(GMT)) | MajorVer : 0 / MinorVer : 0 -> (0.0)
Type : 2 (0x2) -> CodeView | Size : 0x85 (133) 
AddressOfRawData : 0x446810 | PointerToRawData : 0x444E10
CvSig : 0x53445352 | SigGuid 0E5E6C4C-A4DF-45A4-BEDECA8FC6C601AD
Age : 0x1 | Pdb :
c:\jenkins\workspace\Warspear-DESKTOP-DISTRIBUTION\warspear\projects\client\target\win32\vs2010\Warspear.pdb
[CdKeySerial] found "Registration Code" @ VA: 0x00424A90 / Offset: 0x00423090
[CdKeySerial] found "SerialNumber" @ VA: 0x004451C8 / Offset: 0x004437C8
[CdKeySerial] found "Serial Number" @ VA: 0x004451D8 / Offset: 0x004437D8
[CdKeySerial] found "SerialNumber" @ VA: 0x004451EE / Offset: 0x004437EE
[CdKeySerial] found "Invalid code" @ VA: 0x004B16E0 / Offset: 0x004AFAE0
[CdKeySerial] found "Invalid code" @ VA: 0x004B1734 / Offset: 0x004AFB34
[CompilerDetect] -> Visual C++ 10.0 (Visual Studio 2010)
[!] File appears to have no protection or is using an unknown protection
- Scan Took : 1.362 Second(s) [000000666h (1638) tick(s)] [499 of 573 scan(s)
done]
--- snip ---

App log file:

--- snip ---
18:12:11.125 [ INFO    ] Warspear Online v.4.10.1
18:12:11.129 [ INFO    ] Log created 30d 5m 2015y at 18:12:11
18:12:11.135 [ INFO    ] Running on: Microsoft Windows Version 5.1.2600 Service
Pack 3 [ws] [cpu:x32, lvl. 6, rev 9477] [logical processors:4] [ram
total:8360968192, available: 7202852864] [display:1920x1080, 32bpp]
18:12:11.146 [ INFO    ] User locale: en
18:12:11.156 [ INFO    ] Free heap: 7202852864
18:12:11.164 [ INFO    ] System memory pool size: 774240
18:12:11.169 [ INFO    ] Free heap after system init: 7202852864
18:12:11.180 [ INFO    ] Opening pack file: C:\Warspear Online\warspear.pak;
free memory: 7202852864
18:12:11.220 [ INFO    ] Opening pack file: C:\Warspear Online\warspear.pak.1;
free memory: 7202852864
18:12:11.231 [ WARNING ] Pack file not found.
18:12:11.236 [ INFO    ] Free memory before Render2D init:7202852864
18:12:11.241 [ INFO    ] Init Render2D: size = 390x260; bpp = 16
18:12:11.253 [ INFO    ] Render2D system memory pool size used: 489040
18:12:11.258 [ INFO    ] Free memory after Render2D init: 7202852864
18:12:11.322 [ INFO    ] Free memory after system deinit: 7202852864 
--- snip ---

The relevant part of trace log:

--- snip ---
$ WINEDEBUG=+tid,+seh,+relay wine ./warspear.exe >>log.txt 2>&1
...
0026:Call KERNEL32.GetModuleHandleW(008121ac L"NTDLL.DLL") ret=004d9bd1
0026:Ret  KERNEL32.GetModuleHandleW() retval=7bc20000 ret=004d9bd1
0026:Call KERNEL32.GetProcAddress(7bc20000,0033f6b8 "wine_get_version") ret= 
0026:Ret  KERNEL32.GetProcAddress() retval=7bc37184 ret=004d9d4c
...
0026:Call KERNEL32.ExitProcess(00000000) ret=004a6300
...
--- snip ---

App code with poor man's string obfuscation:

--- snip ---
004D9BC0   55               PUSH EBP
004D9BC1   8BEC             MOV EBP,ESP
004D9BC3   83EC 34          SUB ESP,34
004D9BC6   68 AC218100      PUSH warspear.008121AC       ; UNICODE "NTDLL.DLL"
004D9BCB   FF15 20D17F00    CALL DWORD PTR DS:[<&KERNEL32.GetModuleHandleW>]
004D9BD1   8945 FC          MOV DWORD PTR SS:[EBP-4],EAX
004D9BD4   C645 DC 00       MOV BYTE PTR SS:[EBP-24],0
004D9BD8   33C0             XOR EAX,EAX
004D9BDA   8945 DD          MOV DWORD PTR SS:[EBP-23],EAX
004D9BDD   8945 E1          MOV DWORD PTR SS:[EBP-1F],EAX
004D9BE0   8945 E5          MOV DWORD PTR SS:[EBP-1B],EAX
004D9BE3   8945 E9          MOV DWORD PTR SS:[EBP-17],EAX
004D9BE6   8945 ED          MOV DWORD PTR SS:[EBP-13],EAX
004D9BE9   8945 F1          MOV DWORD PTR SS:[EBP-F],EAX
004D9BEC   8945 F5          MOV DWORD PTR SS:[EBP-B],EAX
004D9BEF   66:8945 F9       MOV WORD PTR SS:[EBP-7],AX
004D9BF3   8845 FB          MOV BYTE PTR SS:[EBP-5],AL
004D9BF6   C645 CC D7       MOV BYTE PTR SS:[EBP-34],0D7
004D9BFA   C645 CD A0       MOV BYTE PTR SS:[EBP-33],0A0
004D9BFE   C645 CE FF       MOV BYTE PTR SS:[EBP-32],0FF
004D9C02   C645 CF 25       MOV BYTE PTR SS:[EBP-31],25
004D9C06   C645 D0 1C       MOV BYTE PTR SS:[EBP-30],1C
004D9C0A   C645 D1 BD       MOV BYTE PTR SS:[EBP-2F],0BD
004D9C0E   C645 D2 8F       MOV BYTE PTR SS:[EBP-2E],8F
004D9C12   C645 D3 42       MOV BYTE PTR SS:[EBP-2D],42
004D9C16   C645 D4 76       MOV BYTE PTR SS:[EBP-2C],76
004D9C1A   C645 D5 2F       MOV BYTE PTR SS:[EBP-2B],2F
004D9C1E   C645 D6 7D       MOV BYTE PTR SS:[EBP-2A],7D
004D9C22   C645 D7 7F       MOV BYTE PTR SS:[EBP-29],7F
004D9C26   C645 D8 90       MOV BYTE PTR SS:[EBP-28],90
004D9C2A   C645 D9 8C       MOV BYTE PTR SS:[EBP-27],8C
004D9C2E   C645 DA 51       MOV BYTE PTR SS:[EBP-26],51
004D9C32   C645 DB 45       MOV BYTE PTR SS:[EBP-25],45
004D9C36   0FBE4D CD        MOVSX ECX,BYTE PTR SS:[EBP-33]
004D9C3A   81F1 C9000000    XOR ECX,0C9
004D9C40   884D CD          MOV BYTE PTR SS:[EBP-33],CL
004D9C43   0FBE55 D7        MOVSX EDX,BYTE PTR SS:[EBP-29]
004D9C47   83EA 51          SUB EDX,51
004D9C4A   83F2 04          XOR EDX,4
004D9C4D   83C2 48          ADD EDX,48
004D9C50   8855 D7          MOV BYTE PTR SS:[EBP-29],DL
004D9C53   0FBE45 D3        MOVSX EAX,BYTE PTR SS:[EBP-2D]
004D9C57   35 E0000000      XOR EAX,0E0
004D9C5C   83E8 37          SUB EAX,37
004D9C5F   35 A2000000      XOR EAX,0A2
004D9C64   35 BD000000      XOR EAX,0BD
004D9C69   8845 D3          MOV BYTE PTR SS:[EBP-2D],AL
004D9C6C   0FBE4D D9        MOVSX ECX,BYTE PTR SS:[EBP-27]
004D9C70   83E9 23          SUB ECX,23
004D9C73   884D D9          MOV BYTE PTR SS:[EBP-27],CL
004D9C76   0FBE55 DA        MOVSX EDX,BYTE PTR SS:[EBP-26]
004D9C7A   83C2 1E          ADD EDX,1E
004D9C7D   8855 DA          MOV BYTE PTR SS:[EBP-26],DL
004D9C80   0FBE45 D2        MOVSX EAX,BYTE PTR SS:[EBP-2E]
004D9C84   83E8 2A          SUB EAX,2A
004D9C87   8845 D2          MOV BYTE PTR SS:[EBP-2E],AL
004D9C8A   0FBE4D CC        MOVSX ECX,BYTE PTR SS:[EBP-34]
004D9C8E   81F1 F1000000    XOR ECX,0F1
004D9C94   83F1 51          XOR ECX,51
004D9C97   884D CC          MOV BYTE PTR SS:[EBP-34],CL
004D9C9A   0FBE55 CF        MOVSX EDX,BYTE PTR SS:[EBP-31]
004D9C9E   83C2 2C          ADD EDX,2C
004D9CA1   83F2 34          XOR EDX,34
004D9CA4   8855 CF          MOV BYTE PTR SS:[EBP-31],DL
004D9CA7   0FBE45 D5        MOVSX EAX,BYTE PTR SS:[EBP-2B]
004D9CAB   83F0 56          XOR EAX,56
004D9CAE   83E8 03          SUB EAX,3
004D9CB1   8845 D5          MOV BYTE PTR SS:[EBP-2B],AL
004D9CB4   0FBE4D D8        MOVSX ECX,BYTE PTR SS:[EBP-28]
004D9CB8   83F1 67          XOR ECX,67
004D9CBB   83F1 6F          XOR ECX,6F
004D9CBE   81F1 EB000000    XOR ECX,0EB
004D9CC4   884D D8          MOV BYTE PTR SS:[EBP-28],CL
004D9CC7   0FBE55 D1        MOVSX EDX,BYTE PTR SS:[EBP-2F]
004D9CCB   83EA 56          SUB EDX,56
004D9CCE   8855 D1          MOV BYTE PTR SS:[EBP-2F],DL
004D9CD1   0FBE45 CE        MOVSX EAX,BYTE PTR SS:[EBP-32]
004D9CD5   35 CB000000      XOR EAX,0CB
004D9CDA   83F0 6E          XOR EAX,6E
004D9CDD   83C0 14          ADD EAX,14
004D9CE0   8845 CE          MOV BYTE PTR SS:[EBP-32],AL
004D9CE3   0FBE4D D0        MOVSX ECX,BYTE PTR SS:[EBP-30]
004D9CE7   83C1 43          ADD ECX,43
004D9CEA   884D D0          MOV BYTE PTR SS:[EBP-30],CL
004D9CED   0FBE55 DB        MOVSX EDX,BYTE PTR SS:[EBP-25]
004D9CF1   81F2 CB000000    XOR EDX,0CB
004D9CF7   83EA 20          SUB EDX,20
004D9CFA   8855 DB          MOV BYTE PTR SS:[EBP-25],DL
004D9CFD   0FBE45 D4        MOVSX EAX,BYTE PTR SS:[EBP-2C]
004D9D01   83E8 17          SUB EAX,17
004D9D04   8845 D4          MOV BYTE PTR SS:[EBP-2C],AL
004D9D07   0FBE4D D6        MOVSX ECX,BYTE PTR SS:[EBP-2A]
004D9D0B   81F1 F1000000    XOR ECX,0F1
004D9D11   83E9 5A          SUB ECX,5A
004D9D14   81F1 93000000    XOR ECX,93
004D9D1A   83E9 3C          SUB ECX,3C
004D9D1D   884D D6          MOV BYTE PTR SS:[EBP-2A],CL
004D9D20   6A 10            PUSH 10
004D9D22   8D55 CC          LEA EDX,DWORD PTR SS:[EBP-34]
004D9D25   52               PUSH EDX
004D9D26   8D45 DC          LEA EAX,DWORD PTR SS:[EBP-24]
004D9D29   50               PUSH EAX
004D9D2A   E8 B198FCFF      CALL warspear.004A35E0
004D9D2F   83C4 0C          ADD ESP,0C
004D9D32   C645 EC 00       MOV BYTE PTR SS:[EBP-14],0
004D9D36   33C9             XOR ECX,ECX
004D9D38  ^0F85 B8FEFFFF    JNZ warspear.004D9BF6
004D9D3E   8D55 DC          LEA EDX,DWORD PTR SS:[EBP-24]
004D9D41   52               PUSH EDX
004D9D42   8B45 FC          MOV EAX,DWORD PTR SS:[EBP-4]
004D9D45   50               PUSH EAX
004D9D46   FF15 58D27F00    CALL DWORD PTR DS:[<&KERNEL32.GetProcAddress>]
004D9D4C   F7D8             NEG EAX
004D9D4E   1BC0             SBB EAX,EAX
004D9D50   F7D8             NEG EAX
004D9D52   8BE5             MOV ESP,EBP
004D9D54   5D               POP EBP
004D9D55   C3               RETN
--- snip ---

Checks for other virtualization environments:

Sandboxie:

--- snip ---
0026:Call KERNEL32.GetModuleHandleW(0033f5dc L"SBIEDLL.DLL") ret=004da284
0026:Ret  KERNEL32.GetModuleHandleW() retval=00000000 ret=004da284
0026:Call KERNEL32.GetModuleHandleW(0033f65c L"SBIEDLLX.DLL") ret=004da292
0026:Ret  KERNEL32.GetModuleHandleW() retval=00000000 ret=004da292 
--- snip ---

Parallels Time Synchronization Driver

--- snip ---
0026:Call KERNEL32.CreateFileW(0033f684
L"\\\\.\\PrlTime",80000000,00000003,00000000,00000003,00000000,00000000)
ret=004db1ed
0026:Ret  KERNEL32.CreateFileW() retval=ffffffff ret=004db1ed
0026:Call KERNEL32.GetLastError() ret=004db20c
0026:Ret  KERNEL32.GetLastError() retval=00000002 ret=004db20c
--- snip ---

Using PnP manager device entries which fails early because of Wine stubs:

"vboxvideo" -> VirtualBox
"vmx_svgavboxvideo" -> VMware
"vpc-8042vmx_svgavboxvideo" -> VirtualPC

--- snip ---
0026:Ret  PE DLL (proc=0x7da82ea0,module=0x7da50000
L"setupapi.dll",reason=PROCESS_ATTACH,res=(nil)) retval=1
0026:Ret  KERNEL32.GetProcAddress() retval=7da5918c ret=004daf16
0026:Call KERNEL32.GetProcAddress(7dd70000,00812130 "CM_Disconnect_Machine")
ret=004daf33
0026:Ret  KERNEL32.GetProcAddress() retval=7da591ec ret=004daf33
0026:Call KERNEL32.GetProcAddress(7dd70000,00812148 "CM_Locate_DevNode_ExW")
ret=004daf50
0026:Ret  KERNEL32.GetProcAddress() retval=7da59444 ret=004daf50
0026:Call KERNEL32.GetProcAddress(7dd70000,00812160 "CM_Get_Child_Ex")
ret=004daf6d
0026:Ret  KERNEL32.GetProcAddress() retval=7dd81234 ret=004daf6d
0026:Call KERNEL32.GetProcAddress(7dd70000,00812170 "CM_Get_Sibling_Ex")
ret=004daf8f
0026:Ret  KERNEL32.GetProcAddress() retval=7dd81acc ret=004daf8f
0026:Call KERNEL32.GetProcAddress(7dd70000,00812184
"CM_Get_DevNode_Registry_Property_ExA") ret=004dafb1
0026:Ret  KERNEL32.GetProcAddress() retval=7da5927c ret=004dafb1
0026:Call setupapi.CM_Connect_MachineA(00000000,0033f668) ret=004dafd1
0026:fixme:setupapi:CM_Connect_MachineA ((null) 0x33f668) stub
0026:Ret  setupapi.CM_Connect_MachineA() retval=00000033 ret=004dafd1
--- snip ---

Xen VMM (no trace message)

The answer: http://portingteam.com/topic/7576-req-warspear-online/#entry84037

--- quote ---
The reason of that this game can't be run under Wine (and also under any
virtual machine) anymore is prevention of multi-boxing, which was made by
developers in 2.5.0:

(Russian topic on the official forum)
forum.warspear-online.com/index.php?topic=42597.msg140832#msg140832
--- quote ---

Since the vendor put those restrictions in - also specifically targeting Wine -
it's essentially a WONTFIX.

The restrictions can be easily circumvented/removed though.

$ sha1sum warspear.exe 
e216210bb8a81b3a1641fee650c8560e69db1b04  warspear.exe

$ du -sh warspear.exe 
38M    warspear.exe

$ wine --version
wine-1.7.44

Regards

-- 
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