La interfaz del teclado a la aplicación atraviesa varias fases, algunas de las cuales el sistema operativo tiene poco control, y otras proporcionan conexiones explícitas para una funcionalidad adicional. El diseño básico es el siguiente: los eventos de hardware son recibidos por las cadenas de controladores, que luego pasan los mensajes al kernel, que luego los envían a una cadena global de teclas de acceso rápido, y finalmente a la aplicación deseada (si no se cancela con ningún paso previo de la cadena). ).
La cadena de controladores permite que el kernel no se preocupe por "cómo" se generan las pulsaciones de teclado, solo lo que son. Pueden ser desde un teclado, desde un dispositivo IR o cualquier otra fuente que pueda enviar una señal diseñada para ser interpretada como un teclado. Un registrador de teclado de hardware, por ejemplo, es un dongle que tiene una entrada USB o PS / 2 en un extremo, y un puerto USB o PS / 2 en el otro, de modo que el teclado pasa los datos a través de este dispositivo y se intercepta. El sistema operativo, literalmente, no puede detectar que tal registro está en marcha.
El otro tipo de registro común ocurre en el software, que puede ocurrir antes de que el sistema operativo tenga la oportunidad de ver los mensajes del teclado o después. Los conductores pueden hacer casi lo que quieran, y el sistema operativo no puede detectar estrictamente que un controlador está desviando mensajes para propósitos infames, porque pueden inspeccionar los mensajes antes de que lo haga el sistema operativo. Esta es la naturaleza de la capa de abstracción de hardware (HAL) de la que forman parte los controladores. Afortunadamente, ya que están en la memoria, el software antimalware puede detectar y deshabilitar dicho comportamiento.
Finalmente, tiene un "agujero" intencional en el sistema operativo, generalmente denominado "teclas de acceso rápido globales", que permite que cualquier aplicación solicite que se les pasen los mensajes del teclado antes de la aplicación enfocada. Esto permite que no solo funcione Alt-Tab (el administrador de ventanas intercepta estos mensajes para cambiar de aplicación), sino que también la mayoría de los programas de medios solicitan a los manejadores que admitan claves multimedia como reproducir, rebobinar y avanzar rápidamente, y otras aplicaciones de tierra de usuario para control de volumen, etc. Sin todas estas teclas rápidas globales, el sistema operativo sería muy molesto de usar, y las aplicaciones serían mucho más complejas como resultado. Sin embargo, al igual que esta es una gran característica, también puede ser abusada por un programa.
Sin embargo, debe tener en cuenta que no todos los programas obtienen una copia del mensaje del teclado, solo los controladores, los manejadores de teclas de acceso rápido globales y la aplicación enfocada. El problema no tiene nada que ver con el hecho de que cada programa obtiene una copia de un evento de teclado, sino el hecho de que la HAL debe poder transformar los mensajes de hardware a los mensajes del kernel, y las teclas de acceso rápido globales son necesarias para proporcionar características a la usuario sin necesidad de crear cada programa para proporcionar las mismas características.
Sin embargo,
ha habido avances para bloquear el proceso, como el requerimiento de "controladores firmados", lo que reduce la probabilidad de que conductores maliciosos ingresen a la cadena de controladores y los antivirus que pueden detectar errores. Comportamiento por apps. Sin embargo, hasta que se solucionen muchas de las vulnerabilidades de seguridad, como el registro de teclado a nivel de hardware y el registro inseguro de teclas de acceso rápido a nivel global, los registradores aún tendrán la oportunidad de registrar las pulsaciones de teclas. A pesar de que las pulsaciones normales parecen ir simplemente del hardware a una aplicación, en realidad hay varios pasos intermedios necesarios, y estos pasos son necesarios para la compatibilidad básica (controladores) y la funcionalidad (teclas de acceso rápido globales).