0xDEADBEEF

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj

0xDEADBEEF – liczba zapisana w systemie szesnastkowym o wartości dziesiętnej 3735928559, którą można przeczytać jak angielskie słowa "dead beef", co można przetłumaczyć jako 'martwa wołowina'.

Dane zapisane w pamięci komputerowej często są reprezentowane szesnastkowo. Większość tak zakodowanych liczb nie wygląda interesująco i nie przyciąga naszego wzroku. Czasami jednak, przydatne jest ustalenie takiej wartości, która będzie łatwo rozpoznawalna (np. przy debugowaniu lub przy korzystaniu z logów), ale nie ma specjalnego zastosowania w programie.

Programiści często używają tej "magicznej liczby", by wykryć powszechne błędy, jak przepełnienie bufora lub niezainicjowane zmienne, podczas używania debugera. Na przykład, kiedy tylko wartość ta pojawi się w zrzucie pamięci, bardzo prawdopodobne, że programista powinien lepiej przyjrzeć się temu miejscu, w którym się pojawiła. Można też umieszczać tę wartość w tych obszarach pamięci, do których program nie powinien mieć dostępu, przez co łatwiej wykryć błędy w wykonaniu kodu.

Przykłady zastosowania[edytuj]

Wiele wersji 32-bitowych procesorów PowerPC w swoich rejestrach ustala wartość 0xDEADBEEF podczas restartowania. Używano tego w pierwotnych systemach operacyjnych Mac OS i w serii IBM RS/6000[1].

W języku Java każdy plik klasy skompilowany do kodu pośredniego (z rozszerzeniem .class) zaczyna się ciągiem 0xCAFEBABE[2].

W systemie operacyjnym Solaris algorytmy detekcji błędów zarządzania pamięcią używają stałych o wartościach: 0xbaddcafe (kiepska kawa)[3], 0xdeadbeef[4] oraz 0xfeedface[5] (nakarm buzię).

Nazwą "dead beef attack" określa się również atak przeciwko kryptografii asymetrycznej poprzez opublikowanie klucza, którego ID jest takie samo jak ID innego klucza. Atak działa w przypadku, gdy ofiara nie weryfikuje kluczy i został zademonstrowany przez utworzenie klucza o ID równym 0xDEADBEEF[6].

Przypisy

  1. DEADBEEF (ang.). catb.org. [dostęp 2016-11-01].
  2. Archive Entity Counts and Class Format (ang.). [dostęp 2016-11-01].
  3. Uninitialized Data: 0xbaddcafe (ang.). [dostęp 2016-11-01].
  4. Freed Buffer Checking: 0xdeadbeef (ang.). [dostęp 2016-11-01].
  5. Redzone: 0xfeedface (ang.). [dostęp 2016-11-01].
  6. dead beef attack (ang.). catb.org. [dostęp 2016-11-01].