Я являюсь студентом СПбГИТМО и в рамках учебного курса "Защита информации" столкнулся со следующей
прблемой: надо написать драйвер ядра, который осуществлял бы перехват клавитуры в 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
Все мои попытки неизменно заканчиваются синим экраном смерти, и я был бы очень признателен за дельный совет или кусок работающего кода.