Задача в том, чтобы отправить пакет в существующее соединение, управлять которым не надо.
Дело в том, что драйвер ловит некий системный вызов и записывает в буфер его аргумены и состояние регистров до вызова.
Это и надо оперативно отправить по сети, после чего управление передать оригинальному обработчику. Анализ пакета на приемной стороне - следующий вопрос и, в общем, не мое дело.
В том, как это передать, и состоит проблема. Фактически, меня интересует своего рода DbgPrint в сеть.
Содержательная часть задачи состоит в перехвате параметров вызова и их анализе (это я сделал), а отправка по сети - это еще одно условие, которое я пока реализовать не могу.
ОК, задача ясна.
Однако отправить данные в существующее соединение (ктому-же созданное не тобой) в ядре на мой взгляд не так-то просто.
1. Необходимо "врезаться" в существующее соединение (которое, кстати, надо еще распознать). А это можно:
а. На уровне TDI. Практически я с этим незнаком. Подозреваю, что надо изготовить TDI-filter.
б. На уровне NDIS. Об этом я могу говорить много
Однако от всей души не рекомендовал-бы Вам этого делать, т.к. при этом Вы полностью берете на себя задачу по созданию и управлению пакетами.
2. Минимальный контроль все-же понадобится (сеть это такое дело
)
3. Хакерские штучки - не есть гуд. Но, IMHO, п1-п2 есть именно хакерские штучки
В случае, если Вы решите открыть и управлять соединением самостоятельно, то у Вас в ядре, опять-таки не слишком много опций.
1. Организовать сокет поверх TDI интерфейса самостоятельно (официально включено в Висту, для прочих систем имеются частные разработки)
2. Организовать редиректор в USER MODE и использовать все те-же банальные сокеты.
Ну и разумеется всё сказанное мною не претендует на истину в последней инстанци. Вот.
С уважением,
Акс.
PS: А вот еще вспомнил... В наборе утилит от SysInternals (светлая память) была одна под названием DbgView, так вот у неё есть похожий режим (перенаправляет вывод отладочных сообщений через сеть). Поставьте ее. Посмотрите как она это делает.