Тайяки
- 1 year ago
- 0
- 0
Hexspeak , как и Leet , является новой необычной формой записи слов английского языка .
Hexspeak был создан программистами, которые желали использовать магические числа , целочисленные константы для однозначной идентификации ресурса или данных. Используя шестнадцатеричную систему , состоящую из десятичных цифр от 0 до 9 и латинских букв от A до F (0123456789ABCDEF), стало возможно создавать небольшие слова, в которых цифра «0» обозначает букву «O», «1» обозначает буквы «I» или «L», «5» обозначает «S», «7» обозначает «T», и «6» или «9» обозначает «G» или «g» соответственно. Такие цифры, как 2 или 8 могут использоваться так же, как они используются в Leet или ребусах ; например, слово «defecate» может быть представлено в виде DEFECA7E или же DEFEC8.
Значительное количество процессоров , операционных систем и отладчиков используют магические числа, особенно в качестве .
0x
8BADF00D
(«ate bad food» с
англ.
—
«ел плохую пищу») используется
Apple
в отчётах об ошибках
iOS
для обозначения ситуации, когда приложение слишком долго либо запускается, либо завершается, либо отвечает на события системы.
0x
1BADB002
(«I bad boot» с
англ.
—
«плохая загрузка») — магическое число заголовка мультизагрузчика.
0x
BAADF00D
(«bad food» с
англ.
—
«плохая еда») используется LocalAlloc(LMEM_FIXED) компании
Microsoft
для обозначения не инициализированной области памяти при использовании debug heap.
0x
BEADFACE
(«bead face», «face bead» с
англ.
—
«укрась лицо бисером») — шаблон, заполняющий всю неиспользуемую память в симуляторе микроконтроллера Motorola 68HCS12DP256, SimHC12.
0x
CAFEBABE
(«cafe babe» с
англ.
—
«девочка из кафе») используется
Mach-O
для указания на
объектные файлы, а также в языке
Java
для идентификации файлов классов
Java bytecode
.
0x
D15EA5E
(«disease» с
англ.
—
«болезнь») флаг, указывающий на нормальную загрузку на
Nintendo GameCube
и
Wii
консолях.
0x
DEADBABE
(«Dead Babe» с
англ.
—
«мёртвая девочка») используется IBM
для контроля стека главного потока
0x
DEADBEEF
(«dead beef» с
англ.
—
«мёртвая говядина») часто используется для обозначения аварийного завершения программы или зависания во встраиваемых устройствах. Используется в системах IBM
RS/6000
,
Mac OS
на 32-битных процессорах
PowerPC
и
Commodore
Amiga
в качестве магического числа для отладки. В
Solaris
оно обозначает освобождённую память ядра. В
OpenVMS
на процессорах Alpha можно увидеть DEAD_BEEF, нажав клавиши CTRL+T. В консоли у DEC Alpha SRM есть фоновый процесс, который следит за ошибками в памяти, определяемый в PS как «BeefEater waiting on
0x
DEADBEEF
».
.
0x
DEADDEAD
(«dead dead» с
англ.
—
«мёртвый-мёртвый») отладочный код, отображаемый при вызове
Синего Экрана Смерти
при помощи отладчика ядра или используя специальную комбинацию клавиш.
Этим обычно пользуются разработчики драйверов для получения дампа памяти в операционных системах на базе Windows NT. Альтернативным кодом
0x
DEADDEAD
является
0x
000000E2
,
также называемый MANUALLY_INITIATED_CRASH на Microsoft Developer Network.
0x
DEADFA11
(«dead fall» с
англ.
—
«смертельное падение») используется
Apple
в
iOS
при падениях системы, когда пользователь вынужден закрыть приложение.
0x
DEFEC8ED
(«defecated» с
англ.
—
«испражненный») — магическое число для
дампов памяти
OpenSolaris
.
0x
FACEFEED
(«face feed» с
англ.
—
«корм для лица») Используется в серверах Alpha, работающих под управлением Windows NT. Alpha
(HAL) генерирует эту ошибку, когда встречает аппаратный сбой.
0x
FEE1DEAD
(«feel dead» с
англ.
—
«чувствовать себя мёртвым») используется как магическое число в
Linux
в системном вызове reboot.
0x
FEEDCAFE
(«feed cafe» с
англ.
—
«корми кафе») используется вместе с
0x
DEADBEEF
аналогично
«foo» и «bar»
.
0x
E011CFD0
— магическое число для файлов Microsoft Office. В
little-endian
оно читается как D0CF11E0, «docfile0».
0x
FACE8D
—
цвет кожи
в формате
RGB
.
0x
FEEE
(«free» с
англ.
—
«свободен») используется Debug-конфигурациями некоторых компиляторов (напр., MSVC) для маркировки указателей на освобождённую память.
0x
CCCCCCCC
— также используется Debug-конфигурациями компиляторов для первичной инициализации указателей на объекты.
Еще варианты: BAD, CAB, BED, FED, CAD, C0DE, DEAF, FACE, FACADE, ACE, DAB, FED0RA, FEED, AD0BE, BEE, FADE, BAFFED, BA0BAB
Указанные выше слова — всего лишь небольшая часть из сотен слов английского языка, содержащих только буквы «a», «b», «c», «d», «e», «f», «o», «i» и «s», поэтому программистам легко создавать собственные, такие как 0xD15EA5ED или 0xBED51DE5. Можно заметить несколько шаблонов в классических hexspeak константах, перечисленных выше. Все эти константы используют всю ширину машинного слова (в данном случае 32-битного), и ни одно из них не начинается с 1 или 5. Такой выбор означает, что если слово интерпретировать целое число в десятичной записи, то это обычно большое отрицательное целое. Используемое компанией Microsoft значение 0xBAADF00D — также хорошее значение для отлова доступа к не проинициализированной памяти по другой причине — окончание слова «1», «5», «b», «d» или «f» создаёт нечётное число, которое генерирует на многих процессорных архитектурах, если константа интерпретирована как значение указателя.