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. Prawdopodobieństwo, że 32-bitowa liczba całkowita przyjmie tę właśnie wartość, jest jak jeden do 232 = 4 294 967 296.

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.

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.

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

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

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.