Хук - это функциональность, предоставляемая программным обеспечением, чтобы пользователи этого программного обеспечения могли вызывать свой собственный код при определенных обстоятельствах. Этот код может дополнять или заменять текущий код.
В старые времена, когда компьютеры были по-настоящему личными, а вирусы были менее распространены (я говорю о 80-х), это было так же просто, как исправление самого программного обеспечения операционной системы для вызова вашего кода. Я помню, как писал расширение для языка Applesoft BASIC на Apple II, которое просто подключало мой код к интерпретатору BASIC, вводя вызов в мой код до обработки какой-либо строки.
У некоторых компьютеров были предварительно спроектированные перехватчики, одним из примеров которых является поток ввода-вывода на Apple II. Он использовал такую зацепку для внедрения всей дисковой подсистемы (ПЗУ Apple II изначально создавались в те дни, когда кассеты были основным носителем данных для ПК). Вы управляли дисками путем печати кода 4 ASCII (CTRL-D
), за которым следовала команда, которую вы хотели выполнить, затем CR
, и она была перехвачена дисковой подсистемой, которая подключилась сама в процедуры печати Apple ROM.
Так, например, строки:
PRINT CHR(4);"CATALOG"
PRINT CHR(4);"IN#6"
выдаст список содержимого диска, а затем повторно инициализирует машину. Это позволило использовать такие хитрости, как защита ваших основных программ, установив в первой строке:
123 REM XIN#6
затем с помощью POKE
вставить символ CTRL-D
в том месте, где был X
. Затем любой, кто пытается перечислить ваш источник, отправит последовательность повторной инициализации через выходные процедуры, где дисковая подсистема обнаружит его.
Часто к таким хитростям мы прибегали, чтобы добиться желаемого поведения.
В настоящее время операционная система более безопасна и предоставляет возможности для перехвата, поскольку вам больше не нужно изменять операционную систему «в полете» или на диске.
Они были вокруг долго раз. Они были у мэйнфреймов (так называемые выходы), и многие мэйнфреймы используют их уже сейчас. Например, бесплатная система управления исходным кодом, поставляемая с z / OS (называемая SCLM), позволяет полностью заменить подсистему безопасности, просто разместив свой собственный код на выходе.