[Bug 29550] Paint Tool Sai installer complains about missing administrator rights (Wine defaults to NTFS for unknown fs type, FSCTL_GET_NTFS_VOLUME_DATA support needed)

wine-bugs at winehq.org wine-bugs at winehq.org
Sun Jan 8 13:04:24 CST 2012


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

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |download, Installer,
                   |                            |obfuscation
             Status|UNCONFIRMED                 |NEW
                URL|                            |http://www.systemax.jp/en/s
                   |                            |ai/
                 CC|                            |focht at 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 at 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&zep=fdump_src%2ffdump%2ffs_io.c&rzp=%2fKB%2ffiles%2fFDump%2f%2ffdump_src.zip

---

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/d5ad5ca91ca6aa1a3eb2a3849bb0dbcb6f67f5d0:/dlls/kernel32/volume.c#l650)

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&hl=en&ie=UTF-8&layout=2&eotf=1&u=http%3A%2F%2Fwww.systemax.jp%2Fja%2Fsai%2F

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

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