NdisOpenAdapter возвращает NDIS_STATUS_ADAPTER_NOT_FOUND

Тема в разделе "WASM.WIN32", создана пользователем MaDF, 10 апр 2006.

  1. MaDF

    MaDF New Member

    Публикаций:
    0
    Регистрация:
    10 май 2005
    Сообщения:
    83
    Привет всем!



    Делаю драйвер NDIS для перехвата и посылки пакетов. Делаю так - регистрирую протокол вызовом

    NdisRegisterProtocol, протокол регистрируется удачно, после этого пытаюсь открыть адаптер вызовом

    NdisOpenAdapter, который возвращает NDIS_STATUS_ADAPTER_NOT_FOUND, я перепробовал все устройства

    \Device\{GUID}, которые нашел в HKLM\SYSTEM\CurrentControlSet\Services\TcpIp\Linkage; раздела

    HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards у меня не оказалось, т.к. нет сетевой карты

    - только виртальная сеть VMware и dial-up подключение.



    Странно, что пример из DDK, ndisprot, не работает, из DDK:



    Use the –e option to enumerate all devices to which NDISPROT is bound:

    C:\uio>uiotest -e

    0. \DEVICE\{9273DA7D-5275-4B9A-AC56-68A49D121F1F}

    - Intel-Based 10/100 Ethernet Card



    - у меня вообще ничего не показывает... может ему требуются _только_ сетевые карты? И если так, то каким образом

    перехватывать пакеты??
     
  2. Ms Rem

    Ms Rem New Member

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




    Пытаешся сразу после NdisRegisterProtocol? Или в обработчике BindAdapter?

    И вообще, не видя кода что-то конкретное сказать сложно. Могу только предположить, что у тебя не происходит BindAdapter.
     
  3. MaDF

    MaDF New Member

    Публикаций:
    0
    Регистрация:
    10 май 2005
    Сообщения:
    83
    Да, делаю NdisOpenAdapter сразу после NdisRegisterProtocol, как в Rootkits: Subverting the Windows Kernel написано ;) Сорцы в аттаче, посмотрите, пожалуйста. А OnBindAdapter и правда не вызывается..
     
  4. MaDF

    MaDF New Member

    Публикаций:
    0
    Регистрация:
    10 май 2005
    Сообщения:
    83
  5. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"
    Меньше надо читать "Subverting the Windows Kernel" и больше читать DDK, где написано, что начиная с windiws2000 уже нельзя вызывать NdisOpenAdapter прежде чем произойдет ProtocolBindAdapter. Чтобы адаптер забиндился, имя протокола должно быть прописано в реестре в ветке HKEY_LOCAL_MACHINE\SYSTEM\ControlSet\Control\Class\{4D36E972-E325-11CE -BFC1-08002bE10318} в параметре UpperBind ключа соответствующего нужному адаптеру.

    Для установки драйвера можно использовать inf файлы. либо просто прописать все что надо в реестре вручную.

    В качестве примера смотри сорцы winpcap (скорее всего для перехвата и посылки пакетов он тебе сгодиться, не нужно писать свой аналог).
     
  6. MaDF

    MaDF New Member

    Публикаций:
    0
    Регистрация:
    10 май 2005
    Сообщения:
    83
    Хе-хе, будем впредь рыться в DDK ;) Точно, нужно было сразу вспомнить про WinPcap, буду разбираться...

    Ms Rem спасибо за разъяснение ;)