[Bug 33000] New: Sim Theme Park fails to install/copy SafeDisc v1.x driver to system32\drivers

wine-bugs at winehq.org wine-bugs at winehq.org
Sun Feb 17 05:25:41 CST 2013


http://bugs.winehq.org/show_bug.cgi?id=33000

             Bug #: 33000
           Summary: Sim Theme Park fails to install/copy SafeDisc v1.x
                    driver to system32\drivers
           Product: Wine
           Version: 1.5.24
          Platform: x86
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: -unknown
        AssignedTo: wine-bugs at winehq.org
        ReportedBy: focht at gmx.net
    Classification: Unclassified


Hello folks,

a guy on IRC #winehq asked for help to get "Sim Theme Park" to work.
The game is copy-protected and the installer seems somehow fail to installer
the SafeDisc 1.x driver properly in system32/drivers folder.

Manually copying the driver after installation lets the game recognize the
original disc (for that SafeDisc 1.x has to be run in Win2K mode, see bug
12653) -> workaround.

The installer is Installshield based (year 2000).

+tid,+seh,+relay gives:

--- snip ---
0024:Call KERNEL32.CreateProcessW(00000000,0032e398
L"E:\\USEnglish\\Setup\\SETUP.EXE",00000000,00000000,00000000,00000400,00000000,001a7690
L"E:\\USEnglish\\Setup\\",0032da40,0032da30) ret=7e51f1c3
0026:trace:relay:load_list L"RelayExclude" =
L"ntdll.RtlEnterCriticalSection;ntdll.RtlLeaveCriticalSection;kernel32.48;kernel32.49;kernel32.94;kernel32.95;kernel32.96;kernel32.97;kernel32.98;kernel32.TlsGetValue;kernel32.TlsSetValue;kernel32.FlsGetValue;kernel32.FlsSetValue;kernel32.SetLastError"
0026:trace:relay:load_list L"RelayFromExclude" =
L"winex11.drv;user32;gdi32;advapi32;kernel32"
0026:Call KERNEL32.__wine_kernel_init() ret=7bc54420
0024:Ret  KERNEL32.CreateProcessW() retval=00000001 ret=7e51f1c3 
...
0028:Call KERNEL32.CreateProcessA(00000000,0015a7d0
"C:\\users\\focht\\Temp\\_INS5176._MP",00000000,00000000,00000000,00000000,00000000,00000000,0081e024,0081e068)
ret=f6edb8d0
002a:trace:relay:load_list L"RelayExclude" =
L"ntdll.RtlEnterCriticalSection;ntdll.RtlLeaveCriticalSection;kernel32.48;kernel32.49;kernel32.94;kernel32.95;kernel32.96;kernel32.97;kernel32.98;kernel32.TlsGetValue;kernel32.TlsSetValue;kernel32.FlsGetValue;kernel32.FlsSetValue;kernel32.SetLastError"
002a:trace:relay:load_list L"RelayFromExclude" =
L"winex11.drv;user32;gdi32;advapi32;kernel32"
002a:Call KERNEL32.__wine_kernel_init() ret=7bc54420
0028:Ret  KERNEL32.CreateProcessA() retval=00000001 ret=f6edb8d0
...

002a:Call KERNEL32.lstrcmpA(0033f098 "SdSelectFolder",0153f897
"SdSelectFolder") ret=0040fbc8
002a:Ret  KERNEL32.lstrcmpA() retval=00000000 ret=0040fbc8
...
002a:Call KERNEL32.lstrcmpiA(0033f498 "Edit",00480738 "Static") ret=0040e9cb
002a:Ret  KERNEL32.lstrcmpiA() retval=ffffffff ret=0040e9cb
002a:Call user32.SetWindowTextA(000200fc,0033f8a8 "SimTheme Park") ret=0040e9ff 
...
002a:Call KERNEL32.lstrcpyA(0033fb74,001bf1ca "C:\\Program Files\\SimTheme
Park") ret=00439e6d
002a:Ret  KERNEL32.lstrcpyA() retval=0033fb74 ret=00439e6d 
...
002a:Call KERNEL32.LoadLibraryA(0033f254 "C:\\Program Files\\SimTheme
Park\\drvmgt.dll") ret=0041f8d6
002a:Call PE DLL (proc=0x19023b0,module=0x1900000
L"drvmgt.dll",reason=PROCESS_ATTACH,res=(nil)) 
...
002a:Call KERNEL32.GetProcAddress(01900000,001788be "Setup") ret=00455b5f
002a:Ret  KERNEL32.GetProcAddress() retval=019013d0 ret=00455b5f
...
002a:Call KERNEL32.CreateFileA(0033f690
"\\\\.\\Secdrv",c0000000,00000003,00000000,00000003,00000080,00000000)
ret=0190107b
002a:Ret  KERNEL32.CreateFileA() retval=ffffffff ret=0190107b 
...
002a:Call advapi32.CreateServiceA(0156fae8,01906038 "Secdrv",01906038
"Secdrv",000f01ff,00000001,00000003,00000001,0033f688
"C:\\windows\\system32\\drivers\\\\SECDRV.SYS",00000000,00000000,00000000,00000000,00000000)
ret=01901b35 
...
002a:Ret  advapi32.CreateServiceA() retval=0156fd30 ret=01901b35 
...
002a:fixme:service:SetServiceObjectSecurity 0x156fd30 4 0x33f274
002a:Ret  advapi32.SetServiceObjectSecurity() retval=00000001 ret=01901a5f
002a:Call KERNEL32.GetSystemDirectoryA(0033f370,00000100) ret=019017b8
002a:Ret  KERNEL32.GetSystemDirectoryA() retval=00000013 ret=019017b8
002a:Call KERNEL32.lstrlenA(0033f370 "C:\\windows\\system32") ret=019017cf
002a:Ret  KERNEL32.lstrlenA() retval=00000013 ret=019017cf
002a:Call KERNEL32.lstrlenA(0033f370 "C:\\windows\\system32\\drivers\\")
ret=019017f0
002a:Ret  KERNEL32.lstrlenA() retval=0000001c ret=019017f0
002a:Call KERNEL32.GetFileAttributesA(0033f370
"C:\\windows\\system32\\drivers\\\\SECDRV.SYS") ret=01901fdc
002a:Ret  KERNEL32.GetFileAttributesA() retval=ffffffff ret=01901fdc 
...
002a:Call KERNEL32.CopyFileA(0033f570 "C:\\Program Files\\SECDRV.SYS",0033f370
"C:\\windows\\system32\\drivers\\\\SECDRV.SYS",00000000) ret=0190187b
002a:Ret  KERNEL32.CopyFileA() retval=00000000 ret=0190187b
002a:Call KERNEL32.GetLastError() ret=01901885
002a:Ret  KERNEL32.GetLastError() retval=00000002 ret=01901885 
...
--- snip ---

It looks like the path passed to drvmgt.dll "Setup" API function (first
argument) needs to have a backslash appended.
Somewhere in installshield script this path is constructed, most likely at the
point of "SdSelectFolder" (Installshield folder selection).
To properly analyze this, the installshield script needs to be
decrypted/decompiled... low priority.

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