Почетна » како да » Магиц Нумберс Тајни кодови које програмери скривају у вашем ПЦ-у

    Магиц Нумберс Тајни кодови које програмери скривају у вашем ПЦ-у

    Откако је прва особа написала калкулатор 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кДЕАДДЕАД - користи га Виндовс да означи ручно покренуту грешку у отклањању грешака, иначе познату као Плави екран смрти.

    Наравно, нису само они тамо, већ само кратак списак примјера који су се доимали забавним. Знаш ли још? Реците нам у коментарима.

    Видети примере за себе

    Можете видети више примера отварањем хек едитора и отварањем било ког броја типова датотека. За Виндовс, ОС Кс или Линук постоји много бесплатних хек едитора - само се побрините да будете опрезни приликом инсталирања бесплатног софтвера да се не заразите крапвером или шпијунским софтвером.

    Као додатни пример, слике за опоравак за Андроид телефоне као што је ЦлоцкворкМод почињу са „АНДРОИД!“ Ако се читају у АСЦИИ формату..

    Белешка: не мењај ништа док гледаш около. Хек уредници могу сломити ствари!