· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.NETWORKS —› Miniport

Посл.отвђт Сообщен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