[Bug 37802] Theme Park World crashes on startup (broken pre-Win2K era CD-installer fails to install/copy SafeDisc v1.x driver to 'system32\drivers')

wine-bugs at winehq.org wine-bugs at winehq.org
Sat Jan 10 06:08:12 CST 2015


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

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |Installer
             Status|UNCONFIRMED                 |NEW
            Summary|Unhandled exception when    |Theme Park World crashes on
                   |starting Theme Park World   |startup (broken pre-Win2K
                   |                            |era CD-installer fails to
                   |                            |install/copy SafeDisc v1.x
                   |                            |driver to
                   |                            |'system32\drivers')
     Ever confirmed|0                           |1

--- Comment #10 from Anastasius Focht <focht at gmx.net> ---
Hello folks,

I found a distributed "backup" on the Internet still being seeded which
contains the original .ISO image (thanks to whom it may concern) :)

A copy protection scan using 'Protection ID' tool reveals what I already said:

--- snip ---
-=[ ProtectionID v0.6.5.5 OCTOBER]=-
(c) 2003-2013 CDKiLLER & TippeX
Build 31/10/13-21:09:09
Ready...

Scanning -> C:\Program Files\Bullfrog\Theme Park World\dplayerx.dll
File Type : 32-Bit Dll (Subsystem : Win GUI / 2), Size : 173568 (02A600h)
Byte(s)
[File Heuristics] -> Flag : 00000000000001001100000000000001 (0x0004C001)
[Entrypoint Section Entropy] : 6.51
[!] Safedisc core dll (dplayerx.dll) detected!
[CompilerDetect] -> Visual C++ 5.0
- Scan Took : 0.261 Second(s) [000000105h tick(s)] [229 scan(s) done]

Scanning -> C:\Program Files\Bullfrog\Theme Park World\drvmgt.dll
File Type : 32-Bit Dll (Subsystem : Win GUI / 2), Size : 31744 (07C00h) Byte(s)
[File Heuristics] -> Flag : 00000000000001001100000000000000 (0x0004C000)
[Entrypoint Section Entropy] : 6.35
[!] Safedisc driver managment dll (drvmgt.dll) detected!
[CompilerDetect] -> Visual C++ 5.0
- Scan Took : 0.258 Second(s) [000000102h tick(s)] [229 scan(s) done]

Scanning -> C:\Program Files\Bullfrog\Theme Park World\secdrv.sys
File Type : 32-Bit Driver (good checksum) (Subsystem : Native / 1), Size :
10848 (02A60h) Byte(s)
-> File has 2368 (0940h) bytes of appended data starting at offset 02120h
[File Heuristics] -> Flag : 00000100000000000000000000000111 (0x04000007)
[Entrypoint Section Entropy] : 5.26
[Debug Info]
Characteristics : 0x0 | TimeDateStamp : 0x37FB7638 | MajorVer : 0 / MinorVer :
0 -> (0.0)
Type : 1 -> Coff | Size : 0x74B (1867)
AddressOfRawData : 0x0 | PointerToRawData : 0x2120
[!] Safedisc protection driver (secdrv.sys) detected!
- Scan Took : 0.262 Second(s) [000000106h tick(s)] [128 scan(s) done]

Scanning -> C:\Program Files\Bullfrog\Theme Park World\tp.exe
File Type : 32-Bit Exe (Subsystem : Win GUI / 2), Size : 253999 (03E02Fh)
Byte(s)
-> File has 6191 (0182Fh) bytes of appended data starting at offset 03C800h
[File Heuristics] -> Flag : 00000000000001001100000000000101 (0x0004C005)
[Entrypoint Section Entropy] : 6.57
[!] Safedisc v1.41.000 detected !
[CompilerDetect] -> Visual C++ 5.0
- Scan Took : 0.296 Second(s) [000000128h tick(s)] [533 scan(s) done]
--- snip ---

-> Safedisc v1.41.000 = needs 'Windows 2000' (bug 27503)

The driver file is indeed missing from
'C:\\windows\\system32\\drivers\\\\SECDRV.SYS' after installation.

I've traced the installer and it turns out this is one of the old IS installers
that is broken by design on newer Windows version (also Wine being affected).

Already analysed here: bug 33000

