0xDEADBEEF
Liczba 0xDEADBEEF to wartość zapisana w systemie szesnastkowym, która odpowiada liczbie dziesiętnej 3735928559. Można ją odczytać jako angielskie słowa „dead beef”, co w tłumaczeniu oznacza 'martwa wołowina’.
Dane przechowywane w pamięci komputera często mają formę szesnastkową. Większość takich wartości nie jest zbyt interesująca i nie zwraca na siebie uwagi. Czasami jednak przydatne jest określenie wartości, która będzie łatwo rozpoznawalna (np. w kontekście debugowania lub analizowania logów), mimo że nie ma specjalnego zastosowania w programie.
Programiści często sięgają po tę „magiczną liczbę”, aby identyfikować typowe błędy, takie jak przepełnienie bufora czy niezainicjowane zmienne, podczas pracy z debuggerem. Na przykład, gdy ta wartość pojawia się w zrzucie pamięci, istnieje duże prawdopodobieństwo, że programista powinien dokładniej zbadać to miejsce. Można również umieszczać tę wartość w obszarach pamięci, do których program nie powinien mieć dostępu, co ułatwia wykrywanie błędów w kodzie.
Przykłady zastosowania
Wiele 32-bitowych procesorów PowerPC ustawia wartość 0xDEADBEEF w swoich rejestrach podczas restartu. Było to wykorzystywane w pierwotnych systemach operacyjnych Mac OS oraz w serii IBM RS/6000.
W języku Java każdy plik klasy skompilowany do kodu pośredniego (z rozszerzeniem .class) zaczyna się od ciągu 0xCAFEBABE.
W systemie operacyjnym Solaris, algorytmy detekcji błędów zarządzania pamięcią korzystają z wartości stałych takich jak:
- 0xBADDCAFE (kiepska kawa),
- 0xDEADBEEF,
- 0xFEEDFACE (nakarm buzię).
Nazwę „dead beef attack” stosuje się do ataku na kryptografię asymetryczną, polegającego na opublikowaniu klucza, którego ID jest identyczne jak ID innego klucza. Atak ten działa w sytuacji, gdy ofiara nie weryfikuje kluczy i został zaprezentowany poprzez stworzenie klucza o ID równym 0xDEADBEEF.