появление эксепшенов при вызове gethostbyname

Тема в разделе "WASM.BEGINNERS", создана пользователем rain, 14 авг 2006.

  1. rain

    rain New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    976
    почему это происходит? олли говорит нажмите shift+f8/f7/f9..
    приведу код:


    Код (Text):
    1. ....
    2. IcqLogin            db 'login.icq.com',0
    3. ....
    4.  
    5. invoke WSAStartup,0202h,offset buf
    6. invoke socket,AF_INET,SOCK_STREAM,0
    7. mov sock,eax
    8. mov dest_addr.sin_family,AF_INET
    9. invoke htons,5190
    10. mov dest_addr.sin_port,ax
    11. invoke gethostbyname,offset IcqLogin ;вот тут и происходит вызов исключения - 0000 06BA
    12. ...
     
  2. rain

    rain New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    976
  3. Consto

    Consto New Member

    Публикаций:
    0
    Регистрация:
    20 апр 2006
    Сообщения:
    79
    да даже если ошибка сети, исключения не должно быть. тебе обяз. надо 0202h?, попробуй 0101h
     
  4. rain

    rain New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    976
    пробовал, то-же самое, даже вот скачал fasm с этого сайта, открыл в олли, то-же самое, может это у всех при любом вызове gethostbyname? или горячо нами любимые программеры из МС немогли так лихо втыкнуть?
     
  5. pas

    pas New Member

    Публикаций:
    0
    Регистрация:
    18 апр 2003
    Сообщения:
    330
    Адрес:
    Russia
    Попробуй убрать строки после WSAStartup, до gethostbyname. Должно работать. Проверь, что возвращают вызываемые функции.
     
  6. rain

    rain New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    976
    invoke WSAStartup,0101h,offset buf
    invoke gethostbyname,offset IcqLogin

    работает нормально, но эксепшены всё равно вызываются =(
     
  7. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.347
    [edited] а нет, ошибся :)
     
  8. Cigan

    Cigan New Member

    Публикаций:
    0
    Регистрация:
    13 окт 2003
    Сообщения:
    54
    Адрес:
    Моск.обл
    Делаем так:
    Код (Text):
    1.     invoke WSAStartup,0101h,offset wsaData
    2.     invoke gethostbyname,addr Buffer
    3.     invoke socket,AF_INET,SOCK_STREAM,0
    4.     mov sock,eax
    5.     mov dest_addr.sin_family,AF_INET
    6.     invoke htons,5190
    7.     mov dest_addr.sin_port,ax
    И все будет в порядке. Почитай описание gethostbyname
     
  9. rain

    rain New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    976
    2Cigan, невижу разницы в твоём коде.
    На досуге протестит, написал на с++:

    Код (Text):
    1. #include <winsock2.h>
    2. #include <windows.h>
    3.  
    4. #pragma comment(lib,"Ws2_32.lib")
    5. #pragma comment(linker,"/ENTRY:main")
    6.  
    7. void main()
    8. {
    9.     WSADATA wsadata;
    10.     WSAStartup(0x202,&wsadata);
    11.     gethostbyname("ya.ru");
    12.  
    13.     WSACleanup();
    14.  
    15.  
    16. }
    всё равно ... наверно gethostbyname всегда генерирует эти эксепшены