--- snip ---
...
0029:Call advapi32.CreateServiceA(0155e720,003e6038 "Secdrv",003e6038
"Secdrv",000f01ff,00000001,00000003,00000001,0033f688
"C:\\windows\\system32\\drivers\\\\SECDRV.SYS",00000000,00000000,00000000,00000000,00000000)
ret=003e1b35 
...
0029:Ret  advapi32.CreateServiceA() retval=0156b430 ret=003e1b35
...
0029:Call KERNEL32.GetSystemDirectoryA(0033f370,00000100) ret=003e17b8
0029:Ret  KERNEL32.GetSystemDirectoryA() retval=00000013 ret=003e17b8
0029:Call KERNEL32.lstrlenA(0033f370 "C:\\windows\\system32") ret=003e17cf
0029:Ret  KERNEL32.lstrlenA() retval=00000013 ret=003e17cf
0029:Call KERNEL32.lstrlenA(0033f370 "C:\\windows\\system32\\drivers\\")
ret=003e17f0
0029:Ret  KERNEL32.lstrlenA() retval=0000001c ret=003e17f0
0029:Call KERNEL32.GetFileAttributesA(0033f370
"C:\\windows\\system32\\drivers\\\\SECDRV.SYS") ret=003e1fdc
0029:Ret  KERNEL32.GetFileAttributesA() retval=ffffffff ret=003e1fdc
...
0029:Call KERNEL32.GetLastError() ret=003e3598
0029:Ret  KERNEL32.GetLastError() retval=00000002 ret=003e3598
0029:Call KERNEL32.CopyFileA(0033f570 "C:\\Program
Files\\Bullfrog\\SECDRV.SYS",0033f370
"C:\\windows\\system32\\drivers\\\\SECDRV.SYS",00000000) ret=003e187b
0029:Ret  KERNEL32.CopyFileA() retval=00000000 ret=003e187b
0029:Call KERNEL32.GetLastError() ret=003e1885
0029:Ret  KERNEL32.GetLastError() retval=00000002 ret=003e1885
0029:Call advapi32.CloseServiceHandle(0155e720) ret=003e1b77
...
--- snip ---

You have three options:

1) CD-installer workaround: in the 'Select Components' dialog, click 'browse'
button and append two(!) backslashes to the default installation path.
(https://bugs.winehq.org/show_bug.cgi?id=33000#c1)

2) copy the driver binary manually afterwards

3) remove the service entry for the driver from registry using following
command:

--- snip ---
$ wine reg delete "HKLM\\System\\CurrentControlSet\\Services\\Secdrv"
--- snip ---

The registry key removal will cause the DRM to re-install the driver part on
startup (create service + copy driver file).
It has it's own installation routine which doesn't suffer from the broken
InstallShield/CD-installer part:

--- snip ---
0009:Call advapi32.CreateServiceA(00130760,10006038 "Secdrv",10006038
"Secdrv",000f01ff,00000001,00000003,00000001,0033f8c0
"C:\\windows\\system32\\drivers\\\\SECDRV.SYS",00000000,00000000,00000000,00000000,00000000)
ret=10001b35 
...
0009:Call KERNEL32.GetFileAttributesA(0033f5a8
"C:\\windows\\system32\\drivers\\\\SECDRV.SYS") ret=10001fdc
...
0009:Ret  KERNEL32.GetFileAttributesA() retval=ffffffff ret=10001fdc
...
0009:Call KERNEL32.CopyFileA(0033f7a8 "C:\\Program Files\\Bullfrog\\Theme Park
World\\SECDRV.SYS",0033f5a8
"C:\\windows\\system32\\drivers\\\\SECDRV.SYS",00000000) ret=1000187b 
...
0009:Ret  KERNEL32.CopyFileA() retval=00000001 ret=1000187b 
--- snip ---

After that the kernel service runs.

Starting the game 'TP.EXE' yields:

--- snip ---
$ WINEDEBUG=+tid,+msgbox wine ./tp.exe 
...
0009:trace:msgbox:MSGBOX_OnInit L"Please insert the correct CD-ROM, select OK
and restart application"
--- snip ---

Which is of course correct since I don't have the original media.
But it's a proof that the SafeDisc drive management code is already at work
here.

I'd rather make this bug report a dupe of bug 33000 since it precedes bug 27503

Again: make sure you have 'Windows 2000' set (people still forget this, even if
mentioned a hundred times).

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