Чарівні цифри: секретні коди, які програмісти приховують у вашому ПК

Nov 3, 2024
Конфіденційність та безпека

З тих пір, як перша людина виписала 5318008 на калькуляторі, ботаніки ховали секретні номери всередині вашого ПК і використовували їх для узгодження таємних рукостискань між програмами та файлами. Сьогодні ми швидко переглянемо деякі із найбільш цікавих прикладів.

Що таке чарівні числа?

Більшість мов програмування використовують 32-розрядний цілочисельний тип для представлення певних типів даних за лаштунками - внутрішньо число зберігається в оперативній пам'яті або використовується ЦП як 32 одиниці та нулі, але у вихідному коді це буде записано в звичайний десятковий формат або як шістнадцятковий формат, який використовує цифри від 0 до 9 і літери від A до F.

Коли операційна система або програма хоче визначити тип файлу, вона може шукати на початку файлу спеціальний маркер, що позначає тип файлу. Наприклад, файл PDF може починатися з шістнадцяткового значення 0x255044462D312E33, що дорівнює "% PDF-1.3" у форматі ASCII, або файл ZIP починається з 0x504B, що дорівнює "PK", що походить від оригінальної утиліти PKZip. Переглядаючи цей «підпис», тип файлу можна легко визначити навіть без будь-яких інших метаданих.

Складені файли Java Class починаються з CAFEBABE

Утиліта Linux «файл» може використовуватися з терміналу для визначення типу файлу - насправді, це зчитує магічні числа з файлу називається "магія".

Коли програма хоче викликати функцію, вона може передавати значення цій функції, використовуючи стандартні типи, такі як ціле число, яке може бути виражене у вихідному коді в шістнадцятковому форматі. Це особливо справедливо для констант, які є ідентифікаторами, визначеними зчитуваними людиною іменами, такими як AUTOSAVE_INTERVAL, але вони відображаються в дійсних цілих числах (або інших типах). Тому замість того, щоб програміст вводив значення, як 60, кожного разу, коли вони викликають функцію у вихідному коді, вони могли б використовувати константу AUTOSAVE_INTERVAL для кращої читабельності. (Константи, як правило, легко розпізнати, оскільки вони пишуться всіма великими літерами).

Усі ці приклади можуть підпадати під цей термін Чарівні числа , оскільки їм може знадобитися певне шістнадцяткове число, щоб функція або тип файлу працювали належним чином ... якщо значення неправильне, воно не буде працювати. І коли програміст хоче трохи повеселитися, вони можуть визначати ці значення за допомогою шістнадцяткових чисел, що дещо пишуть англійською мовою, інакше відомою як шістнадцятковий .

Розваги за допомогою чарівних чисел: деякі помітні приклади

Кожен AppleScript закінчується FADEDEAD

Якщо ви швидко подивитесь у вихідний код Linux , ви побачите, що системний виклик _reboot () в Linux вимагає передачі змінної “magic”, яка дорівнює шістнадцятковому числу 0xfee1dead. Якщо щось намагається викликати цю функцію, не передавши спочатку це магічне значення, це просто поверне помилку.

GUID (глобально унікальний ідентифікатор) для Завантажувальний розділ BIOS в Схема розділення GPT є 21686148-6449-6E6F-744E-656564454649, що утворює рядок ASCII "Ха-ха! IdontNeedEFI", натяк на той факт, що GPT зазвичай використовується в комп’ютери, які замінили BIOS на UEFI , але це не обов'язково повинно бути.

Microsoft чудово сховав 0x0B00B135 тоді у своїй віртуальній машині Hyper-V, що підтримує вихідний код, поданий в Linux, тоді вони змінили значення на 0xB16B00B5 і, нарешті, вони переключив його на десятковий до того, як його взагалі було видалено з вихідного коду.

