Как всем известно, MS в своих патчах хорошо испортила работу с сырыми сокетами из юзермода. А именно полный запрет посылки самостоятельно сконструированных TCP пакетов. Собственно говоря идея: в tcpip.sys (вроде там) идет блокировка сырых пакетов с флагом iph->ip_p = IPPROTO_TCP; С другими флагами всё норм проходит. И вот идея: пропатчить из своего драйвера код, который как раз фильтрует это. Достаточно тока этого, потому как данные будут отсылаться с реального IP. Хотелось бы узнать по подробнее, кому нибудь удавалось такое делать? и какими методами? Наиболее интересует под WinXP/Win2k3. Можно конечно и под w7 )
В том-то и дело, что драйвер должен сделать так, чтобы прикладные программы смогли выполнять отправку сырых TCP пакетов, через стандартные команды. Както не очень хочется создавать прослойку для непосредственной передачи данных через ndis, тем более придется еще разбирать таблицу маршрутизации, чтобы знать на какой интерфейс посылать пакеты.
тут в принципе можно по сигнатурам найти места. Вот небольшие рассуждения. Загнал в IDA файлик tcpip.sys прогнал всё через HEX Ray. из всего кода наиболее подходящим показался этот: Код (Text): KfReleaseSpinLock(v8, BYTE3(NewIrql)); // тут выходит что v4 - начало IP пакета. // 9 - это офсет на протокол, // 6 как раз и есть IPPROTO_TCP if ( *(_BYTE *)(v4 + 9) != 6 ) sub_455F6( *(_DWORD *)(v4 + 16), // адрес получателя *(_DWORD *)(v4 + 12), // адрес отправителя *(_BYTE *)(v4 + 9), // протокол v4 + (unsigned __int16)v9, (unsigned __int16)a2); то есть по идее далее код выполняется если протокол не равен IPPROTO_TCP Пройдясь по коду дальше будет чтото типа перебора протоколов и получения адреса какойто функции взависимости от протокола. Такое ощущение что какие дополнительные обработчики. Пока что нужно будет попробовать пропатчить это место в файле. Хотя я сомневаюсь что это даст чтото путное