İlk kişi bir hesap makinesine 5318008 yazdığından beri, inekler PC'nizin içinde gizli numaraları saklıyor ve bunları uygulamalar ile dosyalar arasında gizli anlaşmalar yapmak için kullanıyorlar. Bugün daha eğlenceli örneklerden bazılarına hızlıca göz atacağız.
Sihirli Sayılar nedir?
Çoğu programlama dili, perde arkasındaki belirli veri türlerini temsil etmek için 32 bitlik bir tamsayı türü kullanır - dahili olarak sayı RAM'de saklanır veya CPU tarafından 32 bir ve sıfır olarak kullanılır, ancak kaynak kodda her ikisinde de yazılır. normal ondalık biçim veya 0'dan 9'a kadar sayıları ve A'dan F'ye kadar olan harfleri kullanan onaltılık biçim olarak.
İşletim sistemi veya bir uygulama bir dosyanın türünü belirlemek istediğinde, dosyanın türünü belirten özel bir işaretçi için dosyanın başlangıcına bakabilir. Örneğin, bir PDF dosyası, ASCII biçiminde “% PDF-1.3” e eşit olan 0x255044462D312E33 onaltılık değeriyle başlayabilir veya bir ZIP dosyası, orijinal PKZip yardımcı programından gelen "PK" ye eşit olan 0x504B ile başlayabilir. Bu "imzaya" bakarak, bir dosya türü, başka herhangi bir meta veri olmadan bile kolayca tanımlanabilir.
Linux "dosya" yardımcı programı, bir dosyanın türünü belirlemek için terminalden kullanılabilir - aslında bir dosyadan sihirli sayıları okur "sihir" denir.
Bir uygulama bir işlevi çağırmak istediğinde, kaynak kodunda onaltılık biçimde ifade edilebilen tamsayı gibi standart türleri kullanarak bu işleve değerler iletebilir. Bu, özellikle AUTOSAVE_INTERVAL gibi insan tarafından okunabilir adlarla tanımlanan tanımlayıcılar olan, ancak gerçek tamsayı (veya diğer tür) değerlerle eşlenen sabitler için geçerlidir. Bu nedenle, kaynak kodda işlevi her çağırdığında 60 gibi bir değer yazan bir programcı yerine, daha iyi okunabilirlik için AUTOSAVE_INTERVAL sabitini kullanabilirler. (Sabitler, tümü büyük harflerle yazıldıkları için genellikle kolayca tanınırlar).
Bu örneklerin tümü terimin altına girebilir Sihirli Sayılar , çünkü bir işlevin veya dosya türünün düzgün çalışması için belirli bir onaltılık sayı gerektirebilirler… değer doğru değilse çalışmaz. Ve bir programcı biraz eğlenmek istediğinde, bu değerleri İngilizce bir şeyi heceleyen onaltılık sayılar kullanarak tanımlayabilir. hexspeak .
Sihirli Sayılarla Eğlence: Bazı Önemli Örnekler
Hızlıca bakarsan Linux kaynak koduna , Linux'taki _reboot () sistem çağrısının, 0xfee1dead onaltılık sayıya eşit olan "sihirli" bir değişkenin geçirilmesini gerektirdiğini göreceksiniz. Bir şey, o sihirli değeri önce iletmeden bu işlevi çağırmaya çalıştıysa, yalnızca bir hata döndürür.
Bir GUID (global olarak benzersiz tanımlayıcı) BIOS önyükleme bölümü içinde GPT bölümleme şeması GPT'nin normalde BIOS'u UEFI ile değiştiren bilgisayarlar ama olması gerekmiyor.
Microsoft ünlü saklandı 0x0B00B135 Linux'a gönderilen kaynak kodunu destekleyen Hyper-V sanal makinesinde, değeri 0xB16B00B5 olarak değiştirdiler ve sonunda onlar ondalık sayıya değiştirdi kaynak koddan tamamen kaldırılmadan önce.
Daha eğlenceli örnekler şunları içerir:
- 0xbaaaaaad - kullanan iOS kilitlenme kaydı günlüğün tüm sistemin yığın görüntüsü olduğunu belirtmek için.
- 0xbad22222 - iOS kilitlenme günlüğü tarafından, bir VoIP uygulamasının hatalı çalıştığı için iOS tarafından öldürüldüğünü belirtmek için kullanılır.
- 0x8badf00d - iOS kilitlenme günlükleri tarafından bir uygulamanın bir şey yapmak için çok uzun sürdüğünü ve bekçi köpeği zaman aşımı nedeniyle öldüğünü belirtmek için kullanılan (Ate Bad Food)
- 0xdeadfa11 - (Dead Fall), bir uygulama bir kullanıcı tarafından zorla kapatıldığında iOS kilitlenme günlüğü tarafından kullanılır.
- 0xDEADD00D - Android tarafından bir VM'nin iptal edildiğini belirtmek için kullanılır.
- 0xDEAD10CC (Dead Lock), bir uygulama arka planda bir kaynağı kilitlediğinde iOS kilitlenme günlüğü tarafından kullanılır.
- 0xBAADF00D (Kötü Gıda) tarafından kullanılan LocalAlloc Windows'ta hata ayıklama işlevi.
- Java’nın pack200 sıkıştırması tarafından kullanılan 0xCAFED00D (Cafe dostum).
- Derlenmiş sınıf dosyaları için tanımlayıcı olarak Java tarafından kullanılan 0xCAFEBABE (Cafe babe)
- 0x0D15EA5E (Hastalık), Nintendo tarafından Gamecube ve Wii normal bir önyükleme gerçekleştiğini belirtmek için.
- 0x1BADB002 (1 bozuk önyükleme) tarafından kullanılan çoklu önyükleme sihirli bir sayı olarak belirtim
- 0xDEADDEAD - Windows tarafından bir manuel olarak başlatılan hata ayıklama çökmesi , aksi takdirde Mavi Ölüm Ekranı olarak bilinir.
Elbette sadece bunlar değil, sadece eğlenceli görünen örneklerin kısa bir listesi. Daha fazlasını biliyor musun? Yorumlarda bize anlatın.
Kendiniz İçin Örnekler Görmek
Bir onaltılık düzenleyici açıp ardından istediğiniz sayıda dosya türünü açarak daha fazla örnek görebilirsiniz. Windows, OS X veya Linux için pek çok ücretsiz hex editör mevcuttur - sadece ücretsiz yazılım yüklerken dikkatli olduğunuzdan emin olun kötü amaçlı yazılım veya casus yazılım bulaşmaması için.
Ek bir örnek olarak, ClockworkMod gibi Android telefonlar için kurtarma görüntüleri "ANDROID!" İle başlar. ASCII formatında okunursa.
Not: Etrafa bakarken hiçbir şeyi değiştirmeyin. Hex editörleri bir şeyleri kırabilir!