• Blog
gorobina

Драйвер На Клавиатуру Ps

12/13/2016

0 Comments

 

Варианты реализации кейлоггеров в ОС Windows. Часть II - Программные продукты Данная статья является продолжением предыдущей обзорной статьи , посвященной кейлоггерам, и представляет детальный анализ технических аспектов реализации кейлоггеров. Как было сказано в первой статье, принципиальная идея кейлоггера состоит в том, чтобы внедриться между любыми двумя звеньями в цепи прохождения сигнала от нажатия клавиш на клавиатуре до появления символов на экране. Мы проанализируем, какие звенья содержатся в данной цепи, а также рассмотрим варианты построения программных и аппаратных кейлоггеров. Остальным читателям достаточно запомнить, что в ОС Windows существует множество способов перехватить вводимые с клавиатуры данные, хотя большинство реально существующих кейлоггеров использует лишь два их них (см. Мы не разделяем мнение некоторых экспертов по безопасности, которые считают возможным публиковать подобные коды.

Обработка клавиатурного ввода в OC Windows  Существует несколько базовых технологий перехвата нажатий клавиш и событий мыши, на основе которых создано множество кейлоггеров. Однако перед тем как рассматривать конкретные типы кейлоггеров, необходимо познакомиться со схемой обработки клавиатурного ввода, реализованной в ОС Windows. Для описания всей схемы - от нажатия клавиши на клавиатуре до срабатывания системного прерывания контроллера клавиатуры и получения активным окном сообщения WM. Александр Фролов, Григорий Фролов, Том 2, книга 1, М.: Диалог- МИФИ, 1. Принципы работы клавиатуры как физического устройства  В настоящее время большинство клавиатур выполнено в виде отдельного устройства, подключаемого к компьютеру с помощью одного из разъемов, чаще всего PS/2 или USB. Существуют два микроконтроллера, обеспечивающие процесс обработки клавиатурного ввода: один - на материнской плате ПК, второй - в самой клавиатуре.

Таким образом, клавиатура персонального компьютера сама по себе является компьютерной системой. Она построена на основе микроконтроллера 8. Этот номер называется скан- кодом (название подчеркивает тот факт, что компьютер сканирует клавиатуру для поиска нажатой клавиши).

Скан- код - это случайное значение, выбранное IBM еще тогда, когда она создавала первую клавиатуру для ПК. Скан- код не соответствует ASCII- коду клавиши, одной и той же клавише могут соответствовать несколько значений ASCII- кода. Таблицу скан- кодов можно посмотреть, например, в двадцатой главе книги The Art of Assembly Language Programming.

Наличие двух скан- кодов важно, так как некоторые клавиши имеют смысл только тогда, когда они нажаты (Shift, Control, Alt). Рисунок 1. Упрощенная схема клавиатуры  Когда пользователь нажимает клавишу на клавиатуре, он замыкает электрический контакт. В результате при следующем сканировании микроконтроллер фиксирует нажатие определенной клавиши и посылает в центральный компьютер скан- код нажатой клавиши и запрос на прерывание. Аналогичные действия выполняются и тогда, когда оператор отпускает нажатую ранее клавишу. После этого процедура обработки прерывания может получить скан- код из указанного порта ввода- вывода. Считав байт из этого порта, можно определить статус контроллера клавиатуры, записав байт - послать контроллеру команду. Биты 0 и 1 в байте статуса (порт 6.

  1. Переключение режимов не требует установки дополнительных драйверов и регулируется клавишей переключения скорости. При этом клавиатура может подключаться к системному блоку через порт USB или PS/2.
  2. Упрощенная схема клавиатуры. Когда пользователь нажимает клавишу на клавиатуре, он замыкает электрический контакт. Стек драйверов для PS/2-клавиатуры. Стек драйверов содержит (сверху вниз).
Драйвер На Клавиатуру Ps

Стандартная клавиатура PS/2. Дата драйвера: 2016-08-18. Версия драйвера: 19.3.4.31. Не работает клавиатура, Не удается задать состояние индикаторов клавиатуры, Сбой при загрузке драйвера i8042prt, i8042prt.sys,kbdclass.sys, The Описанная в статье неисправность наблюдается на ПК с клавиатурой PS /2. Не работает клавиатура, Не удается задать состояние индикаторов клавиатуры, Сбой при загрузке драйвера i8042prt, i8042prt.sys,kbdclass.sys, The. Описанная в статье неисправность наблюдается на ПК с клавиатурой PS/2. Скачать драйвер Клавиатуры KB-21e (KL-0210) PS /2 название файла kb0368.exe.

Когда данные доступны для чтения из порта 6. Биты включения/выключения клавиатуры в командном байте (порт 6. Списки разрешенных команд, которые можно послать контроллеру клавиатуры, представлены, например, в документе . Порт 6. 0h при чтении содержит скан- код последней нажатой клавиши, а в режиме записи он используется для расширенного управления клавиатурой. При использовании порта 6.

Scroll Lock, Num Lock, Caps Lock. Однако в ОС Windows приложениям пользовательского режима запрещено работать с портами, поэтому эту задачу выполняют драйвера операционной системы. Архитектура ? Очевидно, тот, кто зарегистрировал процедуру обработки аппаратного прерывания клавиатуры IRQ 1. В ОС Windows эту обработку производит драйвер i. В отличие от времен MS DOS, когда каждый системный компонент был как бы . Поэтому перед тем как приступить к рассмотрению драйвера i. Клавиатура является одним из таких устройств, наряду с манипулятором .

Однако архитектура не ограничена только USB- устройствами и поддерживает другие типы устройств ввода, в частности, bluetooth- клавиатуру, клавиатуру и мышь, подключаемые по PS/2 порту, а также устройства, подключаемые по игровому порту (I/O port 2. USB- клавиатуры используют ряд элементов, введенных при разработке программной поддержки PS/2- клавиатур.

Стек драйверов для системных устройств ввода  Драйвера клавиатуры, независимо от схем физического подключения, используют системные драйвера класса клавиатуры для обработки не зависимых от аппаратной части операций. Данные драйвера называются драйверами класса, так как обеспечивают требуемые системой, но не зависимые от аппаратной реализации требования к конкретному классу устройств. В ОС Windows для x. Драйверные стеки для системных устройств ввода: клавиатуры и мыши Стек драйверов для Plug and Play PS/2- клавиатуры.

Стек драйверов для Plug and Play PS/2- клавиатуры. Рисунок 3. Стек драйверов для PS/2- клавиатуры  Стек драйверов содержит (сверху вниз): Kbdclass - верхнеуровневый фильтр- драйвер класса клавиатуры.

Список аппаратных ресурсов, используемых драйвером i. На рисунке показан список аппаратных ресурсов, используемых драйвером i. Их можно просмотреть, например, с помощью утилиты Device. Tree, разработанной компанией Open Systems Resources. Для тех, кто прочел разделы . Данный драйвер должен поддерживать ту же обработку всех типов запросов ввода- вывода и управляющих команд (IOCTL), что и драйвер класса клавиатуры.

В этом случае перед передачей в подсистемы пользовательского режима данные будут отданы на обработку в этот драйвер- фильтр. Стек устройств для Plug and Play PS/2- клавиатуры  Рассмотрим теперь стек устройств, которые создают указанные выше драйвера в драйверном стеке клавиатуры. Ниже на рисунке слева изображен стек устройств, приведенный в MSDN Library для PS/2- клавиатуры, справа - скриншот программы Device. Tree, показывающий реальную ситуацию на машине автора статьи. Рисунок 5. Конфигурация объектов устройств для Plug and Play PS/2- клавиатуры  В целом стек устройств (правильнее говорить о стеке объектов устройств) PS/2- клавиатуры состоит из: физического объекта устройства клавиатуры (PDO), созданного драйвером шины (в данном случае, шины PCI) - Device0.

FDO), созданного и присоединенного к PDO драйвером i. Kbdclass - DeviceKeyboard. Class. 0. Поток необработанного ввода (получение данных от драйвера)  В предыдущем разделе мы наблюдали примеры построения клавиатурных стеков в режиме ядра операционной системы. Теперь мы рассмотрим, как происходит передача информации о нажатии клавиш приложениям пользовательского режима. Операционная система при старте создает RIT и системную очередь аппаратного ввода (system hardware input queue, SHIQ). Получив запрос, драйвер Kbdclass отмечает его как ожидающий завершения (pending), ставит в очередь и возвращает код возврата STATUS.

Потоку необработанного ввода приходится ждать завершения IRP, для чего используется вызов асинхронной процедуры (Asynchronous Procedure Call, APC). Его обработчик вызывает специальную процедуру обработки прерывания IRQ 1 (interrupt service routine, ISR), зарегистрированную в системе драйвером i. Данная процедура считывает из внутренней очереди контроллера клавиатуры появившиеся данные. Обработка аппаратного прерывания должна быть максимально быстрой, поэтому ISR ставит в очередь вызов отложенной процедуры (Deferred Procedure Call, DPC) I8.

Keyboard. Isr. Dpc и завершает свою работу. Как только это станет возможно (IRQL понизится до DISPATCH. В этот момент будет вызвана процедура обратного вызова Keyboard. Class. Service. Callback, зарегистрированная драйвером Kbdclass у драйвера i. Keyboard. Class. Service. Callback извлечет из своей очереди ожидающий завершения запрос IRP, заполнит максимальное количество структур KEYBOARD.

Поток необработанного ввода пробуждается, обрабатывает полученную информацию и вновь посылает IRP типа IRP. Таким образом, у стека клавиатуры всегда есть по крайней мере один ожидающий завершения IRP, и находится он в очереди драйвера Kbdclass. Рисунок 6. Последовательность запросов от RIT к драйверу клавиатуры  С помощью утилиты Irp.

Tracker, разработанной упоминавшейся ранее компанией Open Systems Resources, можно отследить последовательность вызовов, происходящих при обработке клавиатурного ввода. Рисунок 7. Обработка клавиатурного ввода в пользовательском режиме  Как же RIT обрабатывает поступившую информацию? Все пришедшие клавиатурные события помещаются в системную очередь аппаратного ввода, после чего они последовательно преобразуются в сообщения Windows (типа WM. В сообщениях Windows скан- коды клавиш заменяются на коды виртуальных клавиш, соответствующие не расположению клавиши на клавиатуре, а действию, которое выполняет эта клавиша.

Механизм преобразования кодов зависит от активной раскладки клавиатуры, одновременных нажатий других клавиш (например, SHIFT) и других факторов. Этот поток привязывается к RIT. Если пользователь запускает MS Word, то его поток, создавший окно, немедленно подключится к RIT. После этого поток, принадлежащий Explorer, отключается от RIT, так как единовременно с RIT может быть связан только один поток. При нажатии клавиши в SHIQ появится соответствующий элемент, что приведет к тому, что RIT пробудится, преобразует событие аппаратного ввода в сообщение от клавиатуры и поместит его в VIQ потока приложения MS Word.

Обработка сообщений конкретным окном  Как же поток обрабатывает сообщения от клавиатуры, попавшие в его очередь сообщений? Фокус ввода - атрибут, который может присваиваться окну, созданному приложением или Windows.

Если окно имеет фокус ввода, соответствующая функция этого окна получает все клавиатурные сообщения из системной очереди. Приложение может передавать фокус ввода от одного окна другому, например, при переключении на другое приложение с помощью комбинации Alt+Tab.

0 Comments



Leave a Reply.

    Author

    Write something about yourself. No need to be fancy, just an overview.

    Archives

    October 2016

    Categories

    All

    RSS Feed

Powered by
  • Blog
✕