lt.phhsnews.com


lt.phhsnews.com / Magiškieji numeriai: slapti kodai, kuriuos programuotojai slepiasi jūsų kompiuteryje

Magiškieji numeriai: slapti kodai, kuriuos programuotojai slepiasi jūsų kompiuteryje


Nuo to laiko, kai pirmasis asmuo išspausdino skaičiuoklę 5318008, "nerds" slepia slaptus numerius jūsų kompiuteryje ir juos naudoja derėtis dėl slaptų rankos tarp programų ir failų. Šiandien mes greitai pažvelgime į kai kuriuos įdomius pavyzdžius.

Kas yra magiškieji numeriai?

Dauguma programavimo kalbų naudoja 32 bitų natūralų skaičių, atstovaujantį tam tikrus duomenų tipus už siužetų - vidinis numeris saugomas RAM atmintyje arba CPU naudojamas kaip 32 taškai ir nuliai, tačiau šaltinio kodu jis būtų išrašomas arba įprastu dešimtainiu formatu, arba kaip šešioliktainis formatas, kuris naudoja skaičiai nuo 0 iki 9 ir raidės nuo A iki F.

Kai operacinė sistema ar programa nori nustatyti failo tipą, gali atrodyti, kad failo pradžioje yra specialus žymeklis, nurodantis failo tipą. Pavyzdžiui, PDF failas gali prasidėti šešiabriaunio verte 0x255044462D312E33, kuris lygus "% PDF-1.3" ASCII formatu, arba ZIP failas prasideda nuo 0x504B, kuris lygus "PK", kuris nusileidžia iš originalios PKZip programos. Žvelgiant į šį "parašą", failo tipas gali būti lengvai identifikuojamas net ir be jokių kitų metaduomenų.

Sudėtiniai Java klasės failai prasideda CAFEBABE

"Linux" įrankis "failas" gali būti naudojamas iš terminalo, siekiant nustatyti tipą failo - iš tikrųjų jis skaito magijos numerius iš failo, vadinamo "magija".

Kai programa nori paskambinti funkcijai, ji gali perduoti į šią funkciją vertes, naudodama standartinius tipus, tokius kaip sveikasis skaičius, kuris gali būti išreikštas šaltinio kodas šešioliktainiu formatu. Tai ypač pasakytina apie konstantas, kuris yra identifikatorius, apibrėžtas žmogaus skaitomuose varduose, pvz., AUTOSAVE_INTERVAL, tačiau jie nurodo faktinius sveikuosius (ar kitokio tipo) vertes. Taigi vietoj to, kad programuotojas įveda tokią vertę kaip 60 kiekvieną kartą, kai jie vadina funkciją šaltinio kodu, jie galėtų naudoti AUTOSAVE_INTERVAL konstantą, kad būtų lengviau juos skaityti. (Konstantai paprastai yra lengvai atpažįstami, nes jie yra parašyti visais didžiosiomis raidėmis). Visi šie pavyzdžiai gali būti priskiriami Magic Numbers, nes gali prireikti tam tikro šešioliktainio skaičiaus, kad funkcija ar failo tipas veiktų tinkamai ... jei vertė neteisinga, ji neveiks. Kai programuotojas nori šiek tiek įdomus, jie gali apibrėžti šias reikšmes naudodamiesi šešioliktainiais skaičiais, kurie paaiškina kažką anglų kalba, kitaip vadinama hexspeak.

Pramogos su magiškais numeriais: kai kurie žinomi pavyzdžiai

Kiekvienas AppleScript baigiasi FADEDEAD

Jei greitai pažvelgsite į "Linux" šaltinio kodą, pamatysite, kad sisteminis "_reboot ()" skambutis "Linux" reikalauja perduoti "magišką" kintamąjį, kuris lygus šešioliktainiam skaičiui 0xfee1dead. Jei kažkas bandė skambinti šia funkcija, pirmiausia nepatekdamas tokios magijos vertės, tai tik grąžina klaidą.

GPT skaidinio schemos GUID (globaliai unikalus identifikatorius) yra 21686148-6449-6E6F-744E -656564454649, kuris sudaro ASCII eilutę "Hah! IdontNeedEFI" - aliuziją į tai, kad GPT paprastai būtų naudojamas kompiuteriuose, kurie pakeitė BIOS su UEFI, bet tai nebūtinai turi būti.

