На главную страницу
Форум txt.version   




Статья :: Реализация защиты с помощью перехвата функций NDIS - библиотеки
 

Реализация защиты с помощью перехвата функций NDIS - библиотеки

Этот метод является трудоемким, совершенно не документированным, но в то же время чрезвычайно эффективным.
Реализация этого метода позволяет создать как бы оболочку над самой библиотекой NDIS. Этот метод аналогичен методу перехвата системных сервисов. В данном случае заменяются адреса необходимых функций библиотеки NDIS, в результате чего можно получить контроль над всеми сетевыми операциями в системе.
Рассмотрим упрощенно, какие NDIS-функции вызываются во время загрузки сетевых драйверов. Сначала инициализируется драйвер сетевой карты, при этом для него вызывается функция NdisMInitializeWrapper, предупреждающая NDIS о том, что инициализируется новый минипорт (драйвер сетевой карты). Затем вызывается функция NdisMRegisterMiniport, которая регистрирует точки входа MiniportAjcx минипорта для NDIS-библиотеки. Далее вызывается точка входа в драйвере сетевой карты Miniportlnitialize, которая готовит реальную или виртуальную сетевую карту для выполнения сетевых операций ввода/вывода, запрашивает все аппаратные ресурсы, необходимые сетевой карте, и размещает ресурсы, необходимые драйверу для выполнения сетевых операций ввода/вывода.
Затем начинают инициализироваться драйверы протоколов TCP/IP, NETBEUI, IPX/ SPX и т.д. Для каждого из них вызывается функция NdisRegisterProtocol, которая регистрирует точки входа ProtocoLAjcc драйвера и имя протокола для библиотеки NDIS.
После инициализации драйвера протокола и драйвера сетевой карты вызывается функция NdisOpenAdapter, которая устанавливает связь между вызвавшим эту функцию протоколом и определенным нижележащим драйвером сетевой карты или промежуточным драйвером. А затем уже начинается обмен пакетами между драйвером протокола и драйвером сетевой карты.
Из приведенного выше процесса инициализации сетевых драйверов видно, что, перехватив вызовы таких функций как NdisMInitializeWrapper, NdisMRegisterMiniport, NdisRegisterProtocol, NdisOpenAdapter, можно отследить загрузку сетевого драйвера, и установить адреса своих обработчиков для точек входа MiniportXxx-процедур (например, Miniportlnitialize, MiniportQuery Information, MiniportSetlnformation, MiniportSend, MiniportSendPackets, MiniportTransferData и т.д.) и для точек входа ProtocolXxx-процедур (например, ProtocolBindAdapter, ProtocolReceive, Protocol ReceiveComplete, ProtocolSend Complete, ProtocolTransferDataComplete, ProtocolStatus, ProtocolPnPEvent, ProtocolReceiyePacket, ProtocolUnbindAdapter, ProtocolUnload и т.д.), а затем контролировать все сетевые операции ввода/вывода, проходящие через него.
Важно, чтобы ваш драйвер, который должен заменить адреса NDIS-функций в таблице экспорта библиотеки NDIS на адреса собственных обработчиков, загружался сразу после загрузки драйвера Ndis.sys. Иначе, к моменту загрузки вашего драйвера может уже произойти инициализация некоторых сетевых драйверов.

 

Реализация защиты с помощью перехвата функций NDIS - библиотеки

страницы в данном разделе 
 Программирование систем защиты: Глава 4. Анализ сетевой архитектуры ОС Windows NT с точки зрения возможностей реализации средств защиты и анализа сетевого трафика  Программирование систем защиты: Анализ сетевой архитектуры ОС Windows NT с точки зрения возможностей реализации средств защиты и анализа сетевого трафика
 Программирование систем защиты: Используемые средства построения объединенных сетей и их влияние на уровень расположения средства защиты (согласно модели OSI)  Программирование систем защиты: Объем информации, проходящей через средство защиты
 Программирование систем защиты: Возможности реализации средств защиты сетевой информации на пользовательском уровне  Программирование систем защиты: Реализация защиты на уровне приложений и собственных DLL
 Программирование систем защиты: Реализация защиты на уровне системных DLL, предоставляющих приложениям различные сетевые интерфейсы  Реализация защиты на уровне сетевых сервисов
 Программирование систем защиты: Реализация защиты на уровне «родного» API для ОС Windows NT  Программирование систем защиты: Возможности реализации средств защиты сетевой информации на уровне ядра
 Программирование систем защиты: Драйверы - фильтры  Программирование систем защиты: Реализация защиты на уровне драйвера MUP
 Реализация защиты на уровне драйверов файловых систем  Реализация защиты на уровне транспортного драйвера
 Реализация защиты с помощью перехвата функций NDIS - библиотеки  Программирование систем защиты: Реализация защиты на уровне сетевого драйвера промежуточного уровня, поддерживающего интерфейс NDIS
 Программирование систем защиты: Реализация защиты на уровне драйверов сетевых устройств  Программирование систем защиты: Сравнительный анализ способов реализации
 Программирование систем защиты: Зависимость способа реализации средства защиты от предъявляемых к нему требований  Программирование систем защиты: Особенности реализации NDIS-драйвeров
 Программирование систем защиты: Синхронизация  Программирование систем защиты: Структура NDIS-пакетов
 Программирование систем защиты: Завершающие функции  Программирование систем защиты: Точки входа промежуточного NDIS- драйвера
 Программирование систем защиты: Точка входа DriverEntry  Программирование систем защиты: Точки входа ProtocolXxx
 Программирование систем защиты: Точки входа MiniportXxx  Программирование систем защиты: Точки входа MiniportXxx


Разделы
Околокомпьютерная литература (375)
Программирование (102)
Программы (75)
ОС и Сети (49)
Интернет (29)
Аппаратное обеспечение (16)
Базы данных (6)

Содержание сайта (выборка)
Apache
Протоколы TCP/IP (принципы, протоколы и архитектура)

PHP, PELR, JSP
PHP
JavaServer Pages (JSP)

Базы данных
Основы mysql
СУБД INFORMIX
СУБД POSTGRES
Основы проектирования реляционных баз данных

HTML, javascript
Спецификация HTML 4.01
Каскадные Таблицы Стилей, Уровень 2
Клиентский JavaScript. Справочник.
JavaScript руководство пользователя
Серверный JavaScript 1.4. Руководство по Использованию.

Паскаль, C, C++, C#
GCC (примеры)
FAQ Валентинa Озеровa DELPHI
C





 
©  programming-lang.com  справочник программиста