Ошибка при создании TDI endpoint connection

Тема в разделе "WASM.NETWORKS", создана пользователем Iceberg, 9 янв 2006.

  1. Iceberg

    Iceberg New Member

    Публикаций:
    0
    Регистрация:
    5 дек 2005
    Сообщения:
    54
    Адрес:
    Санкт-Петербург
    вот такая ошибка: STATUS_OBJECT_NAME_NOT_FOUND



    на вот такой код:
    Код (Text):
    1.  
    2.     RtlInitUnicodeString(&TransportDeviceName, L"\\Device\\Tcp");
    3.  
    4.     ASSERT(KeGetCurrentIrql() == PASSIVE_LEVEL);
    5.  
    6.     InitializeObjectAttributes(
    7.         &ChannelAttributes,     // Tdi Control Channel attributes
    8.         &TransportDeviceName,   // Transport Device Name \\Device\\Tcp
    9.         OBJ_CASE_INSENSITIVE,   // Attributes
    10.         NULL,           // RootDirectory
    11.         NULL            // SecurityDescriptor
    12.     );
    13.  
    14.     Status = ZwCreateFile(
    15.         &ControlChannel,            // Handle to the Control Channel object
    16.         GENERIC_READ | GENERIC_WRITE,   // Desired Access
    17.         &ChannelAttributes,         // Object Attributes
    18.         &IoStatusBlock,         // Final I/O status block
    19.         NULL,               // Allocation Size
    20.         FILE_ATTRIBUTE_NORMAL,      // Normal attributes
    21.         FILE_SHARE_READ,        // Sharing attributes
    22.         FILE_OPEN_IF,           // Create disposition
    23.         0,              // CreateOptions
    24.         NULL,               // EA Buffer
    25.         0);             // EA length
    26.  




    Вопрос, почему? Альтернатива ZwOpenFile дает тот же результат. Естественно, ет наверное обертка для ZwCreateFile.
     
  2. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"
    А кто параметры endpoint задавать будет?

    В атаче моя реализация сокетов через TDI. Она до конца не доведена, но как пример вполне сойдет.



    [​IMG] 479943259__mysockets.c
     
  3. volodya

    volodya wasm.ru

    Публикаций:
    0
    Регистрация:
    22 апр 2003
    Сообщения:
    1.169
  4. Guest

    Guest Guest

    Публикаций:
    0
    Ms Rem

    Фаерволы пищат?
     
  5. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"


    А ты думаешь я бы так просто выложил, если бы не пишали?

    А чтобы не пищали надо посылать IRP нижнему девайсу в стеке, и обходить NDIS фильтры. Но этого нахаляву недождетесь.
     
  6. Guest

    Guest Guest

    Публикаций:
    0


    Можно ли теоретически и это засечь фаерволом?
     
  7. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"


    Да. Теоретически все можно.
     
  8. Guest

    Guest Guest

    Публикаций:
    0
    Скоро импульсы электрические посылать придется ;)

    Ниже уже точно не будет
     
  9. Guest

    Guest Guest

    Публикаций:
    0
    Ms Rem

    Если не секрет сколько занимает места твой интерфейс сокетов в скомпелированом виде. Я имею ввиду не тот что ты здесь выложил, а тот который напрямую на \Device\tcpip шлет IRP ?
     
  10. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"
  11. Guest

    Guest Guest

    Публикаций:
    0
    Ms Rem

    А трафик накаптивается при использовании твоих интерфейсов? Тоесть винда его отражает? Это вообще на каком уровне происходит (подсчет) ?
     
  12. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"


    Подсчет происходит на уровне драйверов сетевых карт, отдельно для каждого адаптера. При запросе результатов подсчета драйверам сетевых карт посылается IOCTL_NDIS_QUERY_SELECTED_STATS, и они возвращают число принятых/посланых пакетов. Для скрытия трафика надо почукать DriverObject этих дров и отнимать от результатов запроса число своих пакетов (которое подсчитывается на уровне ndis хуков).