Магические числа: секретные коды, которые программисты скрывают на вашем ПК

Nov 3, 2024
Конфиденциальность и безопасность

С тех пор, как первый человек выписал 5318008 на калькуляторе, ботаники скрывали секретные числа внутри вашего ПК и использовали их для согласования секретных рукопожатий между приложениями и файлами. Сегодня мы кратко рассмотрим некоторые из наиболее интересных примеров.

Что такое магические числа?

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

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

Скомпилированные файлы классов Java начинаются с CAFEBABE

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

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

Все эти примеры могут подпадать под термин Магические числа , потому что им может потребоваться определенное шестнадцатеричное число для правильной работы функции или типа файла… если значение неверно, это не сработает. А когда программист хочет немного развлечься, он может определить эти значения, используя шестнадцатеричные числа, обозначающие что-то на английском языке, иначе известное как hexspeak .

Развлечение с магическими числами: некоторые примечательные примеры

Каждый AppleScript заканчивается на FADEDEAD

Если вы быстро посмотрите в исходный код Linux , вы увидите, что системный вызов _reboot () в Linux требует передачи «волшебной» переменной, равной шестнадцатеричному числу 0xfee1dead. Если что-то попытается вызвать эту функцию, не передав сначала это магическое значение, оно просто вернет ошибку.

GUID (глобальный уникальный идентификатор) для Загрузочный раздел BIOS в Схема разбиения GPT 21686148-6449-6E6F-744E-656564454649, который образует строку ASCII «Hah! IdontNeedEFI», намек на тот факт, что GPT обычно используется в компьютеры, заменившие BIOS на UEFI , но это не обязательно.

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

Более забавные примеры включают:

  • 0xbaaaaaad - используется Журнал сбоев iOS чтобы указать, что журнал представляет собой снимок всей системы.
  • 0xbad22222 - используется журналом сбоев iOS, чтобы указать, что приложение VoIP было убито iOS из-за неправильного поведения.
  • 0x8badf00d - (Ate Bad Food) используется журналами сбоев iOS, чтобы указать, что приложению потребовалось слишком много времени, чтобы что-то сделать, и он был прерван тайм-аутом сторожевого таймера.
  • 0xdeadfa11 - (Dead Fall) используется для ведения журнала сбоев iOS, когда приложение принудительно закрывается пользователем.
  • 0xDEADD00D - используется Android для обозначения прерывания работы виртуальной машины.
  • 0xDEAD10CC (Dead Lock) используется для ведения журнала сбоев iOS, когда приложение блокирует ресурс в фоновом режиме.
  • 0xBAADF00D (Плохая еда), используемый LocalAlloc функция в Windows для отладки.
  • 0xCAFED00D (чувак из кафе), используемый Java-сжатием pack200.
  • 0xCAFEBABE (Cafe babe), используемый Java в качестве идентификатора для скомпилированных файлов классов
  • 0x0D15EA5E (болезнь), используемый Nintendo на Gamecube и Wii чтобы указать, что произошла нормальная загрузка.
  • 0x1BADB002 (1 плохая загрузка), используемый мультизагрузка спецификация как магическое число
  • 0xDEADDEAD - используется Windows для обозначения вручную инициированный сбой отладки , иначе известный как Синий экран смерти.

Это, конечно, не единственные, но лишь краткий список примеров, которые показались забавными. Знаете что-нибудь еще? Напишите нам в комментариях.

Увидеть примеры для себя

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

В качестве дополнительного примера, образы восстановления для телефонов Android, таких как ClockworkMod, начинаются с «ANDROID!» если читать в формате ASCII.

Примечание: ничего не меняйте, пока смотрите по сторонам. Редакторы Hex могут сломать вещи!

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


Конфиденциальность и безопасность - Самые популярные статьи

Как транслировать UFC 240 Холлоуэй против Эдгара в прямом эфире

Конфиденциальность и безопасность Jul 27, 2025

ESPN На этот раз UFC будет в Эдмонтоне, Альберта. В субботу, 27 июля, в 22:00 по восточному врем�..


Как установить дату истечения срока действия при совместном использовании файлов на Google Диске

Конфиденциальность и безопасность Nov 21, 2024

Совместное использование файла с Google Диска - отличный способ предоставить клиентам и подрядчикам �..


Как установить и настроить систему безопасности SimpliSafe

Конфиденциальность и безопасность Apr 4, 2025

НЕКЕШЕРОВАННЫЙ КОНТЕНТ Если вы хотите защитить свой дом от случайных плохих парней, но не хотите �..


Что такое JavaScript и почему его блокирует Gmail?

Конфиденциальность и безопасность Feb 14, 2025

НЕКЕШЕРОВАННЫЙ КОНТЕНТ Возможно, вы видели уведомление об изменении в вашем почтовом ящике. С фев..


Что такое Apple HomeKit?

Конфиденциальность и безопасность Sep 21, 2025

Платформа Apple HomeKit smarthome в последнее время мелькает в новостях, но многие люди не понимают, как ее ис�..


Как предотвратить случайные клики по рекламе в играх для iOS с помощью управляемого доступа

Конфиденциальность и безопасность Apr 23, 2025

Многие игры для iPhone и iPad содержат рекламные баннеры, которые занимают часть экрана. Случайно косни�..


Как оптимизировать Opera для максимальной конфиденциальности

Конфиденциальность и безопасность Jan 30, 2025

НЕКЕШЕРОВАННЫЙ КОНТЕНТ Opera, как и все популярные веб-браузеры, содержит функции, которые жертвуют ..


Взгляните на Spybot Search and Destroy 1.5

Конфиденциальность и безопасность Sep 16, 2025

НЕКЕШЕРОВАННЫЙ КОНТЕНТ Поиск и уничтожение шпионов похоже, в последнее время получает плохую ре..


Категории