Siitä lähtien, kun ensimmäinen henkilö kirjoitti 5318008 laskimeen, nörtit ovat piilottaneet salaisia numeroita tietokoneesi sisällä ja käyttäneet niitä neuvottelemaan salaisia kättelyjä sovellusten ja tiedostojen välillä. Tänään tarkastelemme nopeasti joitain viihdyttävimpiä esimerkkejä.
Mitä taianumerot ovat?
Useimmat ohjelmointikielet käyttävät 32-bittistä kokonaislukutyyppiä edustamaan tietyntyyppisiä tietoja kulissien takana - sisäisesti numero tallennetaan RAM-muistiin tai keskusyksikkö käyttää sitä 32 numerona ja nollana, mutta lähdekoodissa se kirjoitettaisiin joko säännöllinen desimaalimuodossa tai heksadesimaalimuodossa, joka käyttää numeroita 0-9 ja kirjaimia A - F.
Kun käyttöjärjestelmä tai sovellus haluaa määrittää tiedostotyypin, se voi etsiä tiedoston alusta erityistä merkintää, joka merkitsee tiedoston tyyppiä. Esimerkiksi PDF-tiedosto voi alkaa heksadesimaalisella arvolla 0x255044462D312E33, joka on ASCII-muodossa "% PDF-1.3", tai ZIP-tiedoston alkuosa on 0x504B, joka on sama kuin "PK", joka laskeutuu alkuperäisestä PKZip-apuohjelmasta. Tarkastelemalla tätä "allekirjoitusta" tiedostotyyppi voidaan helposti tunnistaa myös ilman muita metatietoja.
Linux-apuohjelmaa "tiedosto" voidaan käyttää päätelaitteesta tiedoston tyypin määrittämiseen - itse asiassa se lukee taikuusluvut tiedostosta kutsutaan "taikaksi".
Kun sovellus haluaa kutsua funktion, se voi välittää arvot tälle toiminnolle käyttämällä vakiotyyppejä, kuten kokonaisluku, joka voidaan ilmaista lähdekoodina heksadesimaalimuodossa. Tämä pätee erityisesti vakioihin, jotka ovat tunnisteita, jotka on määritelty ihmisen luettavilla nimillä, kuten AUTOSAVE_INTERVAL, mutta ne kartoittavat todelliset kokonaisluku (tai muun tyyppiset) arvot. Joten sen sijaan, että ohjelmoija kirjoittaisi 60: n arvoisen arvon joka kerta, kun he kutsuvat lähdekoodin funktiota, he voisivat käyttää vakiota AUTOSAVE_INTERVAL luettavuuden parantamiseksi. (Vakiot tunnistetaan yleensä helposti, koska ne kirjoitetaan suurilla kirjaimilla).
Kaikki nämä esimerkit voivat kuulua termiin Maagiset numerot , koska ne saattavat edellyttää tiettyä heksadesimaalilukua, jotta funktio tai tiedostotyyppi toimisi oikein ... jos arvo ei ole oikea, se ei toimi. Ja kun ohjelmoija haluaa pitää hauskaa, he voivat määritellä nämä arvot käyttämällä heksadesimaalilukuja, jotka sanovat jotain englanniksi, joka tunnetaan myös nimellä heksspeak .
Hauskaa taianumeroilla: Joitakin merkittäviä esimerkkejä
Jos katsot nopeasti Linux-lähdekoodiin , huomaat, että _reboot () -järjestelmäkutsu Linuxissa vaatii "maagisen" muuttujan välittämisen, joka on yhtä suuri kuin heksadesimaaliluku 0xfee1dead. Jos joku yritti soittaa kyseiselle toiminnolle siirtämättä ensin maagista arvoa, se vain palauttaisi virheen.
A: n GUID (globaalisti yksilöivä tunniste) BIOS-käynnistysosio että GPT-osiointijärjestelmä on 21686148-6449-6E6F-744E-656564454649, joka muodostaa ASCII-merkkijonon "Hah! IdontNeedEFI", viittaus siihen, että GPT: tä käytettäisiin normaalisti tietokoneet, jotka korvaavat BIOSin UEFI: llä , mutta sen ei välttämättä tarvitse olla.
Microsoft tunnetusti piilotti 0x0B00B135 Hyper-V-virtuaalikoneessa, joka tukee Linuxille lähetettyä lähdekoodia, sitten he muuttivat arvon arvoksi 0xB16B00B5 ja lopuksi he muutti sen desimaaliksi ennen kuin se poistettiin lähdekoodista kokonaan.
Hauskempia esimerkkejä ovat:
- 0xbaaaaaad - käyttää iOS-kaatumisloki osoittaa, että loki on koko järjestelmän pino.
- 0xbad22222 - käyttää iOS-kaatumislokia osoittamaan, että iOS on tappanut VoIP-sovelluksen väärän toiminnan vuoksi.
- 0x8badf00d - (Ate Bad Food), jota iOS-kaatumislokit käyttävät osoittamaan, että sovellus kesti liian kauan tehdä jotain ja että vahtikoiran aikakatkaisu tappoi sen.
- 0xdeadfa11 - (Dead Fall), jota käytetään iOS-kaatumislokien yhteydessä, kun käyttäjä pakottaa sovelluksen lopettamaan.
- 0xDEADD00D - Android käyttää sitä ilmoittamaan virtuaalikoneen keskeytyksestä.
- 0xDEAD10CC (Dead Lock), jota iOS-kaatumisloki käyttää, kun sovellus lukitsee resurssin taustalle.
- 0xBAADF00D (huono ruoka), jota LocalAlloc -toiminto Windowsin virheenkorjausta varten.
- 0xCAFED00D (Cafe dude), jota käytetään Java's pack200 -pakkauksessa.
- 0xCAFEBABE (Cafe babe), jota Java käyttää käännettyjen luokkatiedostojen tunnisteena
- 0x0D15EA5E (tauti), jota Nintendo käyttää Gamecube ja Wii osoittaa normaalin käynnistyksen.
- 0x1BADB002 (1 huono käynnistys), jota monikäynnistys erittely maagisena numerona
- 0xDEADDEAD - Windows käyttää a manuaalisesti käynnistetty virheenkorjaus kaatuu , joka tunnetaan myös nimellä Blue Screen of Death.
Nämä eivät tietenkään ole ainoita siellä, mutta vain lyhyt luettelo hauskana vaikuttaneista esimerkeistä. Tiedätkö lisää? Kerro meille kommenteissa.
Katso itse esimerkkejä
Näet lisää esimerkkejä avaamalla hex-editorin ja avaamalla sitten minkä tahansa määrän tiedostotyyppejä. Windowsille, OS X: lle tai Linuxille on tarjolla paljon ilmaisia hex-muokkausohjelmia - vain varmista, että asennat ilmaisohjelmia jotta ei saada tartunnan crapware tai spyware.
Lisäesimerkkinä Android-puhelimien, kuten ClockworkModin, palautuskuvat alkavat "ANDROID!" jos luetaan ASCII-muodossa.
Huomautus: älä muuta mitään, kun katsot ympärillesi. Hex-toimittajat voivat rikkoa asioita!