Про DNS

Discussion in 'WASM.NETWORKS' started by Protorus, Mar 23, 2010.

  1. Protorus

    Protorus New Member

    Blog Posts:
    0
    Joined:
    Dec 30, 2009
    Messages:
    51
    Такая проблема. Есть код, где нужно определить IP по имени.
    Пытался пользоваться gethostbyname, затем getaddrinfo и даже DnsQuery_A.
    Всегда при вызове данных фунцций возникает исключение. Виной тому, как выходит, отключенная служба DNS.
    Почему так, ведь все сетевые приложения пользуются этими функциями и не падают же.
    И как дальше быть? Очень не хочется вручную формировать DNS запрос.
     
  2. valterg

    valterg Active Member

    Blog Posts:
    0
    Joined:
    Aug 19, 2004
    Messages:
    2,105
    Почему ты решил, что служба? Скорее всего ты просто неправильно вызываешь функции, раз возникает исключение. При отключенной службе тебе бы просто дали "отлуп" программно.
     
  3. deshiko

    deshiko New Member

    Blog Posts:
    0
    Joined:
    Feb 10, 2009
    Messages:
    42
    А можно увидеть код?
     
  4. 008888

    008888 New Member

    Blog Posts:
    0
    Joined:
    Aug 19, 2008
    Messages:
    17
    DnsQuery_A() + GetLastError() = определение ошибки, а затем гляди winerror.h
     
  5. Protorus

    Protorus New Member

    Blog Posts:
    0
    Joined:
    Dec 30, 2009
    Messages:
    51
    Да, походу на службу я зря грешу. Что-то не то у меня.
    Вот такой код допустим есть:
    Code (Text):
    1.         format  PE CONSOLE
    2.         entry   start
    3.  
    4.         include 'win32a.inc'
    5.  
    6. section '.data' data readable writeable
    7.  
    8.         ws2_32 db 'ws2_32.dll',0
    9.         wsadata WSADATA
    10.         sock  sockaddr_in
    11.         HOST db 'google.com',0
    12.  
    13. section '.code' code readable executable
    14.  
    15. start:
    16.  
    17.         invoke  LoadLibrary, ws2_32
    18.  
    19.         mov     EBX, EAX
    20.  
    21.         invoke  WSAStartup, 0202h, wsadata
    22.  
    23. A:      invoke  gethostbyname, HOST
    24.  
    25. B:      invoke  socket, AF_INET, SOCK_STREAM, 0  ; IPPROTO_TCP
    26.  
    27.         mov     ESI, EAX
    28.  
    29. C:      invoke  socket, AF_INET, SOCK_DGRAM, 0  ; IPPROTO_UDP
    30.  
    31.         mov     EDI, EAX
    32.  
    33.         invoke  closesocket, EDI
    34.  
    35.         invoke  closesocket, ESI
    36.  
    37.         invoke  WSACleanup
    38.  
    39.         invoke  FreeLibrary, EBX
    40.  
    41.         invoke  ExitProcess, NULL
    42.  
    43. section '.idata' import data readable writeable
    44.  
    45.         library kernel32,'kernel32.dll',wsock32,'wsock32.dll'
    46.         include '\api\kernel32.inc'
    47.         include '\api\wsock32.inc'
    Так вот, при трассировке в Оле, в функциях по метке A и C возникает исключение, по метке B все хорошо.
    При включении службы DNS, при трассировке, функция по метке A, исключения не вызывает, по С - вызывает.
    Без Оли все работают нормально. Раньше, буквально недавно, такого не наблюдалось. Единственное что обновлял - базы KIS (может и модули какие заодно).
    Что не так?
     
  6. valterg

    valterg Active Member

    Blog Posts:
    0
    Joined:
    Aug 19, 2004
    Messages:
    2,105
    А надо offset HOST