Um gancho é uma funcionalidade fornecida pelo software para que os usuários desse software tenham seu próprio código chamado em determinadas circunstâncias. Esse código pode aumentar ou substituir o código atual.
Antigamente, quando os computadores eram verdadeiramente pessoais e os vírus eram menos comuns (estou falando dos anos 80), era tão simples quanto aplicar o próprio software do sistema operacional para ligar para o seu código. Lembro-me de escrever uma extensão para a linguagem Applesoft BASIC no Apple II que simplesmente conectou meu código ao interpretador BASIC injetando uma chamada no meu código antes que qualquer linha fosse processada.
Alguns computadores tinham ganchos pré-projetados, um exemplo é o fluxo de E / S no Apple II. Ele usou esse gancho para injetar todo o subsistema de disco (as ROMs Apple II foram originalmente construídas nos dias em que os cassetes eram o principal meio de armazenamento dos PCs). Você controlava os discos imprimindo o código ASCII 4 ( CTRL-D
) seguido do comando que você queria executar, em seguida CR
, a , e foi interceptado pelo subsistema do disco, que havia se ligado às rotinas de impressão da Apple ROM.
Então, por exemplo, as linhas:
PRINT CHR(4);"CATALOG"
PRINT CHR(4);"IN#6"
listaria o conteúdo do disco e reinicializaria a máquina. Isso permitiu truques como proteger seus programas BASIC, definindo a primeira linha como:
123 REM XIN#6
usando POKE
para inserir o CTRL-D
caractere onde X
estava. Então, qualquer um que tentar listar sua fonte enviaria a sequência de reinicialização através das rotinas de saída onde o subsistema de disco a detectaria.
Esse é frequentemente o tipo de truque que tínhamos que recorrer, para obter o comportamento que queríamos.
Atualmente, com o sistema operacional mais seguro, ele oferece facilidades para ganchos, já que não é mais necessário modificar o sistema operacional "em voo" ou no disco.
Eles já existem há muito tempo. Os mainframes os possuíam (chamados de saídas) e uma grande quantidade de software de mainframe usa esses recursos até agora. Por exemplo, o sistema de controle de código-fonte gratuito que acompanha o z / OS (chamado SCLM) permite substituir completamente o subsistema de segurança simplesmente colocando seu próprio código na saída.