Un hook è la funzionalità fornita dal software per gli utenti di quel software per avere il proprio codice chiamato in determinate circostanze. Tale codice può aumentare o sostituire il codice corrente.
Ai vecchi tempi in cui i computer erano veramente personali e i virus erano meno diffusi (sto parlando degli anni '80), era semplice come correggere il software del sistema operativo stesso per chiamare il tuo codice. Ricordo di aver scritto un'estensione del linguaggio BASIC di Applesoft su Apple II che ha semplicemente agganciato il mio codice all'interprete BASIC iniettando una chiamata al mio codice prima che una qualsiasi delle linee fosse elaborata.
Alcuni computer avevano hook pre-progettati, ad esempio lo stream I / O su Apple II. Ha usato un tale gancio per iniettare l'intero sottosistema del disco (le ROM Apple II erano originariamente costruite nei giorni in cui le cassette erano il supporto di archiviazione principale per i PC). Hai controllato i dischi stampando il codice ASCII 4 ( CTRL-D
) seguito dal comando che volevi eseguire quindi a CR
, ed è stato intercettato dal sottosistema del disco, che si era agganciato alle routine di stampa della ROM Apple.
Quindi, ad esempio, le linee:
PRINT CHR(4);"CATALOG"
PRINT CHR(4);"IN#6"
elenca il contenuto del disco e quindi reinizializza la macchina. Ciò ha consentito trucchi come la protezione dei programmi BASIC impostando la prima riga come:
123 REM XIN#6
quindi usando POKE
per inserire il CTRL-D
carattere in cui si X
trovava. Quindi, chiunque tenti di elencare la propria sorgente invierebbe la sequenza di reinizializzazione attraverso le routine di output in cui il sottosistema del disco lo rileverebbe.
Questo è spesso il tipo di inganno a cui dovevamo ricorrere per ottenere il comportamento che volevamo.
Al giorno d'oggi, con il sistema operativo più sicuro, fornisce funzionalità per gli hook, poiché non è più necessario modificare il sistema operativo "in volo" o sul disco.
Sono in giro da molto tempo. I mainframe li avevano (chiamati uscite) e molti software mainframe usano queste strutture anche adesso. Ad esempio, il sistema di controllo del codice sorgente gratuito fornito con z / OS (chiamato SCLM) consente di sostituire completamente il sottosistema di sicurezza semplicemente posizionando il proprio codice nell'uscita.