помогите послать пинг

Тема в разделе "WASM.NETWORKS", создана пользователем spencer, 4 май 2006.

  1. spencer

    spencer New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2005
    Сообщения:
    277
    кто падскажет как пингануть кавота

    я пробовал дизассемблировать ping.exe и сматреть как это сделано там. Там используется IcmpSendEcho из Icmp.dll

    Однако я недоконца разобрался с параметрами.

    Он в любом случае возвращает ноль что как я понял изучая ping.exe означает что хост пингуется. В OllyDbg после вызова возвращает ошибку

    LastErr ERROR_INVALID_ACCESS (0000..C)



    вот как уменя это было сделано



    .data

    caption db "Ping",0

    text db "Ping response from "

    responseip db 20 dup (0)

    text1 db "No ping response!",0

    count dd 20h

    pname db "IcmpSendEcho",0

    dllname db "Icmp.dll",0

    fa dd ?

    ip dd 0A51e000Ah

    buff db 20h dup ("k")

    var1 dd 1ff8h

    var2 db 10 dup (0)

    var3 dd ?

    var4 dd ?

    wahwah WSADATA <?>

    .code

    start:

    push offset wahwah

    push 101h

    call WSAStartup@8

    push offset dllname

    call LoadLibraryA@4

    push offset pname

    push eax

    call GetProcAddress@8

    test eax, eax

    je exit

    mov fa, eax

    push var1

    push offset ip

    push offset count

    push count

    push offset buff

    push ip

    push 0DFFFFFFFh

    call fa



    подскажитте пожалуйста может кто знает что уменя тут нетак
     
  2. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
  3. spencer

    spencer New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2005
    Сообщения:
    277
    спасибо...

    однако насколько я понял она не использует IcmpSendEcho...
     
  4. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Нет, не использует
     
  5. Sector

    Sector New Member

    Публикаций:
    0
    Регистрация:
    7 июл 2005
    Сообщения:
    49
    Адрес:
    Iceland
    Код (Text):
    1.  
    2.  
    3.  
    4. typedef struct tagIPINFO
    5. {
    6.     u_char Ttl;
    7.     u_char Tos;
    8.     u_char IPFlags;
    9.     u_char OptSize;
    10.     u_char *Options;
    11. }IPINFO;
    12.  
    13. typedef IPINFO* PIPINFO;
    14.  
    15. typedef struct tagICMPECHO
    16. {
    17.     u_long Source;
    18.     u_long Status;
    19.     u_long RTTime;
    20.     u_short DataSize;
    21.     u_short Reserved;
    22.     void FAR *pData;
    23.     IPINFO  ipInfo;
    24. }ICMPECHO;
    25.  
    26. typedef ICMPECHO* PICMPECHO;
    27.  
    28.  
    29. DWORD Ping(void)
    30. {
    31.     DWORD ulAddr=inet_addr("127.1.2.3");//адрес который надо пинговать
    32.     SOCKADDR_IN sin;
    33.     IPINFO ipInfo;
    34.     ICMPECHO icmpEcho;
    35.     HANDLE hndlFile;
    36.     hndlFile = pIcmpCreateFile();
    37.     ipInfo.Ttl = 255;
    38.     ipInfo.Tos = 0;
    39.     ipInfo.IPFlags = 0;
    40.     ipInfo.OptSize = 0;
    41.     ipInfo.Options = NULL;
    42.     icmpEcho.Status = 0;
    43.     pIcmpSendEcho( hndlFile,ulAddr, NULL, 0, &ipInfo, &icmpEcho, sizeof(struct tagICMPECHO), 2000);
    44.     if (icmpEcho.Status)  
    45.     {
    46.         //Ошибка хост не доступен
    47.     }
    48.     pIcmpCloseHandle(hndlFile);
    49.     return 0;
    50. }
    51.