Microsoft smarkiai paslėpė 0x0B00B135 jų "Hyper-V" virtualioje mašinoje, palaikančiame "Linux" pateiktą kodą, jie pakeitė reikšmę į 0xB16B00B5 ir galiausiai pakeitė jį iki dešimtainio, kol jis iš pradžių buvo pašalintas iš šaltinio kodo.

Daugiau įdomių pavyzdžių yra:

0xbaaaaaad - naudojama "iOS" avarijų žurnale, kad būtų rodoma, kad žurnalas yra visos sistemos stackshot'as.

  • 0xbad22222 - naudojama "iOS" avarijų žurnale, kad būtų nurodyta, kad "iOS" buvo nužudyta "VoIP" programa, nes ji buvo netinkamai paveikta.
  • 0x8badf00d - (Ate Bad Food), naudojamas "iOS" avarijos l ogs, kad nurodant, kad programa užtruko per daug laiko, kad būtų sulaikyta laiko kontrolė.
  • 0xdeadfa11 - (Dead Fall), naudojamas "iOS" įvykių žurnale, kai vartotojas paleidžia programą.
  • 0xDEADD00D - naudojamas "Android", kad būtų rodomas VM nutraukimas.
  • 0xBAADF00D (blogas maistas), naudojamas "LocalAlloc" funkcijoje "Windows", skirtos derinti.
  • 0xCAFED00D ("Cafe dude"), naudojamas "Java pack200"
  • 0xCAFEBABE ("Cafe babe"), naudojamas "Java" kaip kompiliuotų klasių rinkmenų identifikatorius
  • 0x0D15EA5E (ligos), naudojamas "Nintendo" žaidime "Gamecube" ir "Wii", norint parodyti įprastą įkėlimą.
  • 0x1BADB002 (1 blogas įkrovimas ), kuris naudojamas daugybinio įkėlimo specifikacijoje kaip magiškas skaičius
  • 0xDEADDEAD - naudojamas "Windows", siekiant parodyti rankiniu būdu pradėtą ​​derinimo triktį, kitaip vadinamą mėlynu mirties ekranu.
  • Tai nėra vieninteliai iš jų, žinoma , bet tik trumpas pavyzdžių sąrašas, atrodantis įdomus. Ar žinai daugiau? Pasakyk mums savo pastabose.

Patirties pavyzdžių peržiūra

Galite pamatyti daugiau pavyzdžių, atidarę hex redaktorių ir atidarę bet kokį failų tipų skaičių. "Windows", "OS X" arba "Linux" yra daug nemokamų hex redaktorių, tik įsitikinkite, kad esate atsargūs, kai įdiekite nemokamą programinę įrangą, kad nebūtų užkoduota šnipinėjimo ar šnipinėjimo programų.

Kaip papildomą pavyzdį atkūrimo vaizdai "Android" telefonams, pavyzdžiui, "ClockworkMod" pradėkite nuo "ANDROID!", jei skaitoma ASCII formatu.

Pastaba:

nieko nekeisdami, kai žiūrite. Hex redaktoriai gali sugadinti dalykus!


Kaip atimti datą Excel

Kaip atimti datą Excel

Jei turite "Excel" lapą su daugybe datų, greičiausiai galbūt reikės apskaičiuoti skirtumą tarp kai kurių tų datų. Galbūt norėtumėte pamatyti, kiek mėnesių jums prireikė sumokėti skolą ar kiek dienų jums prireikė prarasti tam tikrą svorį?Skaičiuojant skirtumą tarp "Excel" datų yra lengva, tačiau gali būti sudėtinga priklausomai nuo to, kaip norite skaičiuoti tam tikras vertes. Pavyzdžiui, jei norėtumėte

(How-to)

Kodėl mano MP3 failai yra tokio paties dydžio, netgi pakeičiant bitų greitį naudojant

Kodėl mano MP3 failai yra tokio paties dydžio, netgi pakeičiant bitų greitį naudojant "FFmpeg"?

Jei esate naujas procesas konvertuoti garso failus, tada daugelis detalių ir kaip jie veikia gali būti šiek tiek painu, kai gaunate netikėtų rezultatų. Taigi, ką jūs darote, kad išspręstumėte problemą? Šiandienos "SuperUser" užklausų ir atsakymų dalis atsako į painiavą skaitytojo klausimą. Šiandienos klausimų ir atsakymų sesija ateina pas mus "SuperUser" - "Stack Exchange", bendruomenės pagrįstos Q & A svetainių grupės, padalijimas.

(how-to)