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