вот такая ошибка: STATUS_OBJECT_NAME_NOT_FOUND на вот такой код: Код (Text): RtlInitUnicodeString(&TransportDeviceName, L"\\Device\\Tcp"); ASSERT(KeGetCurrentIrql() == PASSIVE_LEVEL); InitializeObjectAttributes( &ChannelAttributes, // Tdi Control Channel attributes &TransportDeviceName, // Transport Device Name \\Device\\Tcp OBJ_CASE_INSENSITIVE, // Attributes NULL, // RootDirectory NULL // SecurityDescriptor ); Status = ZwCreateFile( &ControlChannel, // Handle to the Control Channel object GENERIC_READ | GENERIC_WRITE, // Desired Access &ChannelAttributes, // Object Attributes &IoStatusBlock, // Final I/O status block NULL, // Allocation Size FILE_ATTRIBUTE_NORMAL, // Normal attributes FILE_SHARE_READ, // Sharing attributes FILE_OPEN_IF, // Create disposition 0, // CreateOptions NULL, // EA Buffer 0); // EA length Вопрос, почему? Альтернатива ZwOpenFile дает тот же результат. Естественно, ет наверное обертка для ZwCreateFile.
А кто параметры endpoint задавать будет? В атаче моя реализация сокетов через TDI. Она до конца не доведена, но как пример вполне сойдет. 479943259__mysockets.c
А ты думаешь я бы так просто выложил, если бы не пишали? А чтобы не пищали надо посылать IRP нижнему девайсу в стеке, и обходить NDIS фильтры. Но этого нахаляву недождетесь.
Ms Rem Если не секрет сколько занимает места твой интерфейс сокетов в скомпелированом виде. Я имею ввиду не тот что ты здесь выложил, а тот который напрямую на \Device\tcpip шлет IRP ?
Ms Rem А трафик накаптивается при использовании твоих интерфейсов? Тоесть винда его отражает? Это вообще на каком уровне происходит (подсчет) ?
Подсчет происходит на уровне драйверов сетевых карт, отдельно для каждого адаптера. При запросе результатов подсчета драйверам сетевых карт посылается IOCTL_NDIS_QUERY_SELECTED_STATS, и они возвращают число принятых/посланых пакетов. Для скрытия трафика надо почукать DriverObject этих дров и отнимать от результатов запроса число своих пакетов (которое подсчитывается на уровне ndis хуков).