24Aug
Од кад је прва особа написала 5318008 на калкулатору, нердници скривају тајне бројеве унутар вашег рачунара и користе их за преговарање тајним руковањем између апликација и датотека.Данас брзо погледамо неке од забавних примера.
Шта су магични бројеви?
Већина програмских језика користи 32-битни интегер тип да представљају одређене типове података иза сцене - интерно се број чува у РАМ-у или користи ЦПУ као 32 и нула, али у изворном коду би се написао уили обичан децимални формат или као хексадецимални формат, који користи бројеве од 0 до 9 и слова А до Ф.
Када оперативни систем или апликација жели одредити врсту датотеке, може се погледати на почетак датотекеза посебан маркер који означава врсту датотеке.На примјер, ПДФ датотека може започети с хек вриједношћу 0к255044462Д312Е33, што је једнако "% ПДФ-1.3" у АСЦИИ формату, или ЗИП датотека почиње са 0к504Б, што је једнако "ПК", који се спушта од првобитног ПКЗип-а.Гледајући овај "потпис", тип датотеке може се лако идентификовати чак и без икаквих других метаподатака.
Помоћу Линука "датотека" се може користити са терминала како би се одредио тип датотеке - заправо, чита чаробне бројеве из датотеке која се зове "магија".
Када апликација желида позове функцију, може пренијети вриједности на ту функцију користећи стандардне типове као што су интегер, који се могу исказати у изворном коду у хексадецималном формату.Ово је нарочито тачно за константе, које су идентификатори дефинисани људским читљивим именима као што су АУТОСАВЕ_ИНТЕРВАЛ, али они мапирају стварне вредности цјелине( или друге врсте).Дакле, уместо програмера који куцају вриједност као што је 60 сваки пут кад позову функцију у изворном коду, могли би користити константу АУТОСАВЕ_ИНТЕРВАЛ за бољу читљивост.(Константе се обично лако препознају јер су написане у свим великим словима).
Сви ови примери могу спадати под појам Магиц Нумберс, јер могу захтевати одређени хексадецимални број да би функција или врста датотеке исправно функционисала. .. ако вредност није тачна неће радити.А када програмер жели мало забавити, они би могли дефинисати ове вриједности помоћу хексадецималних бројева који чине нешто на енглеском, иначе познат као хекспеак.
Забава са магичним бројевима: неки значајни примјери
Ако брзо погледате изворни код Линука, видећете да системски позив _ребоот() на Линук захтијева да се пренесе "магична" варијаблашто је једнако хекадецималном броју 0кфее1деад.Ако је нешто покушало да позове ту функцију, а да прво не пређе ту магичну вредност, то би једноставно вратило грешку.
ГУИД( глобални јединствени идентификатор) за партицију за покретање БИОС-а у схеми партиционирања ГПТ-а је 21686148-6449-6Е6Ф-744Е-656564454649, која формира АСЦИИ низ "Хах! ИдонтНеедЕФИ", алузију на чињеницу да би ГПТ обично биокоји се користи у рачунарима који су заменили БИОС са УЕФИ-ом, али то не мора нужно бити.
Мицрософт фамозно скривао 0к0Б00Б135 у свом Хипер-В виртуелном рачунару који подржава изворни код који је поднет на Линук, а затим су променили вриједност на 0кБ16Б00Б5 и коначно су га пребацили на децимални прије него што је уклоњен из изворног кода у потпуности.
Још забавнији примери укључују:
- 0кбаааааад - користи се за евиденцију судара иОС-а како би указао на то да је дневник стацксхот целог система.
- 0кбад22222 - користи се за евиденцију судара иОС-а како би указао на то да је апликација ВоИП убијена од стране иОС-а, јер се погрешно понижава.
- 0к8бадф00д -( Ате Бад Фоод) који су користили иОС црасх логови како би указали на то да је апликација предуго предузела да би нешто урадила и да је убијена због времена чувара.
- 0кдеадфа11 -( Деад Фалл) који користи иОС црасх логгинг када апликација силом напусти корисник.
- 0кДЕАДД00Д - користи се од стране Андроид-а да означава прекид ВМ-а.
- 0кДЕАД10ЦЦ( Деад Лоцк) који се користи од иОС црасх логовања када апликација закључава ресурс у позадини.
- 0кБААДФ00Д( Бад Фоод) који користи ЛоцалАллоц функција у Виндовсу за дебаговање.
- 0кЦАФЕД00Д( Цафе дуде) који користи Јава'с пацк200 компресија.
- 0кЦАФЕБАБЕ( Цафе бабе) који користи Јава као идентификатор за компилиране датотеке класе
- 0к0Д15ЕА5Е( Дисеасе) које Нинтендо користи на Гамецубе и Вии како би указао на нормалан боот.
- 0к1БАДБ002( 1 лош боот) користи се за мултибоот спецификацију као магични број
- 0кДЕАДДЕАД - користи се од Виндовса да би указао на ручно иницирану грешку дебагирања, иначе позната као Блуе Сцреен оф Деатх.
Ово наравно нису једине, али само кратка листа примера који су изгледали забавно.Знате ли више?Реците нам у коментарима.
Видети примјере за себе
Можете видети више примјера отварањем хек уредника, а затим отварањем било ког броја типова датотека.Постоји пуно бесплатних хекс едиција доступних за Виндовс, ОС Кс или Линук - само се побрините да будете опрезни приликом инсталирања бесплатне верзије да не бисте се инфицирали црапваре-ом или спиваре-ом.
Као додатни пример, слике за опоравак за Андроид телефоне попут ЦлоцкворкМод-а почињу са "АНДРОИД!" Ако се читају у АСЦИИ формату.
Напомена: не мења ништа док гледате около.Хек уредници могу сломити ствари!