Reply To: TDI FILTER driver

Home Forums Discussions General Discussion TDI FILTER driver Reply To: TDI FILTER driver

#6278

Dmitry_177
Participant

Собственно сам перехват:

в *.h файле:

PFILE_OBJECT pFile_tcp;
PDEVICE_OBJECT pDev_tcp;
PDRIVER_OBJECT pDrv_tcpip;

typedef NTSTATUS (*OLDTCPIRPMJDEVICECONTROL)(IN PDEVICE_OBJECT, IN PIRP);
OLDTCPIRPMJDEVICECONTROL OldTcpIrpMjDeviceControl;

в *.с файле:

UNICODE_STRING deviceTCPUnicodeString;
WCHAR deviceTCPNameBuffer[]  = L"\\Device\\Tcp";

RtlInitUnicodeString (&deviceTCPUnicodeString, deviceTCPNameBuffer);
ntStatus = IoGetDeviceObjectPointer(&deviceTCPUnicodeString, FILE_READ_DATA, &pFile_tcp, &pDev_tcp);
if(!NT_SUCCESS(ntStatus))
   return ntStatus;
pDrv_tcpip = pDev_tcp->DriverObject;

OldTcpIrpMjDeviceControl = pDrv_tcpip->MajorFunction[IRP_MJ_INTERNAL_DEVICE_CONTROL];

if (OldTcpIrpMjDeviceControl)
   InterlockedExchange ((PLONG)&pDrv_tcpip->MajorFunction[IRP_MJ_INTERNAL_DEVICE_CONTROL], (LONG)HookedTcpDeviceControl);

...

NTSTATUS HookedTcpDeviceControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
{
    PIO_STACK_LOCATION      irpStack;
    UCHAR         *mdlBuffer;

    irpStack = IoGetCurrentIrpStackLocation (Irp);
    switch (irpStack->MajorFunction)
   {
       case IRP_MJ_INTERNAL_DEVICE_CONTROL:
         if (irpStack->MinorFunction == TDI_SEND)
         {
            DbgPrint("tdifilter TDI_SEND");

            mdlBuffer = MmGetSystemAddressForMdlSafe (Irp->MdlAddress, LowPagePriority);

            DbgPrint (mdlBuffer);
         }

         if (irpStack->MinorFunction == TDI_RECEIVE)
         {
            DbgPrint("tdifilter TDI_RECEIVE");

            mdlBuffer = MmGetSystemAddressForMdlSafe (Irp->MdlAddress, LowPagePriority);

            DbgPrint (mdlBuffer);
         }

       break;
      
       default:
       break;
       }

    return OldTcpIrpMjDeviceControl(DeviceObject, Irp);
}

по идее все должно ловиться и TDI_RECEIVE тоже.. Но почему-то этого не происходит.. Если я захожу на какойнибудь сайт, по идее там должны быть http-пакеты и html страничка.. Но этого почему-то нету..=(