[Bug 27827] Creo Elements/Direct Modeling Express 4.0 loader failure due to missing msvcrt.dll dependency (native netapi32.dll imports msvcrt functions)

wine-bugs at winehq.org wine-bugs at winehq.org
Thu Jul 21 16:09:36 CDT 2011


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

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|Creo Elements/Direct        |Creo Elements/Direct
                   |Modeling Express 4.0 loader |Modeling Express 4.0 loader
                   |failure due to missing      |failure due to missing
                   |msvcrt.dll dependency       |msvcrt.dll dependency
                   |                            |(native netapi32.dll
                   |                            |imports msvcrt functions)

--- Comment #7 from Anastasius Focht <focht at gmx.net> 2011-07-21 16:09:34 CDT ---
Hello,

why adding msvcrt reference to import list "magically" worked...

Dumping Wine netapi32.dll in-memory PE (along with import descriptor table)
with your patch applied reveals:

--- snip ---
->Import Table
   1. ImageImportDescriptor:
    OriginalFirstThunk:  0x0001F470
    TimeDateStamp:       0x00000000  (GMT: Thu Jan  1 00:00:00 1970)
    ForwarderChain:      0x00000000
    Name:                0x0001F99C  ("iphlpapi.dll")
    FirstThunk:          0x0001F558

    Ordinal/Hint API name
    ------------ ---------------------------------------
    0x0020       "GetIfEntry"
    0x0026       "GetIpAddrTable"

   2. ImageImportDescriptor:
    OriginalFirstThunk:  0x0001F47C
    TimeDateStamp:       0x00000000  (GMT: Thu Jan  1 00:00:00 1970)
    ForwarderChain:      0x00000000
    Name:                0x0001F9A9  ("ws2_32.dll")
    FirstThunk:          0x0001F564

    Ordinal/Hint API name
    ------------ ---------------------------------------
    0x006F       "WSAGetLastError"
    0x0047       "WSARecv"
    0x0049       "WSARecvFrom"
    0x004C       "WSASend"
    0x004E       "WSASendTo"
    0x0052       "WSASocketA"
    0x0003       "closesocket"
    0x0004       "connect"
    0x0034       "gethostbyname"
    0x000B       "inet_addr"
    0x000C       "inet_ntoa"
    0x0012       "select"
    0x0015       "setsockopt"

   3. ImageImportDescriptor:
    OriginalFirstThunk:  0x0001F4B4
    TimeDateStamp:       0x00000000  (GMT: Thu Jan  1 00:00:00 1970)
    ForwarderChain:      0x00000000
    Name:                0x0001F9B4  ("advapi32.dll")
    FirstThunk:          0x0001F59C

    Ordinal/Hint API name
    ------------ ---------------------------------------
    0x003B       "CopySid"
    0x00A8       "GetLengthSid"
    0x00CB       "GetUserNameW"
    0x00EF       "LsaClose"
    0x00FD       "LsaFreeMemory"
    0x0105       "LsaNtStatusToWinError"
    0x0107       "LsaOpenPolicy"
    0x010C       "LsaQueryInformationPolicy"
    0x014D       "RegCloseKey"
    0x016F       "RegOpenKeyExW"
    0x0170       "RegOpenKeyW"
    0x0178       "RegQueryValueExA"
    0x0179       "RegQueryValueExW"

   4. ImageImportDescriptor:
    OriginalFirstThunk:  0x0001F4EC
    TimeDateStamp:       0x00000000  (GMT: Thu Jan  1 00:00:00 1970)
    ForwarderChain:      0x00000000
    Name:                0x0001F9C1  ("msvcrt.dll")
    FirstThunk:          0x0001F5D4

    Ordinal/Hint API name
    ------------ ---------------------------------------
    0x03B3       "memcpy"

   5. ImageImportDescriptor:
    OriginalFirstThunk:  0x0001F4F4
    TimeDateStamp:       0x00000000  (GMT: Thu Jan  1 00:00:00 1970)
    ForwarderChain:      0x00000000
    Name:                0x0001F9CC  ("kernel32.dll")
    FirstThunk:          0x0001F5DC

    Ordinal/Hint API name
    ------------ ---------------------------------------
    0x00AA       "CloseHandle"
    0x00CB       "CreateEventW"
    0x00EB       "CreateThread"
    0x00FF       "DeleteCriticalSection"
    0x0107       "DisableThreadLibraryCalls"
    0x0111       "EnterCriticalSection"
    0x01A0       "GetComputerNameW"
    0x01E1       "GetEnvironmentVariableW"
    0x0269       "GetTickCount"
    0x0277       "GetVersionExW"
    0x029D       "HeapAlloc"
    0x02A3       "HeapFree"
    0x02A7       "HeapReAlloc"
    0x02AA       "HeapSize"
    0x02B4       "InitializeCriticalSection"
    0x02FF       "LeaveCriticalSection"
    0x0366       "RaiseException"
    0x03B4       "ResetEvent"
    0x03B7       "ResumeThread"
    0x040C       "SetEvent"
    0x0487       "WaitForSingleObject"
    0x048C       "WideCharToMultiByte"
    0x04BC       "lstrcmpW"
    0x04BF       "lstrcmpiW"
--- snip ---

Surprise: memcpy ;-)

"Offline" dump with msvcrt reference through imports list:

--- snip ---
$ objdump -d netapi32.dll.so | grep memcpy -A 5 -B 1

00015970 <memcpy>:
   15970:    e8 27 01 00 00           call   15a9c
<__wine_spec_get_pc_thunk_eax>
   15975:    ff a0 5f 6c 01 00        jmp    *0x16c5f(%eax)
   1597b:    90                       nop

--
   1a1ec:    89 04 24                 mov    %eax,(%esp)
   1a1ef:    e8 7c b7 ff ff           call   15970 <memcpy>
   1a1f4:    8b 45 dc                 mov    -0x24(%ebp),%eax
   1a1f7:    01 45 e0                 add    %eax,-0x20(%ebp)
   1a1fa:    8b 45 e0                 mov    -0x20(%ebp),%eax
   1a1fd:    03 45 0c                 add    0xc(%ebp),%eax
   1a200:    c6 00 00                 movb   $0x0,(%eax)
...
--- snip ---

"Offline" dump without msvcrt imports list reference:

--- snip ---
$ objdump -d netapi32.dll.so | grep memcpy
000129e8 <memcpy at plt>:
   1a213:    e8 d0 87 ff ff           call   129e8 <memcpy at plt>
   1b64e:    e8 95 73 ff ff           call   129e8 <memcpy at plt>
   1ba88:    e8 5b 6f ff ff           call   129e8 <memcpy at plt>
   1dca0:    e8 43 4d ff ff           call   129e8 <memcpy at plt>
   21ebd:    e8 26 0b ff ff           call   129e8 <memcpy at plt>
   21ef4:    e8 ef 0a ff ff           call   129e8 <memcpy at plt>

$ objdump -S -j .plt netapi32.dll.so | grep -A 4 -B 1 memcpy

000129e8 <memcpy at plt>:
   129e8:    ff a3 28 00 00 00        jmp    *0x28(%ebx)
   129ee:    68 38 00 00 00           push   $0x38
   129f3:    e9 70 ff ff ff           jmp    12968
<__wine_spec_pe_header+0x1100f>
--- snip ---

That one goes through GOT/PLT -> libc.

Adjusting summary.

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