sv.phhsnews.com


sv.phhsnews.com / Magic Numbers: De hemliga koderna som programmerare gömmer sig i din dator

Magic Numbers: De hemliga koderna som programmerare gömmer sig i din dator


Ända sedan den första personen skrev ut 5318008 på en räknare har nördar gömt hemliga siffror inuti datorn och använder dem att förhandla hemliga handslag mellan applikationer och filer. Idag tar vi en kort titt på några av de mer underhållande exemplen.

Vad är Magic Numbers?

De flesta programmeringsspråk använder en 32-bitars heltalstyp för att representera vissa typer av data bakom kulisserna - internt lagras numret i RAM eller används av CPU som 32 och nollor, men i källkoden skulle det skrivas ut i antingen vanligt decimalformat eller som hexadecimalt format, som använder siffrorna 0 till 9 och bokstäverna A till och med F.

När operativsystemet eller en applikation vill bestämma typen av en fil kan den se till början av filen för en särskild markör som indikerar filens typ. Exempelvis kan en PDF-fil börja med hex-värdet 0x255044462D312E33, vilket är lika med "% PDF-1.3" i ASCII-format, eller en ZIP-fil börjar med 0x504B, vilket motsvarar "PK", som kommer från det ursprungliga PKZip-verktyget. Genom att titta på denna "signatur" kan en filtyp enkelt identifieras även utan någon annan metadata.

Kompilerade Java Class-filer börjar med CAFEBABE

Linux-verktyget "fil" kan användas från terminalen för att bestämma typen av en fil - det läser faktiskt de magiska talen från en fil som heter "magi".

När en applikation vill ringa en funktion kan den överföra värden till den funktionen med hjälp av standardtyper som heltal, vilket kan uttryckas i källkoden i hexadecimalt format. Detta gäller speciellt för konstanter, vilka är identifierare definierade med läsbara namn som AUTOSAVE_INTERVAL, men de kartlägger till verkliga heltal (eller andra typ) värden. Så istället för att en programmerare skriver ut ett värde som 60 varje gång de kallar funktionen i källkoden, kan de använda AUTOSAVE_INTERVAL-konstanten för bättre läsbarhet. (Konstanter känns vanligtvis lätt igen eftersom de är skrivna i alla stora bokstäver).

Alla dessa exempel kan falla under termen Magic Numbers, eftersom de kan behöva ett specifikt hexadecimalt tal för att en funktion eller filtyp ska fungera korrekt ... om värdet inte är korrekt fungerar det inte. Och när en programmerare vill ha lite kul kan de definiera dessa värden med hjälp av hexadecimala tal som stavar ut någonting på engelska, annars känd som hexspeak.

Roligt med magiska nummer: Några anmärkningsvärda exempel

Varje AppleScript slutar med FADEDEAD

Om du snabbt tittar på Linux-källkoden ser du att systemrapporteringen _reboot () på Linux kräver en "magisk" variabel som ska överföras som motsvarar hexadecimalt tal 0xfee1dead. Om något försökte ringa den funktionen utan att passera det magiska värdet först, skulle det bara returnera ett fel.

GUID (globalt unik identifierare) för en BIOS-bootpartition i GPT-partitioneringsschemat är 21686148-6449-6E6F-744E -656564454649, som utgör ASCII-strängen "Hah! IdontNeedEFI", en hänvisning till det faktum att GPT normalt skulle användas i datorer som ersatte BIOS med UEFI, men det behöver inte nödvändigtvis vara.

Microsoft famously gömde 0x0B00B135 i deras Hyper-V virtuella maskin som stöder källkoden som skickats till Linux, ändrade de värdet till 0xB16B00B5, och slutligen bytte de till decimal innan det togs bort från källkoden helt.

Mer roliga exempel är:

  • 0xbaaaaaad - används av IOS-kraschloggning för att indikera att en logg är en stapelbild av hela systemet.
  • 0xbad22222 - Används av IOS-kraschloggning för att indikera att en VoIP-app har dödats av IOS eftersom den misshandlade.
  • 0x8badf00d - (Ate Bad Food) som används av IOS crash l
  • 0xdeadfa11 - (Dead Fall) som används av IOS-kraschloggning när en app stängs av en användare.
  • 0xDEADD00D - Används för att visa att en ansökan tog för lång tid att göra någonting och dödades av watchdog timeout. av Android för att indikera en VM-avbrott.
  • 0xDEAD10CC (Dead Lock) som används av IOS-kraschloggning när en applikation låser en resurs i bakgrunden.
  • 0xBAADF00D (Bad Food) som används av LocalAlloc-funktionen i Windows för felsökning.
  • 0xCAFED00D (Cafe dude) som används av Java's pack200
  • 0xCAFEBABE (Café babe) som används av Java som identifierare för kompilerade klassfiler
  • 0x0D15EA5E (Disease) som används av Nintendo på Gamecube och Wii för att indikera att en vanlig uppstart hände.
  • 0x1BADB002 (1 dålig boot ) som används av multiboot-specifikationen som ett magiskt nummer
  • 0xDEADDEAD - används av Windows för att indikera en manuellt initierad felsökningsolycka, annars känd som den Blå Dödsskärmen.

Det här är inte de enda där ute , men bara en kort lista med exempel som verkade roliga. Vet du mer? Berätta för oss i kommentarerna.

Se exempel på dig själv

Du kan se fler exempel genom att öppna en hex-redigerare och sedan öppna ett antal filtyper. Det finns gott om freeware hex redaktörer tillgängliga för Windows, OS X eller Linux - bara se till att du är försiktig när du installerar freeware för att inte bli smittad med crapware eller spyware.

Som ett tillägg kan återställningsbilder för Android-telefoner som ClockworkMod Börja med "ANDROID!" om det läses i ASCII-format.

Obs: Gå inte på att ändra något medan du tittar runt. Hex redaktörer kan bryta saker!


Så här tar du bort handskrivna meddelanden från den senaste listan i iOS 10 Meddelanden

Så här tar du bort handskrivna meddelanden från den senaste listan i iOS 10 Meddelanden

När du skickar ett handskriven meddelande i appen Meddelanden på din iPhone, läggs den till i den senaste listan med meddelanden så att du kan använd den igen. Om du inte vill att vissa meddelanden är lagrade i listan eller inte vill se dem alls, finns det ett sätt att ta bort dem. RELATED: Så skickar man handskriven och digital beredskap i IOS 10 Handskriven meddelanden du har skickat visas på fliken Apps i Meddelanden, vilket ger ett snabbt sätt att skicka vanliga meddelanden.

(how-to)

Så här stänger du av Facebook-spårarens positionsspårning (om den är på)

Så här stänger du av Facebook-spårarens positionsspårning (om den är på)

Det verkar som om alla spårar vår plats nu. Inte överraskande kan Facebook Messenger också överföra en betydande mängd information om din platsaktivitet. Om du använder Messenger kan du se till att den inte rapporterar din plats till andra. Vi vet att Google gör det, och om du använder en Apple-enhet måste du aktivera positionsspårning för vissa funktioner och appar att fungera korrekt.

(how-to)