| 
			| 
					
						| Kife 
								Помогающий    Offline | 
								|  | «  : 01-12-2005 08:50 »  |  | 
 
 Гром, SlavaI : Предлагаю все вопросы по IM драйверу вести в этой теме. Новичкам удобнее искать будет, да и самим можно будет из темы оч. удобный FAQ сделать. А лучше, Гром, зафиксируй эту тему наверху, чтобы она вниз не сползала. |  
						| 
								|  |  
								|  |  Записан | 
 
 _______Да поможет нам F1,  и да сохранит нас F2 ...
 |  |  | 
	| 
			| 
					
						| Kife 
								Помогающий    Offline | 
								|  | « Ответ #1 : 01-12-2005 08:54 »  |  | 
 
 И так, предложения, комментарии!? |  
						| 
								|  |  
								|  |  Записан | 
 
 _______Да поможет нам F1,  и да сохранит нас F2 ...
 |  |  | 
	| 
			| 
					
						| vers 
								Гость
 | 
								|  | « Ответ #2 : 11-12-2005 13:22 »  |  | 
 
 наверное, самый глупый вопрос...XPSP1 DDK, операционка WinXP SP2. Откомпилировал пример драйвера WINDDK\2600.1106\src\network\ndis\passthru в режиме WinXP Free Build Environment. Получил искомый файл passthru.sys. Приложил к нему два inf-файла, которые идут в комплекте. Собственно, вопрос: как его теперь установить в системе? Я так подозреваю, через "Установка оборудования", но какой тип устройства выбирать? При выборе типа "сетевые платы" драйвер не отображается в списке драйверов, найденных в текущей папке.
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| vers 
								Гость
 | 
								|  | « Ответ #3 : 11-12-2005 16:13 »  |  | 
 
 Нашел методом тыка   Оказывается, его нужно установить как сетевую службу в свойствах сетевого адаптера. |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kife 
								Помогающий    Offline | 
								|  | « Ответ #4 : 13-12-2005 11:29 »  |  | 
 
 Абсолютно верно |  
						| 
								|  |  
								|  |  Записан | 
 
 _______Да поможет нам F1,  и да сохранит нас F2 ...
 |  |  | 
	| 
			| 
					
						| vers 
								Гость
 | 
								|  | « Ответ #5 : 13-12-2005 18:18 »  |  | 
 
 А можно как-нибудь установить NDIS IM драйвер без сброса сетевых подключений и без вывода окошка о фатальной ошибке отсутствия цифровой подписи у драйвера? |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kife 
								Помогающий    Offline | 
								|  | « Ответ #6 : 13-12-2005 18:22 »  |  | 
 
 помоему нет. можно только "не руками через inf-файл", а программно. Но окно с отсутствием ЦП все равно появится. |  
						| 
								|  |  
								|  |  Записан | 
 
 _______Да поможет нам F1,  и да сохранит нас F2 ...
 |  |  | 
	| 
			| 
					
						| new_s | 
								|  | « Ответ #7 : 18-01-2006 14:14 »  |  | 
 
 Как я понял можно просто написать NDIS IM и он будет перехватывать весь трафик ?Но некоторые firewall'ы всё таки используют ещё и tdi.
 |  
						| 
								|  |  
								| « Последнее редактирование: 16-12-2007 13:39 от Алексей1153++ » |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kife 
								Помогающий    Offline | 
								|  | « Ответ #8 : 30-01-2006 09:00 »  |  | 
 
 Потому что ИМХО(поправьте если ошибаюсь) из TDI можно еще и имя процесса получить, который данные отправляет/принимает. |  
						| 
								|  |  
								|  |  Записан | 
 
 _______Да поможет нам F1,  и да сохранит нас F2 ...
 |  |  | 
	| 
			| 
					
						| new_s | 
								|  | « Ответ #9 : 31-01-2006 20:26 »  |  | 
 
 Ещё один глупый вопрос.
 А какие функции необходимо перехватыватьв NDIS и TDI?
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kife 
								Помогающий    Offline | 
								|  | « Ответ #10 : 02-02-2006 21:23 »  |  | 
 
 см. пример PassThru из DDK. там в функции DriverEntry все перехватчики описаны. |  
						| 
								|  |  
								|  |  Записан | 
 
 _______Да поможет нам F1,  и да сохранит нас F2 ...
 |  |  | 
	| 
			| 
					
						| new_s | 
								|  | « Ответ #11 : 02-02-2006 23:11 »  |  | 
 
 Забыл...Я только учусь...
 А можно ли просто написать драйвер поверх TDI и всё перехватить?
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kife 
								Помогающий    Offline | 
								|  | « Ответ #12 : 06-02-2006 10:00 »  |  | 
 
 а зачем ? наверно можно..... |  
						| 
								|  |  
								|  |  Записан | 
 
 _______Да поможет нам F1,  и да сохранит нас F2 ...
 |  |  | 
	| 
			| 
					
						| Rulik 
								Помогающий    Offline | 
								|  | « Ответ #13 : 08-02-2006 02:26 »  |  | 
 
 Поддерживаю начинание. Хорошая тему. Буду учится. В свое время попробывал накатать простой фильт, который дропает пакеты. Ну так и не смог его скомпилить. (Времени небыло.) А так очень актуальная тема. |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| new_s | 
								|  | « Ответ #14 : 08-02-2006 13:33 »  |  | 
 
 начинаю разбирать passthru.Что собственно делает этот драйвер?
 И что за дериктория notifyob?(при компиляции создаётся dll)
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| new_s | 
								|  | « Ответ #15 : 08-02-2006 14:57 »  |  | 
 
 Диспетчер ввода/вывода общается с драйверами посредством IRP пакетов, значит в этом пакете и содержится отправляемая информация? Для фильтровки трафика нужно просто разобрать пакет и нужные пропускать? |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kife 
								Помогающий    Offline | 
								|  | « Ответ #16 : 08-02-2006 20:56 »  |  | 
 
 Так! давай по-порядочку!  начинаю разбирать passthru.Что собственно делает этот драйвер?
 И что за дериктория notifyob?(при компиляции создаётся dll)
 
 1. Passthru делает очень много на самом деле - он перехватывает пакет, пересобирает его и переотправляет. 2. notify -- забей и не трогай.     Какая-то dll для ..... я даже не знаю (не помню)  для чего она. Как-то по-моему, она взаимодействует с драйвером... а как - не помню. Короче для начала она тебе нафиг не нужна, все общение делай чарез IRP. Диспетчер ввода/вывода общается с драйверами посредством IRP пакетов, значит в этом пакете и содержится отправляемая информация? Для фильтровки трафика нужно просто разобрать пакет и нужные пропускать?
 1. Да, через irp.      Да, содержится.     Отправляешь данные в драйвер при помощи WINAPI DeviceIoControl(). Предварительно открываешь драйвер SCM-oм . О том, как реализовать в любом драйвере (например в том же passthru, помоему там нет) процедуру диспетчеризации IRP-пакетов, почитай в любую книгу по драйверам. Лично я рекоммендую книгу Солдатова - для новичка в самый раз, сжато, четко и понятно , да и с примерами.  И показано, как взаимодействовать с USER-mode приложениями. 2. Точнее будет сказать, что для фильтровки надо разобрать и нужные "отправить", а ненужные "не отправлять"   |  
						| 
								|  |  
								|  |  Записан | 
 
 _______Да поможет нам F1,  и да сохранит нас F2 ...
 |  |  | 
	| 
			| 
					
						| Kife 
								Помогающий    Offline | 
								|  | « Ответ #17 : 08-02-2006 21:00 »  |  | 
 
 А может мне цикл статей написать по разработке IM-драйвера с модификацией пакетов и отбросом лишних..... ?    |  
						| 
								|  |  
								|  |  Записан | 
 
 _______Да поможет нам F1,  и да сохранит нас F2 ...
 |  |  | 
	| 
			| 
					
						| new_s | 
								|  | « Ответ #18 : 09-02-2006 14:22 »  |  | 
 
 Насчёт цикла это конечно хорошо. Обещаю читать.   |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kife 
								Помогающий    Offline | 
								|  | « Ответ #19 : 10-02-2006 08:15 »  |  | 
 
 Ну, это когда с работой полегче станет.... тогда сразу и начну... а то 25 лет уже почти, а ни одной публикации нет... стыдно как-то   |  
						| 
								|  |  
								|  |  Записан | 
 
 _______Да поможет нам F1,  и да сохранит нас F2 ...
 |  |  | 
	| 
			| 
					
						| Rulik 
								Помогающий    Offline | 
								|  | « Ответ #20 :  10-02-2006 11:41 »   |  | 
 
 2 KifeЖду с нетерпением. Хотелось бы разложить обрывки информации в голове.
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| new_s | 
								|  | « Ответ #21 : 15-02-2006 08:56 »  |  | 
 
 Пробел в понимании процесса.Ну решило приложение отправить данные по сети, а собственно говоря что дальше?
 Не могли бы объяснить как собирается пакет, как он проходит по драйверам?
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| new_s | 
								|  | « Ответ #22 : 16-02-2006 15:14 »  |  | 
 
 объяснять не стоит сам нашёл |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kife 
								Помогающий    Offline | 
								|  | « Ответ #23 : 16-02-2006 16:59 »  |  | 
 
   видишь как все просто   |  
						| 
								|  |  
								|  |  Записан | 
 
 _______Да поможет нам F1,  и да сохранит нас F2 ...
 |  |  | 
	| 
			| 
					
						| new_s | 
								|  | « Ответ #24 : 20-02-2006 09:57 »  |  | 
 
 В passthru сначала происходит регистрация минипорта, а затем протокола. Минипорт регистрируется для передачи, как я понимаю. А зачем протокол? Объясните подробнее. И ещё. NdisMInitializerWapper(&NdisWrapperHandle, DriverObject, RegistryPath, NULL);
 NdisIMRegisterLayeredMiniport(NdisWrapperHandle,.....);
 Читал DDK но до конца не разобрался.
 Первая инициализирует минипорт, а вторая регистрирует.
 А что значит в данном случае инициализация и регистрация?
 Почему passthru не обрабатвает IRP?
 switch (irpStack->MajorFunction)
 {
 case IRP_MJ_CREATE:
 break;
 case IRP_MJ_CLOSE:
 break;
 case IRP_MJ_DEVICE_CONTROL:
 //
 // Add code here to handle ioctl commands sent to passthru.
 //
 break;
 default:
 break;
 }
 |  
						| 
								|  |  
								| « Последнее редактирование: 20-02-2006 20:26 от new_s » |  Записан | 
 |  |  | 
	| 
			| 
					
						| NiR 
								Гость
 | 
								|  | « Ответ #25 : 20-02-2006 12:22 »  |  | 
 
 Мне приходиться после каждого рестарта переинсталлировать passthru, иначе он не дает свой Handle, или это так и должно быть?Делаю так:
 
 1)OpenSCManager(...
 2)CreateService(...
 3)StartService(...
 4)Handle=CreateFile(...
 
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kife 
								Помогающий    Offline | 
								|  | « Ответ #26 : 21-02-2006 09:10 »  |  | 
 
 должен давать |  
						| 
								|  |  
								|  |  Записан | 
 
 _______Да поможет нам F1,  и да сохранит нас F2 ...
 |  |  | 
	| 
			| 
					
						| Kife 
								Помогающий    Offline | 
								|  | « Ответ #27 : 21-02-2006 09:10 »  |  | 
 
 Мне приходиться после каждого рестарта переинсталлировать passthru, иначе он не дает свой Handle, или это так и должно быть?Делаю так:
 
 1)OpenSCManager(...
 2)CreateService(...
 3)StartService(...
 4)Handle=CreateFile(...
 
 
 это не правильно... старт точно не надо, потому что она уже запущена |  
						| 
								|  |  
								|  |  Записан | 
 
 _______Да поможет нам F1,  и да сохранит нас F2 ...
 |  |  | 
	| 
			| 
					
						| Kife 
								Помогающий    Offline | 
								|  | « Ответ #28 : 21-02-2006 09:11 »  |  | 
 
 точнее скажу, когда домой доберусь |  
						| 
								|  |  
								|  |  Записан | 
 
 _______Да поможет нам F1,  и да сохранит нас F2 ...
 |  |  | 
	| 
			| 
					
						| heptohedron2004 
								Гость
 | 
								|  | « Ответ #29 : 21-02-2006 09:49 »  |  | 
 
 Народ плз помогите! Надо чтоб драйвер шифровал приходящую инфу из сети и дешифровал исходящую в сеть. Какой тип драйвера наиболее оптимально подходит под задачу ? |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	|  |