NDIS помогите начать писать

Тема в разделе "WASM.BEGINNERS", создана пользователем promtpol, 17 мар 2008.

  1. promtpol

    promtpol New Member

    Публикаций:
    0
    Регистрация:
    26 фев 2008
    Сообщения:
    60
    У меня есть готовый драйвер перехватывающий NtReadFile, то есть NT драйвер. а мне надо написать NDIS промежуточный драйвер. Подскажите могу ли я писать его в том же проекте с теми же настройками что и в предыдущем? Просто я не умею настраивать правильно проект, а там уже настроен. Кто знает подскажите. Заранее спасибо
     
  2. WIN32

    WIN32 Member

    Публикаций:
    0
    Регистрация:
    20 янв 2007
    Сообщения:
    338
    что???
     
  3. steelfactor

    steelfactor New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    501
    promtpol
    Какой проект??? Ты о чем?
    Берешь notepad, открываешь, сверху пишешь
    #include <ntddk.h>
    #include <ndis.h>
    и будет тебе счастье...
     
  4. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    А где можно достать документацию или rfc по ndis?

    ps на русском =)
     
  5. steelfactor

    steelfactor New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    501
    2FED
    Кури DDK, на русском литературы по NDIS кроме Хоглунда почти нет
     
  6. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    2FED
    в djvu есть Сорокина - "Разработка систем безопасности".
    для начала по ндис хватит.
     
  7. promtpol

    promtpol New Member

    Публикаций:
    0
    Регистрация:
    26 фев 2008
    Сообщения:
    60
    Спасибо,буду курить DDK:)
     
  8. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    Прочитал уже, одна теория
     
  9. WIN32

    WIN32 Member

    Публикаций:
    0
    Регистрация:
    20 янв 2007
    Сообщения:
    338
    2FED
    DDK/MSDN/WDK Help - практика
     
  10. lotos_od

    lotos_od New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    29
    Адрес:
    Ukraine
    Если это Ваш первый интремедиэйт драйвер то писать его с нуля будет довольно сложно, значительно удобней курить WDK\src\network\ndis\passthru исходник. Тем более что теория в виде Сорокиной и ДДК имеется.
     
  11. promtpol

    promtpol New Member

    Публикаций:
    0
    Регистрация:
    26 фев 2008
    Сообщения:
    60
    Я хочу писать драйвер в студии подключив ддк. Неужели бы считаете что это тупо? Если нет,то как мне passthru проект засунуть?Подскажите
     
  12. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.561
    Адрес:
    Russia
    promtpol
    Кто тебе сказал что это тупо?
    Здесь, вообще, имелось ввиду не где писать, а какой типа NDIS драйвера выбрать для начала. Писать можно где хочешь, хоть в паинте :). Главное, чтоб была возможность это написанное собрать с наименьшими телодвижениями. Тем самым, происходит оптимизация времени разработки.
    А по сути - используют либо утилиту build из DDK, чтоб собрать SOURCES и MAKEFILE, либо вручную создают проэкт в визуалстудии (по вопросу "как?", используйте поиск по форуму).

    ЗЫ: а не рано ли вам за NDIS браться?
     
  13. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    Рано
     
  14. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.242
    TermoSINteZ
    вспомнилось: если долго размышлять на тему рано, то станет поздно:))
    2FED
    даже если у тебя ничего не выйдет - это будет тренировка..... не стоит просто так сдаваться:derisive:)
     
  15. promtpol

    promtpol New Member

    Публикаций:
    0
    Регистрация:
    26 фев 2008
    Сообщения:
    60
    вообще надо в рамках курсовой дров написать который будет трафик vpn клиента писать в какой-нибудь лог, типа того ну или по максимуму инфу собрать... поэтому рано не рано,хз, а делать надо и я чувствую я погрязну в этом! Сорокина правда одна теория.
    Вот смотрю passthru: например регистрируем точки входа для протокола. Есть готовая точка ProtocolBindAdapter, все делает сама, так зачем тогда в passthru делают свою с тем же самым прототипом и засовывают в PROTOCOL_CHARACTERISTICS??? не пойму чтото
     
  16. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.561
    Адрес:
    Russia
    promtpol
    Вот тут то ты сильно ошибся, PROTOCOL_CHARACTERISTICS заполняется функциями, которые будет использовать этот протокол.
    Если на асме, то это примерно так:
    Код (Text):
    1. ;...
    2. mov PChars.BindAdapterHandler,  offset PtBindAdapter
    3. ;...
    То есть, заполняются смещения на твои функции. И они уже вызываются системой! Иначе как система узнает, что ей вызвать, когда пришел момент связывания с адаптером.
    В этой функции, как раз и идет вызов системной NDIS функции NdisOpenAdapter. И вызывается не только она, но и другие типа NdisOpenProtocolConfiguration и тп. То есть для работы конечной функции надо подготовить кучу всего.
    Так же заполняются и CompletionRoutine функции. Они выступают в роли колбеков:
    Код (Text):
    1. ;...
    2. mov PChars.OpenAdapterCompleteHandler, offset PtOpenAdapterComplete
    3. ;...
    В общем внимательно читай ддк. Без него никуда. Сорокина - бред, ничего хорошего.
     
  17. steelfactor

    steelfactor New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    501
    TermoSINteZ
    однозначно! promtpol Ничего, кроме практики и DDK в изучении NDIS тебе не поможет. Кстати, внимательно читай коменты к коду примеров DDK, там много полезного
     
  18. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    а я и не начинал чтобы сдаватся, я просто отложил это на потом
     
  19. promtpol

    promtpol New Member

    Публикаций:
    0
    Регистрация:
    26 фев 2008
    Сообщения:
    60
    да уж, еще надо понять что надо писать в эти функции, перед тем как отправить их в CHARACTERISTICS. лан, будем разбираться) спасибо
     
  20. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.561
    Адрес:
    Russia
    promtpol
    Вначале заполняешь CHARACTERISTICS в DriverEntry, и поставь заглушки на все функции. Типа таких:

    Код (Text):
    1. PtBindAdapter proc pStatus:PNDIS_STATUS,BindContext: NDIS_HANDLE, pDeviceName:PNDIS_STRING, SystemSpecific1:PVOID, SystemSpecific2:PVOID
    2. LOCAL pOpenContext:PNDIS_OPEN_CONTEXT
    3. LOCAL status:NDIS_STATUS
    4. LOCAL cfg_status:NDIS_STATUS
    5. LOCAL cfg_handle:NDIS_HANDLE
    6.  
    7.     invoke DbgPrint,$CTA0("-------NdisBindAdapter------\n")
    8.  
    9.     push NDIS_STATUS_SUCCESS
    10.     pop status
    11.     mov eax, status
    12.    
    13.     mov eax,pStatus
    14.     push NDIS_STATUS_SUCCESS
    15.     pop [eax]
    16.     ret
    17.  
    18. PtBindAdapter endp
    Это даст просмотр как все работает в отладочном окне.