Помогите - Перехват клавиатуры в w2k
От: Storozh Россия  
Дата: 14.04.02 01:00
Оценка:
Я являюсь студентом СПбГИТМО и в рамках учебного курса "Защита информации" столкнулся со следующей
прблемой: надо написать драйвер ядра, который осуществлял бы перехват клавитуры в win2000 и выводил данные
перехвата в лог-файл.
В DDK ..src\input\kbfiltr содержится скелет такого драйвера, и, насколько я понял, запись данных
перехвата должна осуществляться внутри следующей функции

VOID KbFilter_ServiceCallback(
    IN PDEVICE_OBJECT DeviceObject,
    IN PKEYBOARD_INPUT_DATA InputDataStart,
    IN PKEYBOARD_INPUT_DATA InputDataEnd,
    IN OUT PULONG InputDataConsumed
    )
/*++
Routine Description:

    Called when there are keyboard packets to report to the RIT.  You can do 
    anything you like to the packets.  For instance:
    
    o Drop a packet altogether
    o Mutate the contents of a packet 
    o Insert packets into the stream 
                    
Arguments:

    DeviceObject - Context passed during the connect IOCTL
    
    InputDataStart - First packet to be reported
    
    InputDataEnd - One past the last packet to be reported.  Total number of
                   packets is equal to InputDataEnd - InputDataStart
    
    InputDataConsumed - Set to the total number of packets consumed by the RIT
                        (via the function pointer we replaced in the connect
                        IOCTL)

Return Value:

    Status is returned.

--*/
{
    PDEVICE_EXTENSION   devExt;

    devExt = (PDEVICE_EXTENSION) DeviceObject->DeviceExtension;

    (*(PSERVICE_CALLBACK_ROUTINE) devExt->UpperConnectData.ClassService)(
        devExt->UpperConnectData.ClassDeviceObject,
        InputDataStart,
        InputDataEnd,
        InputDataConsumed);
}

code
Все мои попытки неизменно заканчиваются синим экраном смерти, и я был бы очень признателен за дельный совет или кусок работающего кода.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.