https://bugs.winehq.org/show_bug.cgi?id=37802
Anastasius Focht focht@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@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