http://bugs.winehq.org/show_bug.cgi?id=29550
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download, Installer, | |obfuscation Status|UNCONFIRMED |NEW URL| |http://www.systemax.jp/en/s | |ai/ CC| |focht@gmx.net Version|unspecified |1.3.36 Summary|Unable to install Paint |Paint Tool Sai installer |Tool Sai |complains about missing | |administrator rights (Wine | |defaults to NTFS for | |unknown fs type, | |FSCTL_GET_NTFS_VOLUME_DATA | |support needed) Ever Confirmed|0 |1
--- Comment #4 from Anastasius Focht focht@gmx.net 2012-01-08 13:04:24 CST --- Hello,
confirming. It seems the installation employs some kind of DRM scheme for trial period/license data which breaks due to Wine defaulting to NTFS for unknown file system type.
Took a bit to find the relevant part because the action is done on different thread and the error condition is asynchronously propagated through message posting.
--- snip --- ... 0037:Call KERNEL32.GetLogicalDrives() ret=0045530f 0037:Ret KERNEL32.GetLogicalDrives() retval=02000004 ret=0045530f 0037:Call KERNEL32.GetDriveTypeA(2dfee570 "c:\") ret=00455363 0037:Ret KERNEL32.GetDriveTypeA() retval=00000003 ret=00455363 0037:Call KERNEL32.GetVolumeInformationA(2dfee570 "c:\",00000000,00000000,00000000,2dfee580,2dfee57c,2dfee584,0000003f) ret=004553a3 0037:Ret KERNEL32.GetVolumeInformationA() retval=00000001 ret=004553a3 0037:Call ntdll._memicmp(2dfee584 "NTFS",004cd5c0 "NTFS",00000004) ret=004553b5 0037:Ret ntdll._memicmp() retval=00000000 ret=004553b5 0037:Call KERNEL32.CreateFileA(2dfee078 "\\.\c:",80000000,00000003,00000000,00000003,00000000,00000000) ret=004554a6 0037:Ret KERNEL32.CreateFileA() retval=000001e0 ret=004554a6 0037:Call KERNEL32.DeviceIoControl(000001e0,00090064,00000000,00000000,2dfee1c0,00000060,2dfee064,00000000) ret=004558ff 0037:Ret KERNEL32.DeviceIoControl() retval=00000000 ret=004558ff 0037:Call KERNEL32.CloseHandle(000001e0) ret=004558be 0037:Ret KERNEL32.CloseHandle() retval=00000001 ret=004558be 0037:Call KERNEL32.GetDriveTypeA(2dfee570 "c:\") ret=00455363 0037:Ret KERNEL32.GetDriveTypeA() retval=00000003 ret=00455363 0037:Call KERNEL32.GetVolumeInformationA(2dfee570 "c:\",00000000,00000000,00000000,2dfee580,2dfee57c,2dfee584,0000003f) ret=004553a3 0037:Ret KERNEL32.GetVolumeInformationA() retval=00000001 ret=004553a3 0037:Call ntdll._memicmp(2dfee584 "NTFS",004cd5c0 "NTFS",00000004) ret=004553b5 0037:Ret ntdll._memicmp() retval=00000000 ret=004553b5 0037:Call KERNEL32.CreateFileA(2dfee078 "\\.\c:",80000000,00000003,00000000,00000003,00000000,00000000) ret=004554a6 0037:Ret KERNEL32.CreateFileA() retval=000001e0 ret=004554a6 0037:Call KERNEL32.DeviceIoControl(000001e0,00090064,00000000,00000000,2dfee1c0,00000060,2dfee064,00000000) ret=004558ff 0037:Ret KERNEL32.DeviceIoControl() retval=00000000 ret=004558ff 0037:Call KERNEL32.VirtualAlloc(00000000,00000000,00001000,00000004) ret=00455587 0037:Ret KERNEL32.VirtualAlloc() retval=00000000 ret=00455587 0037:Call KERNEL32.CloseHandle(000001e0) ret=004558be 0037:Ret KERNEL32.CloseHandle() retval=00000001 ret=004558be 0037:Call user32.PostMessageA(00080078,00000111,00000004,00000000) ret=00420960 0037:trace:msg:PostMessageW hwnd 0x80078 msg 111 (WM_COMMAND) wp 4 lp 0 0037:Ret user32.PostMessageA() retval=00000001 ret=00420960 ... 0035:Call user32.MessageBoxA(00000000,001859f2 "SAI can not complete setup process because current user dose not have administrator right. Please launch SAI with one of the following way.\n\n - Logon as administrator and launch SAI\n\n - Right click SAI program file -> [Run As Other User]?Enter administrator account (Windows 2000/XP)\n\n - Right c"...,00000000,00000010) ret=00493586 --- snip ---
MSDN entry for FSCTL_GET_NTFS_VOLUME_DATA control code:
http://msdn.microsoft.com/en-us/library/windows/desktop/aa364569.aspx
NTFS_VOLUME_DATA_BUFFER structure:
http://msdn.microsoft.com/en-us/library/windows/desktop/aa365256.aspx
Implementing that ioctl and returning fake data is not enough, you also need sane FSCTL_GET_NTFS_FILE_RECORD data (hence NTFS_VOLUME_DATA_BUFFER BytesPerFileRecordSegment for proper buffer size).
This source code might be helpful to understand how low-level file system access/info retrieval is done:
"FDump - Dumping File Sectors Directly from Disk using Logical Offsets"
http://www.codeproject.com/KB/files/FDump.aspx
(FsReadFileMFT function for similar sequence)
http://www.codeproject.com/script/Articles/ViewDownloads.aspx?aid=32169&...
---
There is also less intrusive code for handling install on FAT32 file systems.
For this to work you need kernel32.dll GetVolumeInformationW() to return FAT32 fs type instead of NTFS for default case.
(http://source.winehq.org/git/wine.git/blob/d5ad5ca91ca6aa1a3eb2a3849bb0dbcb6...)
This allows the app to install/start.
If the installer succeeds, a file containing encrypted DRM data is created in "C:\Documents and Settings\All Users\Application Data\SYSTEMAX Software Development\SAI\NotRemoveMe.ssd"
Additionally a registry entry, pointing to DRM file:
[HKEY_LOCAL_MACHINE\Software\SYSTEMAX Software Development\Sai] "SetupInfo"="C:\users\Public\Application Data\SYSTEMAX Software Development\SAI\NotRemoveMe.ssd"
---
Funny tidbit (from their website) ...
--- quote --- To use this software, the skills of basic file operation on Windows is required. Please do not buy the license for this software if you do not have the skills of basic file operation on Windows. --- quote ---
_o0_
Straight through google translate?
Seems not: http://translate.google.com/translate?sl=ja&tl=en&js=n&prev=_t&a...
--- quote --- Furthermore, in the installation settings, use the product license, and a basic knowledge of computer basics (especially those related to the files and folders), please note that it will be imperative that it is mastered. --- quote ---
;-)
$ sha1sum sai-1.1.0-ful-en.exe fb1876e370d431f21df06428ca6ccf35de727000 sai-1.1.0-ful-en.exe
$ wine --version wine-1.3.36-172-gb00e703
There is also an interesting issue with +relay, I'll make that a separate bug.
Regards