Un hook est une fonctionnalité fournie par un logiciel pour que les utilisateurs de ce logiciel aient leur propre code appelé dans certaines circonstances. Ce code peut augmenter ou remplacer le code actuel.
Dans les temps anciens où les ordinateurs étaient vraiment personnels et les virus moins répandus (je parle des années 80), c'était aussi simple que de patcher le logiciel du système d'exploitation lui-même pour appeler votre code. Je me souviens d'avoir écrit une extension du langage Applesoft BASIC sur l'Apple II qui a simplement accroché mon code à l'interpréteur BASIC en injectant un appel à mon code avant que la ligne ne soit traitée.
Certains ordinateurs avaient des crochets préconçus, un exemple étant le flux d'E / S sur l'Apple II. Il a utilisé un tel crochet pour injecter le sous-système de disque entier (les ROM Apple II ont été initialement construites à l'époque où les cassettes étaient le principal support de stockage pour les PC). Vous avez contrôlé les disques en imprimant le code ASCII 4 ( CTRL-D
) suivi de la commande que vous vouliez exécuter puis a CR
, et il a été intercepté par le sous-système de disque, qui s'était accroché aux routines d'impression Apple ROM.
Ainsi, par exemple, les lignes:
PRINT CHR(4);"CATALOG"
PRINT CHR(4);"IN#6"
répertorie le contenu du disque, puis réinitialise la machine. Cela a permis des astuces telles que la protection de vos programmes BASIC en définissant la première ligne comme:
123 REM XIN#6
puis en utilisant POKE
pour insérer le CTRL-D
caractère à l'endroit où il se X
trouvait. Ensuite, toute personne essayant de répertorier votre source enverra la séquence de réinitialisation via les routines de sortie où le sous-système de disque la détectera.
C'est souvent le genre de ruse à laquelle nous avons dû recourir pour obtenir le comportement que nous voulions.
De nos jours, avec le système d'exploitation plus sécurisé, il fournit des installations pour les hooks lui-même, puisque vous n'êtes plus censé modifier le système d'exploitation "en vol" ou sur le disque.
Ils existent depuis longtemps . Les mainframes en avaient (appelés sorties) et de nombreux logiciels mainframe utilisent ces installations même maintenant. Par exemple, le système de contrôle de code source gratuit fourni avec z / OS (appelé SCLM) vous permet de remplacer entièrement le sous-système de sécurité en plaçant simplement votre propre code à la sortie.