Уже долгое время бьюсь над этим вопросом. С TCP и UDP через TDI проблем нет ни каких. Но вот с RAWIP начинаются глюки. Если идти по аналогии то работа с rawip такаяже как и с udp пытался открыть \\Device\\RawIp - ничего не дает. Глянул как это дело обстоит в ReactOS - там открывается \\Device\\RawIp\\protocol где protocol - номер протокола который будет юзаться. типа 17 udp итд итп. Но открыть \\Device\\RawIp\\6 (TCP) не удалось. Пытался глянуть как работает в этом плане винда. Если из юзермода работа с raw сокетами осуществляется через Socket->SetSockOpt(sock, IPPROTO_IP, IP_HDRINCL, @bOpt, SizeOf(bOpt))->SendTo То было замечено что данные шлются на устройство \\Device\\RawIp\\255 Тогда возникает проблема в том как сделать SetSockOpt в kernel mode. Вообще полной функциональности сырых сокетов не требуется. Небходимо ручное создание только TCP пакетов (имеено порт источни, флаг). P.S. Не предлогать спускаться до NDIS. Если такое возможно через AFD то буду рад услышать как именно )
На сколько я помню, это даже не нужно дизассемблировать (есть в win2k.rar (если нет этого архива, обязательно поищи в Сети)), там должны быть все ответы на твои вопросы в частности как создавать сокеты в режиме ядра и т.д. Я когда-то делал одну простую функцию которая делала сокет из ядра и какую-то с ним операцию. Правда потом я сделал эти действия по-другому поэтому есть вероятность что та функция не заработала
win2k.rar - если ты имеешь в виду исходники, то они у меня есть, но там всё в основном для юзермода. Тут главное создать подобие СЫРОГО сокета через TDI или AFD.
для юзермода да, но там ведь все сводится в обращению к устройствам драйвера, что вобщем-то неважно откуда делать из юзермода или кернел мода.