|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Дек 1, 2003 13:11:40 Проблема такая (или вопрос) NDIS-интерфейс открывает минипорт со своими характери типа NDIS_MINIPORT_CHARACTERISTICS. Вопрос в следующем как мне взять эти характеристики (или получить handle) ? |
|
|
Дата: Дек 1, 2003 16:51:31 · Поправил: Безпощадный даос NdisMInitializeWrapper NdisMRegisterMiniport |
|
|
Дата: Дек 1, 2003 18:18:24 NdisMRegisterMiniport - это я зарегистрировал свой минипорт со своими характеристиками, а мне необходимо их выловить от чужого минипорта (в частности от сетевой карты) Я дизасмил драйвер карточки и нашел там вот, что start proc near . . . call ds:NdisInitializeWrapper push 18h pop ecx xor eax, eax lea edi, [ebp+var_60] repe stosd and [ebp+var_5F], al and [ebp+var_50], eax push 60h lea eax, [ebp+var_60] push eax push [ebp+arg_4] mov [ebp+var_60], 5 . . . mov [ebp+var_20], offset sub_26024 mov [ebp+var_24], offset sub_15A96 call ds:NdisMRegisterMiniport pop edi retn 8 И в примерах DDK тоже самое. Функции что-то NdisGetCharacteristics.... в DDK не нашёл :(( |
|
|
Дата: Дек 1, 2003 18:58:46 · Поправил: _van возможно NdisOpenConfiguration + NdisReadConfiguration(но что там в реестре ?), правда нужно знать MiniportAdapterHandle - хотя это уже совсем не то, что нужно. как-то ещё можно с помощью intermediate driver пролистать весь список адаптеров.Правда уже не упомню, где это делал, но как отрою,будет в посте. проблема очень интересная,imho. а в листинге - это стандартная последовательность операций при добавлении нового адаптера. |
|
|
Дата: Дек 1, 2003 21:03:06 · Поправил: _van ну вот, смотри: по листингу вызывается NdisMRegisterMiniport вот ее описалово: NDIS_STATUS NdisMRegisterMiniport ( IN NDIS_HANDLE NdisWrapperHandle, IN PNDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics, IN UINT CharacteristicsLength ); в стек пихается также и указатель на NDIS_MINIPORT_CHARACTERISTICS - можешь посмотреть, что там у неё внутри. Но это решение конкретно под твой адаптер. |
|
|
Дата: Дек 1, 2003 21:28:32 ещё можно почитать 10.3.1 Initializing a Bundle of Miniports |
|
|
Дата: Дек 3, 2003 12:27:06 Проблема действительно интересная и решение её не под конкретный адаптер, а под все физические сетевые карты. Если перехватить ReturnPacketHandler и SendPacketsHandler, то можно читать траффик минуя чёртов NDIS который, оказывается, отбрасыват (не досылает) пакеты. Как показал SofIce и сниффер на RAW сокетах - идет какая-то сетевая активность, пакеты (Ethernet) пересылаются от моей машины и наоборот :-[ ] хотя сниффер не регистрирует пакеты, а в сети стоит switch :) Интересно было-бы посмотреть что за информация передаётся. |
|
|
Дата: Дек 3, 2003 16:26:42 решение её не под конкретный адаптер, а под все физические сетевые карты - что-то я не понял, что ты имеешь в виду. Хм. Вот ты пишешь, что 'Если перехватить ReturnPacketHandler и SendPacketsHandler, то можно читать траффик минуя чёртов NDIS'. А хэндлеры эти устанавливаются в NdisMRegisterMiniport. Кстати, мимо NdisSend(макрос, кстати), а внутри него - мимо NdisOpenAdapter не пройдёшь. И насчёт перехвата трафа. Ты читал мою статью по файрволлам ? - там чётко указано, что для перехвата трафа нужно перехватить 4 функции, и тогда мимо тебя ни один байт не проскочит. И насчёт сниффера. Естественно он не видит ! Руссинович, часть 13. Сокеты - выше NDIS. Потому и не хватают. Ниже NDIS только HAL. |
|
|
Дата: Дек 4, 2003 10:51:29 Значит так, когда драйвер загружается (см. выше) он открывает свой минипорт, всё это стандартизовано для ОС, но у минипорта, именно сетевой карты, есть как раз две ф-ции (ReturnPacketHandler и SendPacketsHandler), которые и отвечают за "окончательный выброс (приём) пакета в (из) сеть" (по другому не скажешь) вот именно это и есть чистый сетевой траффик, а то как пакеты в NDIS перебрасываются дальше или отсеиваются есть много документации. Может я в чём-то заблуждаюсь, но в SoftIce чётко прослеживается как всё это происходит. Я хочу подменить обработчики сетевухи. На сколько я понял из DDK в ф-ции MiniportReconfigure выдернуть адреса обработчиков не так просто (если не поставить хуки на NdisMRegisterMiniport) P.S. Где находится статья по файрволлам ? Надо почитать... |
|
|
Дата: Дек 4, 2003 18:05:37 · Поправил: fynjy нижеследующий кусок кода устанавливает INT 40 в винде 2k и ,если в драйвере сетевой карты в нужном месте поставить CD 40 , то мона пакеты (в данном сл-е исходящие) править. необходимо только найти это нужное место:). оно есть SendPacketHandler. А найти этого SePaHa - ра можно продизасмив Ваш драйвер сетевой карты (или драйвер Вашей сетевой карты (т.е. компа Вашего:));глянув чё пушится перед NdisMRegisterMiniport. начало SePaHa-ра у меня выглядит так: push ebp mov ebp,esp ;))) - вместо этого у меня "int 40h" поэтому и lea ebp,[esp+10h] в моём int_40 handler-е; .386p .model flat,stdcall option casemap :none include ntstatus.inc include ntddk.inc include ntoskrnl.inc includelib ntoskrnl.lib .data psDescr dw 0 dd 0 mac db 01 db 02 db 03 db 04 db 05 db 06 db 10 dup('*') .code DriverEntry proc push ebx push esi push edi CLI ;!!!!!!!!!!!!!!!!!!! UNCHECK & SIDT mov ebx , cr0 ;;;а mov eax,10000h ;;;вот это not eax ;;;м.б and ebx ,eax ;;;и mov cr0 , ebx ;;;необязательно sidt psDescr STI ; mov eax,dword ptr [psDescr+02] ; eax contains base of IDT add eax,200h call r1 ;здесь мы call-им чтобы запушить т.о. аддес где "r0:" r0: ; +NEW+HANDLER+ db 90h push eax lea ebp,[esp+10h] mov eax,[ebp+0Ch] mov eax,[eax] mov eax,[eax+08] mov eax,[eax+0Ch]; EAX contains PACKET DATA ADDRESS ;----------------------------------------------------- push ecx push esi push edi mov esi,offset mac lea edi,[eax+06] mov ecx,06 cld rep movsb pop edi pop esi pop ecx ;--------------------------------------------------- pop eax db 90h iretd r1: pop ebx ; EBX= CurrentAddress mov word ptr [eax],bx mov byte ptr [eax+02],08 mov byte ptr [eax+05],08Eh shr ebx,10h mov word ptr [eax+06],bx exit: pop edi pop esi pop ebx xor eax,eax ; EAX == STATUS_SUCCESS ret 08 DriverEntry endp end DriverEntry виндовые дрова менять можно при помощи "консоли восстановления" (и по-другому:). не забудьте CheckSum в заголовке пропадченного (API-шная MapFileAndChecksum). удачи. зы: с этими пакетами многа проблем будет. пишите, готов обсудить. ззы: у меня больше вопросов чем ответов. зззы: не забывайте про выравневание;)) circle@inbox.ru |
|
|
Дата: Дек 4, 2003 19:19:20 продизасмив Ваш драйвер сетевой карты ха. И так ты будешь каждый дров дизасмить? Хотя мне уже всё равно.Покеда, люди. Через пару лет,после дембеля, может и увидимся. Привет Володе. |
|
|
Дата: Дек 4, 2003 19:59:09 _van Ебучий случай. Родной, херово. Кстати, мои мыла до тебя не долетают :( |
|
|
Дата: Дек 5, 2003 14:07:59 И так ты будешь каждый дров дизасмить? _van не надо каждый дров. достатчна глянуть какое место в NDIS.sys эту ф-ю вызывает. зы: чуть не забыл, если пытаться переделывать пакеты, у которых после двух МАК-ов вот такое 08 00 00 01 (а дальше они как ARP запросы), то система вешается :((. почему, - не знаю (м.б. винда этими пакетами сама с собой общается??). надо их пропускать не меняя :(( ззы: а ещё, ICMP-пакеты идут не этим путём (каким - не знаю:(( ) |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.114 |