Більш цікаві приклади включають:

  • 0xbaaaaaad - використовується Реєстрація збоїв iOS щоб вказати, що журнал - це стек всієї системи.
  • 0xbad22222 - використовується журналом аварійного завершення роботи iOS, щоб вказати, що програма VoIP була вбита iOS через неправильну поведінку.
  • 0x8badf00d - (Ate Bad Food), що використовується журналами збоїв iOS, щоб вказати, що програма займала занадто багато часу і була вбита сторожовим тайм-аутом.
  • 0xdeadfa11 - (Мертве падіння), що використовується журналом аварійного завершення роботи iOS, коли користувач примусово закриває програму.
  • 0xDEADD00D - використовується Android для позначення переривання віртуальної машини.
  • 0xDEAD10CC (Dead Lock), що використовується журналом аварійного завершення роботи iOS, коли програма блокує ресурс у фоновому режимі.
  • 0xBAADF00D (погана їжа), що використовується LocalAlloc функція в Windows для налагодження.
  • 0xCAFED00D (Cafe dude), що використовується стисненням Java200 pack200.
  • 0xCAFEBABE (Cafe babe), що використовується Java як ідентифікатор для скомпільованих файлів класів
  • 0x0D15EA5E (Хвороба), яку використовує Nintendo на Gamecube та Wii щоб вказати, що сталося нормальне завантаження.
  • 0x1BADB002 (1 неправильне завантаження), що використовується мультизавантаження специфікація як магічне число
  • 0xDEADDEAD - використовується Windows для позначення a ручний збій налагодження , інакше відомий як Блакитний екран смерті.

Звичайно, це не єдині, а лише короткий перелік прикладів, які видалися цікавими. Знаєте ще? Розкажіть нам у коментарях.

Побачивши приклади для себе

Ви можете побачити більше прикладів, відкривши шістнадцятковий редактор, а потім відкривши будь-яку кількість типів файлів. Існує безліч безкоштовних шестигранних редакторів, доступних для Windows, OS X або Linux - просто будьте обережні, встановлюючи безкоштовну програму щоб не заразитися шпигунським або шпигунським програмним забезпеченням.

Як додатковий приклад, зображення для відновлення для телефонів Android, як ClockworkMod, починаються з "ANDROID!" якщо читається у форматі ASCII.

Примітка: нічого не змінюйте, поки ви озираєтесь. Шестигранні редактори можуть зламати речі!

IPhone Secret Codes!

Samsung Secret Codes To Speed Up Your Phone

Call Of Duty: Black Ops - Hidden Menu Secret And Computer Codes - Mini-Games And Cheats

JavaScript Security: Hide Your Code?

Secret Phone Codes You Didn't Know Existed!

CODES Honor Play - Secret Menu / Hidden Mode / EMUI Tricks


Конфіденційність та безпека - Найпопулярніші статті

Не купуйте для своїх дітей “розумні іграшки”, пов’язані з Інтернетом

Конфіденційність та безпека Nov 17, 2024

НЕЗАГОТОВЛЕНИЙ ЗМІСТ Просто коли ви думали, що розмовляючі іграшки не можуть стати більш надокуч�..


Як відновити заводські налаштування вашого Roku

Конфіденційність та безпека Jun 30, 2025

НЕЗАГОТОВЛЕНИЙ ЗМІСТ Віддаючи свою Року? Незалежно від того, даруєте ви товаришу або продаєте чер..


Як автоматично відкрити найновіший документ у Microsoft Word для Windows

Конфіденційність та безпека Jan 11, 2025

НЕЗАГОТОВЛЕНИЙ ЗМІСТ Якщо ви працюєте над довгим документом у програмі Word, ви, ймовірно, будете ча..


Ризики безпеки розблокування завантажувача вашого телефону Android

Конфіденційність та безпека Jun 20, 2025

НЕЗАГОТОВЛЕНИЙ ЗМІСТ Виродки Android часто розблоковують свої завантажувачі, щоб викорінити свої пр..


Повний перелік порад, підказок та підручників для iPad

Конфіденційність та безпека Mar 17, 2025

НЕЗАГОТОВЛЕНИЙ ЗМІСТ Apple iPad - це дивовижний планшет, і, щоб допомогти вам отримати від нього максим..


Встановіть Microsoft Security Essentials 2.0 Beta на домашньому сервері Windows “Vail”

Конфіденційність та безпека Aug 3, 2025

НЕЗАГОТОВЛЕНИЙ ЗМІСТ Минулого тижня Microsoft оголосила, що MSE 2.0 доступний для публічного бета-тестування. ..


Розшифруйте та скопіюйте DVD на жорсткий диск без копіювання

Конфіденційність та безпека Jul 23, 2025

Ви коли-небудь хотіли робити резервні копії своїх DVD-дисків, але не хотіли возитися із заплутаним програ�..


Створіть піктограму ярлика або гарячу клавішу, щоб увімкнути або вимкнути брандмауер Windows 7 / Vista

Конфіденційність та безпека Oct 21, 2025

НЕЗАГОТОВЛЕНИЙ ЗМІСТ Коли ви вирішуєте проблеми з мережею, одне з перших дій - це вимкнення вбудованого..


Категорії