L'interfaccia da tastiera a applicazione attraversa diverse fasi, alcune delle quali il sistema operativo ha scarso controllo e altre che forniscono agganci espliciti per funzionalità aggiuntive. Il design di base è questo: gli eventi hardware vengono ricevuti dalle catene di driver, che quindi passano i messaggi al kernel, che quindi lo invia a una catena di tasti di scelta rapida globale e infine all'applicazione prevista (se non cancellati da alcun passaggio precedente nella catena ).
La catena dei driver consente al kernel di non preoccuparsi di "come" vengono generate le battiture, ma solo di quello che sono. Potrebbero provenire da una tastiera, da un dispositivo IR o da qualsiasi altra sorgente che potrebbe inviare un segnale progettato per essere interpretato come una tastiera. Un registratore di tastiera hardware, ad esempio, è un dongle che ha un ingresso USB o PS / 2 su un'estremità e una porta USB o PS / 2 sull'altra, in modo tale che la tastiera passi i dati attraverso questo dispositivo e venga intercettata. Il sistema operativo letteralmente non è in grado di rilevare che tale registrazione è in corso.
L'altro tipo comune di registrazione avviene nel software, che può accadere prima che il sistema operativo abbia la possibilità di vedere i messaggi della tastiera, o dopo. I driver possono fare praticamente tutto ciò che vogliono e il sistema operativo non può rilevare rigorosamente che un driver sta deviando i messaggi per scopi nefasti, perché riescono a ispezionare i messaggi prima che lo faccia il sistema operativo. Questa è la natura dell'Hardware Abstraction Layer (HAL) di cui fanno parte i driver. Fortunatamente, poiché sono in memoria, il software anti-malware può rilevare e disabilitare tale comportamento.
Infine, hai un "buco" intenzionale nel sistema operativo, di solito indicato come "tasti di scelta rapida globali", che consente a qualsiasi applicazione di richiedere che i messaggi della tastiera vengano passati a loro prima dell'applicazione in focus. Ciò consente non solo il funzionamento di Alt-Tab (il gestore delle finestre intercetta questi messaggi per cambiare app), ma anche la maggior parte dei programmi multimediali richiede ai gestori di supportare tasti multimediali come riproduzione, riavvolgimento e avanzamento rapido e altre app di terra dell'utente per controllo del volume, ecc. Senza tutti questi tasti di scelta rapida globali, il sistema operativo sarebbe molto fastidioso da usare e di conseguenza le app sarebbero molto più complesse. Tuttavia, proprio poiché questa è una grande funzionalità da avere, può anche essere usata in modo improprio da un programma.
Tuttavia, dovresti notare che non "tutti" i programmi ricevono una copia di un messaggio della tastiera, solo i driver, gestori di tasti di scelta rapida globali e l'applicazione a fuoco. Il problema non ha nulla a che fare con il fatto che ogni programma riceve una copia di un evento della tastiera, ma il fatto che l'HAL deve essere in grado di trasformare i messaggi dall'hardware ai messaggi del kernel e sono necessari tasti di scelta rapida globali per fornire funzionalità al utente senza che ogni programma debba essere creato per fornire le stesse funzionalità.
Ci sono stati progressi per bloccare il processo, come la richiesta di "driver firmati", che riduce il probabilità che driver dannosi entrino nella catena dei driver e antivirus in grado di rilevare comportamenti scorretti da parte delle app. Tuttavia, fino a quando non verranno risolte molte delle vulnerabilità di sicurezza, come la registrazione della tastiera a livello di hardware e la registrazione di tasti di scelta rapida globale non sicura, i logger avranno ancora la possibilità di registrare le sequenze di tasti. Anche se le normali sequenze di tasti sembrano andare semplicemente dall'hardware a un'app, in realtà sono necessari diversi passaggi intermedi e questi passaggi sono necessari per la compatibilità di base (driver) e la funzionalità (tasti di scelta rapida globali).