· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.WIN32 —› Драйвер-фильтр

Посл.отвђт Сообщенiе


Дата: Ноя 24, 2003 18:11:49

Как система общается с сетевой картой в Win2000 ?
Написал драйвер перехвата системных вызовов драйвера сетевой карты (что-то вроде перехвата int 21h в вирусологии)
DriverEntry proc pDriverObject:PDRIVER_OBJECT, pusRegistryPath:PUNICODE_STRING
pushad
mov edx, pDriverObject
assume edx:ptr DRIVER_OBJECT
mov [edx].DriverUnload, offset Unload
assume edx:ptr nothing
invoke IoGetDeviceObjectPointer,addr drvsmbl,MAXIMUM_ALLOWED,addr fileobj,\
addr NetCard; STANDARD_RIGHTS_ALL
.if eax==STATUS_SUCCESS
lea edx, NetCard
mov edx, [edx]
assume edx:ptr DEVICE_OBJECT
mov edx, [edx].DriverObject
assume edx:ptr nothing
assume edx:ptr DRIVER_OBJECT
mov eax, [edx].MajorFunction[IRPCONTROL*4]
mov OldDevControl, eax
lea eax, DeviceControl
cli
mov [edx].MajorFunction[IRPCONTROL*4], eax
sti
assume edx:ptr nothing
.endif
popad
mov eax, STATUS_SUCCESS
ret
;
DriverEntry endp

где IRPCONTROL - IRP_MJ_DEVICE_CONTROL
Оказалось, что система вызывает эту ф-цию 1 раз сек.

assume edi:ptr IO_STACK_LOCATION
mov eax, [edi].Parameters.DeviceIoControl.IoControlCode

Возвращается с постоянным кодом 01700eh, где 17h - сетевая карта (физическая) Даже, когда происходит общение по сети ничего не меняется. Функции типа IRP_MJ_READ и IRP_MJ_WRITE не вызываются :(
И еще одна интересная особенность :) в системе есть девайс сетевой карты \Device\e100b (SoftIce: driver...), при попытке его открыть выдается ошибка - девайс не найден, однако нашел как эта штука открывается (оказлось Win ему присвоела еще имя \Device\NTPNP_PCI0011 - прямо на PCI разъеме), а при запросе имени девайса он мне выдал \Device\e100b :)
Может кто сталкивался с проблемой перехвата вызовов системных драйверов ?


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.069