Burvju numuri: slepenie kodi, ko programmētāji slēpj jūsu datorā

Satura rādītājs:

Burvju numuri: slepenie kodi, ko programmētāji slēpj jūsu datorā
Burvju numuri: slepenie kodi, ko programmētāji slēpj jūsu datorā

Video: Burvju numuri: slepenie kodi, ko programmētāji slēpj jūsu datorā

Video: Burvju numuri: slepenie kodi, ko programmētāji slēpj jūsu datorā
Video: TPM 2.0 Trusted Platform Module Introduction - YouTube 2024, Aprīlis
Anonim
Kopš pirmā persona kalkulatorā ir izrakstījusi 5318008, nerds slēpj slepenus numurus savā datorā un izmanto tos sarunās par slepenajiem rokasspiedieniem starp lietojumprogrammām un failiem. Šodien mēs ātri skatāmies uz dažiem interesantākajiem piemēriem.
Kopš pirmā persona kalkulatorā ir izrakstījusi 5318008, nerds slēpj slepenus numurus savā datorā un izmanto tos sarunās par slepenajiem rokasspiedieniem starp lietojumprogrammām un failiem. Šodien mēs ātri skatāmies uz dažiem interesantākajiem piemēriem.

Kas ir burvju numuri?

Lielākā daļa programmēšanas valodu izmanto 32 bitu integer tipa, lai pārstāvētu dažus datu veidus aiz ainas - iekšēji šis numurs tiek saglabāts RAM vai CPU izmanto kā 32 un nulles, bet avota kodā tas tiks izrakstīts vai nu standarta decimāldaļskaitli vai kā heksadecimālu formātu, kurā tiek izmantoti skaitļi no 0 līdz 9 un burti no A līdz F.

Ja operētājsistēma vai lietojumprogramma vēlas noteikt faila tipu, faila sākumā tas var apskatīt īpašu marķieri, kas norāda faila tipu. Piemēram, PDF fails var sākties ar hex vērtību 0x255044462D312E33, kas ASCII formātā atbilst "% PDF-1.3", vai ZIP fails sākas ar 0x504B, kas ir vienāds ar "PK", kas nokritās no sākotnējās PKZip lietderības. Aplūkojot šo "parakstu", faila tipu var viegli identificēt pat bez citiem metadatiem.

Linux lietderība "fails" var tikt izmantota no termināļa, lai noteiktu faila tipu - patiesībā tā maina burtus numurus no faila ar nosaukumu "maģija".
Linux lietderība "fails" var tikt izmantota no termināļa, lai noteiktu faila tipu - patiesībā tā maina burtus numurus no faila ar nosaukumu "maģija".

Ja lietojumprogramma vēlas izsaukt funkciju, tā var nodot šīs funkcijas vērtības, izmantojot standarta veidus, piemēram, vesels skaitlis, kuru var izteikt pirmkodā heksadecimālā formātā. Tas jo īpaši attiecas uz konstantēm, kas ir identifikatori, kas definēti ar cilvēka lasāmiem nosaukumiem, piemēram, AUTOSAVE_INTERVAL, bet tie sakrīt ar faktisko veselu skaitļu (vai cita veida) vērtībām. Tātad, tā vietā, lai programmētājs, ievadot vērtību, piemēram, 60 katru reizi, kad viņi izsauktu funkciju avota kodā, viņi varētu izmantot AUTOSAVE_INTERVAL konstantu, lai nodrošinātu labāku lasāmību. (Konstantes parasti ir viegli atpazīstamas, jo tās ir rakstītas visās lielajās burti).

Visi šie piemēri var attiekties uz vārdu Magic Numbers, jo, lai funkcija vai faila tips darbotos pareizi, tiem var būt nepieciešams konkrēts heksadecimālais skaitlis … ja vērtība nav pareiza, tas nedarbosies. Un, kad programmētājs vēlas mazliet jautri, viņi var definēt šīs vērtības, izmantojot heksadecimālos skaitļus, kuri kaut ko izskaidro angļu valodā, citādi saukti par hexspeak.

Jautri ar burvju numuriem: daži ievērojami piemēri

