Гак - це функціональність, що надається користувачем цього програмного забезпечення для власного коду за певних обставин. Цей код може збільшити або замінити поточний код.
У старі часи, коли комп’ютери були справді особистими, а віруси були менш поширеними (я говорю 80-ті), це було так само просто, як виправлення самого програмного забезпечення операційної системи, щоб зателефонувати на ваш код. Я пам’ятаю, як писав розширення на мову Applesoft BASIC на Apple II, яке просто підключило мій код до інтерпретатора BASIC, ввівши дзвінок до мого коду до того, як будь-яка з рядків була оброблена.
Деякі комп'ютери мали заздалегідь розроблені гачки, одним із прикладів є потік вводу-виводу в Apple II. Він використовував такий гачок, щоб ввести всю підсистему диска (ПЗУ Apple II були спочатку побудовані в ті часи, коли касети були основним носієм для зберігання ПК). Ви керували дисками, надрукувавши ASCII код 4 ( CTRL-D
), за яким послідувала команда, яку ви хотіли виконати потім a CR
, і її перехопила дискова підсистема, яка підключилася до програм друку Apple ROM.
Так, наприклад, рядки:
PRINT CHR(4);"CATALOG"
PRINT CHR(4);"IN#6"
перерахував би вміст диска, а потім повторно ініціалізував машину. Це дозволило отримати такі хитрощі, як захист ваших програм BASIC, встановивши перший рядок як:
123 REM XIN#6
потім використовуючи POKE
для вставки CTRL-D
символу там, де X
був. Потім кожен, хто намагається скласти список вашого джерела, надішле послідовність повторної ініціалізації через вихідні процедури, де дискова підсистема виявить це.
Це часто таку хитрість, до якої нам довелося вдатися, щоб отримати таку поведінку.
Сьогодні, якщо операційна система є більш захищеною, вона забезпечує засоби для гачків, оскільки ви більше не повинні змінювати операційну систему "під час польоту" або на диску.
Вони довгий час існували . Мейнфрейми мали їх (звані виходами), і багато програмного забезпечення мейнфреймів використовують ці засоби навіть зараз. Наприклад, безкоштовна система управління вихідним кодом, яка постачається з z / OS (називається SCLM), дозволяє повністю замінити підсистему безпеки, просто помістивши власний код у вихід.