[Bug 16697] HyperChem 8.0.x's licensing system fails to properly generate a 'locking code' (volume/fs serial for "c:" must be non-zero for license/machine id generator)

WineHQ Bugzilla wine-bugs at winehq.org
Sun Apr 19 20:33:04 CDT 2020


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

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|---                         |DUPLICATE
             Status|NEW                         |RESOLVED
                 CC|                            |focht at gmx.net
          Component|-unknown                    |programs
            Summary|HyperChem 8.0.x's licensing |HyperChem 8.0.x's licensing
                   |system fails to properly    |system fails to properly
                   |generate a 'locking code,'  |generate a 'locking code'
                   |preventing program usage    |(volume/fs serial for "c:"
                   |                            |must be non-zero for
                   |                            |license/machine id
                   |                            |generator)

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

confirming, still present.

Spoiler: It's bug 17823

--- snip ---
$ pwd
/home/focht/.wine/drive_c/Hyper80/Program

$ WINEDEBUG=+seh,+relay wine ./chem.exe >>log.txt 2>&1
...
002b:Call user32.MessageBoxA(00000000,007cd1a0 "No license was found for this
application.  Would you like to invoke the SentinelLM Express Activator in
order to obtain a license?",007bb168 "Activate License",00000024) ret=007d513a 
...
002b:Call KERNEL32.CreateProcessA(00000000,003eb160 "C:\\windows\\Rainbow
Technologies\\Client Activator\\2.0\\English\\ACTIVATOR.EXE
@\"C:\\users\\focht\\Temp\\CaActiva.rsp\"",00000000,00000000,00000001,00000000,00000000,003eb265
"C:\\Hyper80\\Program",0032f3b4,0032f3f8) ret=003e130e 
...
002b:Ret  KERNEL32.CreateProcessA() retval=00000001 ret=003e130e 
--- snip ---

Content of the response file for the activator:

--- snip ---
-T:0
-D:-1
-E:-1
-M:-1
-C:"C:\Hyper80\Program\HC80-Standalone.rac"
--- snip ---

Keep a backup copy of the response file, it gets deleted on each run.

Manually running the activator:

--- snip ---
$ pwd
/home/focht/.wine/drive_c/windows/Rainbow Technologies/Client
Activator/2.0/English

$ WINEDEBUG=+seh,+relay,+snoop,+mountmgr,+ntdll,+server wine ./ACTIVATOR.EXE
@CaActiva.rsp >>log.txt 2>&1
...
0009:Call KERNEL32.LoadLibraryA(017b9398
"C:\\users\\focht\\Temp\\CAFILES\\lsapiw32.dll") ret=0040c9b3 
...
0009:Ret  KERNEL32.LoadLibraryA() retval=01c80000 ret=0040c9b3
0009:Call KERNEL32.GetProcAddress(01c80000,00495399 "VLSinitialize")
ret=0040d593
0009:Ret  KERNEL32.GetProcAddress() retval=01d1031f ret=0040d593
0009:CALL LSAPIW32.VLSinitialize(<unknown, check return>) ret=0040d59b
...
0009:Call ws2_32.WSAStartup(00000101,0032f068) ret=01c9bd97
0009:Ret  ws2_32.WSAStartup() retval=00000000 ret=01c9bd97
0009:RET  LSAPIW32.VLSinitialize() retval=00000000 ret=0040d59b
...
0009:Call KERNEL32.GetProcAddress(01c80000,004953a7 "VLSerrorHandle")
ret=0040d5c9
0009:Ret  KERNEL32.GetProcAddress() retval=01d10143 ret=0040d5c9
0009:CALL LSAPIW32.VLSerrorHandle(<unknown, check return>) ret=0040d5d0
0009:RET  LSAPIW32.VLSerrorHandle() retval=00000000 ret=0040d5d0
0009:Call KERNEL32.GetProcAddress(01c80000,004953c1 "VLSinitMachineID")
ret=0040d635
0009:Ret  KERNEL32.GetProcAddress() retval=01d102ec ret=0040d635
0009:CALL LSAPIW32.VLSinitMachineID(<unknown, check return>) ret=0040d63c
0009:RET  LSAPIW32.VLSinitMachineID() retval=00000000 ret=0040d63c
0009:Call KERNEL32.GetProcAddress(01c80000,004953d2 "VLSgetMachineID")
ret=0040d673
0009:Ret  KERNEL32.GetProcAddress() retval=01d10220 ret=0040d673
0009:CALL LSAPIW32.VLSgetMachineID(00000004,0032f070,0032f190) ret=0040d67f 
...
0009:Call KERNEL32.GetLogicalDriveStringsA(00000400,0032ec0c) ret=01c9b77d 
...
0009:Ret  KERNEL32.GetLogicalDriveStringsA() retval=0000000c ret=01c9b77d
0009:Call KERNEL32.GetDriveTypeA(0032ec0c "C:\\") ret=01c9b793 
...
0009:Ret  KERNEL32.GetDriveTypeA() retval=00000003 ret=01c9b793 
...
0009:Call KERNEL32.GetVolumeInformationA(0032ec0c
"C:\\",00000000,00000000,0032f00c,00000000,00000000,00000000,00000000)
ret=01c9b7a9 
...
0009: get_handle_fd( handle=0088 )
0009: get_handle_fd() = BAD_DEVICE_TYPE { type=0, cacheable=1, access=00000000,
options=00000000 } 
...
0009: ioctl( code=00024000,
async={handle=0088,event=0000,iosb=0032d718,user=019d8a18,apc=00000000,apc_context=00000000},
in_data={} ) 
...
0025:trace:mountmgr:harddisk_ioctl ioctl 24000 insize 0 outsize 804 
...
0009: select() = KERNEL_APC {
call={APC_ASYNC_IO,user=019d8a18,sb=0032d718,status=INVALID_DEVICE_REQUEST},
apc_handle=0090, context={} } 
...
0009:trace:ntdll:NtSetInformationFile
(0x88,0x32d6b0,0x32d6a8,0x00000008,0x0000000e)
...
0009:Ret  ntdll.NtSetInformationFile() retval=c00000cb ret=7b013e1a 
...
0009:Call
ntdll.NtSetInformationFile(00000088,0032ce80,0032ce78,00000008,0000000e)
ret=7b013e1a
0009:trace:ntdll:NtSetInformationFile
(0x88,0x32ce80,0x32ce78,0x00000008,0x0000000e)
0009:Ret  ntdll.NtSetInformationFile() retval=c00000cb ret=7b013e1a
0009:Call ntdll.RtlNtStatusToDosError(c00000cb) ret=7b013e59
0009:Ret  ntdll.RtlNtStatusToDosError() retval=00000042 ret=7b013e59
0009:trace:ntdll:FILE_CreateFile handle=0x32d700 access=80100000
name=L"\\??\\C:\\.windows-serial" objattr=00000040 root=(nil) sec=(nil)
io=0x32d710 alloc_size=(nil) attr=00000000 sharing=00000003 disp=1
options=00000020 ea=(nil).0x00000000
0009:warn:ntdll:FILE_CreateFile L"\\??\\C:\\.windows-serial" not found
(c0000034)
...
0009:Ret  KERNEL32.GetVolumeInformationA() retval=00000001 ret=01c9b7a9 
...
0009:Call KERNEL32.GetDriveTypeA(0032ec10 "D:\\") ret=01c9b793 
...
0009:Ret  KERNEL32.GetDriveTypeA() retval=00000005 ret=01c9b793
0009:Call KERNEL32.GetDriveTypeA(0032ec14 "Z:\\") ret=01c9b793 
...
0009:Ret  KERNEL32.GetDriveTypeA() retval=00000003 ret=01c9b793
...
0009:Call KERNEL32.GetVolumeInformationA(0032ec14
"Z:\\",00000000,00000000,0032f00c,00000000,00000000,00000000,00000000)
ret=01c9b7a9 
...
0009: ioctl( code=00024000,
async={handle=0088,event=0000,iosb=0032d718,user=019d8a18,apc=00000000,apc_context=00000000},
in_data={} )
0009: ioctl() = NOT_SUPPORTED { wait=0000, options=00000060, out_data={} }
0009:fixme:ntdll:server_ioctl_file Unsupported ioctl 24000 (device=2 access=1
func=0 method=0) 
...
0009:trace:ntdll:FILE_CreateFile handle=0x32d700 access=80100000
name=L"\\??\\Z:\\.windows-serial" objattr=00000040 root=(nil) sec=(nil)
io=0x32d710 alloc_size=(nil) attr=00000000 sharing=00000003 disp=1
options=00000020 ea=(nil).0x00000000
0009:warn:ntdll:FILE_CreateFile L"\\??\\Z:\\.windows-serial" not found
(c0000034)
...
0009:Ret  KERNEL32.GetVolumeInformationA() retval=00000001 ret=01c9b7a9
0009:RET  LSAPIW32.VLSgetMachineID() retval=00000000 ret=0040d67f
0009:Call KERNEL32.GetProcAddress(01c80000,004953e2 "VLSmachineIDtoLockCode")
ret=0040d6bb
0009:Ret  KERNEL32.GetProcAddress() retval=01d10363 ret=0040d6bb
0009:CALL LSAPIW32.VLSmachineIDtoLockCode(0032f070,00000000,0032f194)
ret=0040d6c7
0009:RET  LSAPIW32.VLSmachineIDtoLockCode() retval=00000000 ret=0040d6c7 
...
--- snip ---

The lock code is generated from the machine id which is derived from the volume
serial of the first fixed drive found (usually 'C:'). You can test by yourself
by setting it to non-zero value or using Wine-Staging.

I will refine bug 17823 summary line to be more generic. It's already "staged"
and a collector.

$ sha1sum hyper8010.zip 
e3d3cad9b233180213b8ec838d090f6b87126e8e  hyper8010.zip

$ du -sh hyper8010.zip 
179M    hyper8010.zip

$ wine --version
wine-5.6-193-g59987bc9ec

Regards

*** This bug has been marked as a duplicate of bug 17823 ***

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