24Aug

Magic-numerot: salaiset koodit, jotka ohjelmoijat piiloutuvat tietokoneellasi

click fraud protection

Koska ensimmäinen henkilö on kirjoittanut 5318008 laskimessa, nerot ovat piilottaneet salaisia ​​numeroita tietokoneen sisällä ja käyttävät niitä neuvottelemaan salaisista kättelyistä sovellusten ja tiedostojen välillä.Tänään vietämme nopeasti joitain viihdyttäviä esimerkkejä.

Mitä ovat Magic-numerot?

Useimmat ohjelmointikielet käyttävät 32-bittistä kokonaislukutyyppiä edustamaan tietyntyyppisiä tietoja kulissien takana - sisäisesti numero tallennetaan RAM: iin tai CPU käyttää niitä 32: nä ja nollia, mutta lähdekoodissa se kirjoitetaanjoko säännöllinen desimaalimuoto tai heksadesimaalimuoto, joka käyttää numeroita 0 - 9 ja kirjaimia A - F.

Kun käyttöjärjestelmä tai sovellus haluaa määrittää tiedoston tyypin, se voi etsiä tiedoston alkuunerikoismerkintä, joka merkitsee tiedoston tyyppiä.Esimerkiksi PDF-tiedosto saattaa alkaa hex-arvolla 0x255044462D312E33, joka on "% PDF-1.3" ASCII-muodossa tai ZIP-tiedosto alkaa 0x504B, joka vastaa PK: n alkuperäisestä PKZip-apuohjelmasta laskettua PK-arvoa. Tarkastelemalla tätä "allekirjoitusta" tiedostotyyppi voidaan tunnistaa helposti ilman muita metatietoja.

instagram viewer

Käännetty Java Class -tiedostot alkavat CAFEBABE

: llä Linux-apuohjelman "tiedostosta" voidaan käyttää päätelaitteesta määrittämään tiedoston tyyppi - itse asiassa se lukee taikuusnumerot tiedostosta "magic".

Kun sovellus haluaakutsua toiminnon, se voi siirtää arvot tähän funktioon käyttäen vakiotyyppejä kuten kokonaisluku, joka voidaan ilmaista lähdekoodissa heksadesimaalimuodossa. Tämä pätee erityisesti vakiovälineisiin, jotka ovat tunnistimia, jotka on määritetty ihmisillä luettavia nimityksiä, kuten AUTOSAVE_INTERVAL, mutta ne kartoittavat todellisia kokonaislukuja( tai muita tyyppejä).Joten sen sijaan, että ohjelmoija kirjoittaisi 60: n arvon aina, kun he kutsuvat toiminnon lähdekoodissa, he voivat käyttää AUTOSAVE_INTERVAL-vakiota paremman luettavuuden vuoksi.(Vakiot ovat yleensä helposti tunnistettavissa, koska ne on kirjoitettu kaikissa isoilla kirjaimilla).

Kaikki nämä esimerkit voivat olla Magic-numeron termi, koska ne saattavat vaatia tiettyä heksadesimaalilukuja, jotta funktio tai tiedostotyyppi toimisi kunnolla. .. jos arvo ei ole oikea, se ei toimi. Ja kun ohjelmoija haluaa olla hauskaa, he voivat määritellä nämä arvot käyttäen heksadesimaalilukuja, jotka ilmaisevat jotain englanniksi, toisin kutsutaan hexspeakiksi.

Fun With Magic -numerot: Jotkut merkittävät esimerkit

Jokainen AppleScript päättyy FADEDEAD

: llä Jos tarkastelet nopeasti Linux-lähdekoodista, huomataan, että _reboot() -järjestelmä vaatii Linuxia, edellyttää "magic" -muuttujan hyväksymistäjoka on heksadesimaaliluku 0xfee1dead. Jos jotain yritti kutsua tätä toimintoa kulkematta tuohon taikaarvoon, se vain palaisi virheen.

GPT-osiointijärjestelmän BIOS-käynnistysosion GUID( globally unique identifier) ​​on 21686148-6449-6E6F-744E-656564454649, joka muodostaa ASCII-merkkijonon "Hah! IdontNeedEFI", viittaus siihen, että GPT olisi tavallisestijoita käytetään tietokoneissa, jotka korvasivat BIOSin UEFI: n kanssa, mutta sen ei välttämättä tarvitse olla.

Microsoft famously hidden 0x0B00B135 niiden Hyper-V virtuaalilaitteelle, joka tukee Linux-lähdekoodia, sitten ne muuttivat arvon 0xB16B00B5, ja lopulta ne siirtyivät desimaalilukuun ennen kuin se poistettiin lähdekoodista kokonaan.

Lisää hauskoja esimerkkejä ovat:

  • 0xbaaaaaad - iOS: n kaatumiskirjauksen avulla kerrotaan, että loki on koko järjestelmän stackshot.
  • 0xbad22222 - jota iOS: n kaatumiskirjaus on osoittanut, että iOS on tappanut VoIP-sovelluksen, koska se on väärin.
  • 0x8badf00d -( Ate Bad Food), jota iOS: n kaatumislokit osoittavat, että sovellus kesti liian kauan tehdä jotain ja se surmasivat valvonta-aikakatkaisun.
  • 0xdeadfa11 -( Dead Fall), jota iOS: n kaatumiskirjaus käyttää, kun käyttäjä on lopettanut sovelluksen.
  • 0xDEADD00D - jota Android käyttää VM: n keskeyttämiseen.
  • 0xDEAD10CC( Dead Lock), jota iOS: n kaatumiskirjaus käyttää, kun sovellus lukitsee resurssin taustalla.
  • 0xBAADF00D( Bad Food), jota LocalAlloc-toiminto käyttää Windowsissa virheenkorjausta varten.
  • 0xCAFED00D( Cafe dude) jota Java paketti pakkaus200.
  • 0xCAFEBABE( Cafe babe), jota Java käytti Nintendon käyttämässä
  • 0x0D15EA5E: n( taudissa) tunnisteena Gamecubessa ja Wii: ssä, jotta tavallinen käynnistys tapahtui.
  • 0x1BADB002( 1 huono käynnistys), jota multiboot-määritys käyttää maagisena numerona
  • 0xDEADDEAD - jota Windows käyttää ilmaisemaan manuaalisesti käynnistetyn virheenkorjausonnettomuuden, joka tunnetaan nimellä Death of Blue Screen.

Nämä eivät ole ainoita, tietenkin, mutta vain lyhyt luettelo esimerkkeistä, jotka näyttävät hausilta. Tietääkö enemmän? Kerro meille kommentit.

Esimerkkejä itsestään

Voit nähdä lisää esimerkkejä avaamalla hex-editorin ja avaamalla minkä tahansa määrän tiedostotyyppejä.Windows-, OS X- tai Linux-versioissa on paljon freeware-heijastinohjelmistoja - vain varmista, että asennat freewareä, jotta et saa tartuntaa crapware- tai vakoiluohjelmien avulla.

Lisätty esimerkki, esimerkiksi ClockworkModin Android-puhelimissa olevat talteenottokuvat alkavat "ANDROID!", Jos niitä luetaan ASCII-muodossa.

Huomaa: ei muuta mitään, kun katsot ympärilläsi. Hex-editorit voivat rikkoa asioita!