Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Отправка данных из буфера драйвера по сети  (Прочитано 8596 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Shamir
Гость
« : 09-12-2006 13:20 » 

Подскажите, пожалуйста, как отправить информацию из буфера внутри собственного драйвера на фиксированный IP-адрес в сети. Меня интересует, как лучше формировать пакеты и что с ним делать дальше.
Неплохо бы увидеть код, делающий такие вещи. Если у кого он есть под рукой, выложите, пожалуйста.
Записан
aks68
Модератор

il
Offline Offline
Пол: Мужской

« Ответ #1 : 10-12-2006 07:55 » 

Подскажите, пожалуйста, как отправить информацию из буфера внутри собственного драйвера на фиксированный IP-адрес в сети. Меня интересует, как лучше формировать пакеты и что с ним делать дальше.
Неплохо бы увидеть код, делающий такие вещи. Если у кого он есть под рукой, выложите, пожалуйста.

 Очень общий вопрос, уважаемый.
Вам как, надо просто "выплюнуть пакет" из сетевой карты в абстрактную даль  Ага , или в существующее соединение, которым наверное надо еще как-то управлять?

С уважением,
Акс.
Записан
Shamir
Гость
« Ответ #2 : 10-12-2006 08:51 » 

Задача в том, чтобы отправить пакет в существующее соединение, управлять которым не надо.

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

Это и надо оперативно отправить по сети, после чего управление передать оригинальному обработчику. Анализ пакета на приемной стороне - следующий вопрос и, в общем, не мое дело.

В том, как это передать, и состоит проблема. Фактически, меня интересует своего рода DbgPrint в сеть.
Содержательная часть задачи состоит в перехвате параметров вызова и их анализе (это я сделал), а отправка по сети - это еще одно условие, которое я пока реализовать не могу.
Записан
aks68
Модератор

il
Offline Offline
Пол: Мужской

« Ответ #3 : 14-12-2006 07:39 » 

Задача в том, чтобы отправить пакет в существующее соединение, управлять которым не надо.

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

Это и надо оперативно отправить по сети, после чего управление передать оригинальному обработчику. Анализ пакета на приемной стороне - следующий вопрос и, в общем, не мое дело.

В том, как это передать, и состоит проблема. Фактически, меня интересует своего рода DbgPrint в сеть.
Содержательная часть задачи состоит в перехвате параметров вызова и их анализе (это я сделал), а отправка по сети - это еще одно условие, которое я пока реализовать не могу.

ОК, задача ясна.
Однако отправить данные в существующее соединение (ктому-же созданное не тобой) в ядре на мой взгляд не так-то просто.

1. Необходимо "врезаться" в существующее соединение (которое, кстати, надо еще распознать). А это можно:
   а. На уровне TDI. Практически я с этим незнаком. Подозреваю, что надо изготовить TDI-filter.
   б. На уровне NDIS. Об этом я могу говорить много Улыбаюсь Однако от всей души не рекомендовал-бы Вам этого делать, т.к. при этом Вы полностью берете на себя задачу по созданию и управлению пакетами.

2. Минимальный контроль все-же понадобится (сеть это такое дело Ага )

3. Хакерские штучки - не есть гуд. Но, IMHO, п1-п2 есть именно хакерские штучки Ага

В случае, если Вы решите открыть и управлять соединением самостоятельно, то у Вас в ядре, опять-таки не слишком много опций.

1. Организовать сокет поверх TDI интерфейса самостоятельно (официально включено в Висту, для прочих систем имеются частные разработки)

2. Организовать редиректор в USER MODE и использовать все те-же банальные сокеты.

Ну и разумеется всё сказанное мною не претендует на истину в последней инстанци. Вот.

С уважением,
Акс.

PS: А вот еще вспомнил... В наборе утилит от SysInternals (светлая память) была одна под названием DbgView, так вот у неё есть похожий режим (перенаправляет вывод отладочных сообщений через сеть). Поставьте ее. Посмотрите как она это делает.
Записан
Shamir
Гость
« Ответ #4 : 14-12-2006 14:29 » 

Дело вот в чем. Как я уже говорил, основная задача такая: есть локальная сеть, в которой на каждом компьютере стоит драйвер, целью работы которого является перехват некоторого определенного вызова на машине. Как только такой вызов происходит, необходимо сообщить об этом на конкретный компьютер. Что произойдет с этой машиной дальше - не важно. Суть состоит в сигнале на управляющий компьютер.
Сам драйвер я написал. Вопрос в том, как отправить данные по сети. Меня устроит простая IP-дейтаграмма или UDP-пакет.

Ковырять ndis нет времени, да и задачи такой не стоит.

Наверняка есть какие-то высокоуровневые обертки над функциями ndis, позволяющие отправлять данные в сеть (как-то же это делается...). Причем здесь важно то, что происходить это должно на уровне ядра.
Иначе можно было бы сделать простой опрос драйвера с неким периодом, а дальше все понятно (обычная схема "драйвер-клиент"). В этом клиенте уже спокойно использовать сокеты, и проблем бы не было.

Может быть, кто знает пример простого Hello World`а из режима ядра в сеть. Это очень поможет, потому ndis - уже несколько другая тема. Интересно конечно, но сейчас не до того.
Записан
aks68
Модератор

il
Offline Offline
Пол: Мужской

« Ответ #5 : 17-12-2006 22:40 » 

Если Вы готовы для реализации хоть небольшого, но законченного сетевого API, то предлагю маленькую библиотеку сокетов режима ядра поверх TDI.
http://www.rootkit.com/newsread.php?newsid=416
 Сам я ее непробовал, но "все говорят", что она работает.
Правда при этом Вам все-таки придется управлять соединением.

Есть еще, типа, "концептуальная сатья" - т.е. без кода, а только бла-бла-бла.
http://www.wd-3.com/archive/RemoteToaster.htm

С уважением,
Акс.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines