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