Ja jūs ātri izpētīsiet Linux avota kodu, jūs redzēsiet, ka sistēmas pārlūka reboot () sistēmai Linux ir nepieciešams mainīt "burvju" mainīgo, kas ir vienāds ar heksadecimālo skaitli 0xfee1dead. Ja kaut kas mēģinātu izsaukt šo funkciju, vispirms nepārsniedzot šo burvju vērtību, tas tikai atgriezīs kļūdu.
Ja jūs ātri izpētīsiet Linux avota kodu, jūs redzēsiet, ka sistēmas pārlūka reboot () sistēmai Linux ir nepieciešams mainīt "burvju" mainīgo, kas ir vienāds ar heksadecimālo skaitli 0xfee1dead. Ja kaut kas mēģinātu izsaukt šo funkciju, vispirms nepārsniedzot šo burvju vērtību, tas tikai atgriezīs kļūdu.

GUIT (globāli unikāls identifikators) BIOS sāknēšanas nodalījumam GPT nodalīšanas shēmā ir 21686148-6449-6E6F-744E-656564454649, kas veido ASCII virkni "Hah! IdontNeedEFI", atsauci uz to, ka GPT parasti tiek izmantots datoros, kas aizstāja BIOS ar UEFI, taču tam noteikti nav jābūt.

Microsoft gandrīz slīda 0x0B00B135 to Hyper-V virtuālajā mašīnā, kas atbalsta Linux kodu, un pēc tam tās mainīja vērtību 0xB16B00B5, un visbeidzot tās pārcēlās uz decimālo, pirms tas tika noņemts no avota koda pavisam.

Vairāk jautrāku piemēri ir:

  • 0xbaaaaaad - tiek izmantots iOS crash logging, lai norādītu, ka žurnāls ir visas sistēmas kopējais skats.
  • 0xbad22222 - tiek izmantots iOS crash logging, lai norādītu, ka iOS ir nogalinājusi VoIP lietotni, jo tā ir nepareizi izmantota.
  • 0x8badf00d - (Ate Bad Food), ko izmanto iOS avārijas žurnāli, lai norādītu, ka lietojumprogramma aizņēma pārāk ilgu laiku, lai kaut ko darītu, un tika nogalināts pēc sargsuņa laika.
  • 0xdeadfa11 - (Dead Fall), ko izmanto iOS avārijas žurnālā, kad lietotne ir piespiedusi lietotājuzbrukumu.
  • 0xDEADD00D - izmanto Android, lai norādītu uz VM pārtraukšanu.
  • 0xDEAD10CC (Dead Lock), ko izmanto iOS avārijas žurnālā, kad lietojumprogramma piesaista resursu fonā.
  • 0xBAADF00D (Bad Food), ko Windows LocalAlloc funkcija izmanto, lai veiktu atkļūdošanu.
  • 0xCAFED00D (Cafe dude), ko izmanto Java pack200 saspiešana.
  • 0xCAFEBABE (Cafe babe), ko Java izmanto kā apkopoto klases failu identifikatoru
  • 0x0D15EA5E (slimība), ko Nintendo izmantoja Gamecube un Wii, lai parādītu parasto sāknēšanas darbību.
  • 0x1BADB002 (1 slikta sāknēšana), ko multiboot specifikācijā izmanto kā burvju numuru
  • 0xDEADDEAD - izmanto Windows, lai norādītu manuāli uzsākto atkļūdošanas avāriju, citādi zināma kā Blue Screen of Death.

Protams, tie nav vienīgie, bet tikai īss piemēru saraksts, kas šķita jautri. Vai zināt vēl? Pastāsti mums komentāros.

Redzot piemērus sev

Varat redzēt vairāk piemēru, atverot hex redaktoru un pēc tam atverot jebkuru failu tipu skaitu. Windows, OS X vai Linux ir pieejami daudz brīvās versijas heksadecinātāju redaktori - vienkārši pārliecinieties, ka esat piesardzīgs, instalējot bezmaksas programmatūru, lai neinficētu ar crapware vai spiegprogrammatūru.

Kā pievienotu piemēru atgūšanas attēlus Android tālruņiem, piemēram, ClockworkMod, sākas ar "ANDROID!", Ja lasāmi ASCII formātā.

Image
Image

Piezīme: neko nemainiet, kamēr skatāties apkārt. Hex redaktori var salauzt lietas!

Ieteicams: