![]() |
[ASM] getaddrinfo hängt sich auf
Schönen guten Tag,
ich arbeite seit einiger Zeit mir Assembler und versuche dabei via getaddrinfo eine Domain aufzulösen. Jedoch scheint sich getaddrinfo bei dem Aufruf aufzuhängen, das Programm beendet sich nie. Interessant wird es allerdings wenn ich das gleiche Programm in C schreibe. Betrachte ich den dortingen Assemblercode im Debugger, so ist dieser exakt der gleiche wie meiner. Dennoch hängt sich das Programm auf ..
Code:
Hier noch der entsprechende Code des C programms:
[import getaddrinfo Ws2_32.dll]
[extern getaddrinfo] [section .data use32 class=data] google db 'www.google.com', 0 [section .code use32 class=code] main: push ebp mov ebp, esp call socket.initialise ; calls successfully (debugger) WSAStartup push google call address.translate [...] ; address.translate(string) : address address.translate: push ebp mov ebp, esp sub esp, 0x04 .prepareSystemCall: xor eax, eax mov dword [ebp-0x04], eax .callSystemLookup: lea edx, [ebp-0x04] push edx push 0 push 0 push dword [ebp+0x08] call [getaddrinfo] ; never returns .return: leave ret 4
Code:
Ich bin mittlerweile echt am verzweifeln und habe keine Ahnung woran es liegt. Der Stack sieht bei beiden Aufruf exakt gleich aus, die variante in C funktioniert jedoch?
004016DD 83EC 08 sub esp, 8
004016E0 C745 DC 00000000 mov [dword ss:ebp-24], 0 004016E7 8D45 DC lea eax, [dword ss:ebp-24] 004016EA 894424 0C mov [dword ss:esp+C], eax 004016EE C74424 08 00000000 mov [dword ss:esp+8], 0 004016F6 C74424 04 00000000 mov [dword ss:esp+4], 0 004016FE C70424 64504000 mov [dword ss:esp], a.00405064 ; ASCII "www.google.de" 00401705 E8 12020000 call <jmp.&ws2_32.getaddrinfo> Interessant ist auch, dass es auf anderen Rechner teilweise funktioniert. Ich benutze Windows 7 x64, das Program ist in x86 geschrieben. Auf Windows XP x86 lief es einwand frei. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz