什么是 0xdeadbeef ?

什么是 0xdeadbeef ?

最近在做题的时候,遇到将返回地址覆写为 0xdeadbeef 。疑问着这是什么,这里就简单记录一下。

0xdeadbeef 是一个16进制魔术数字,是一种类似Leet的英文单词转写形式。

起源

Hexspeak最早是程序员用来清晰独特地标记内存数据的一些魔术数字,使用以0-9与A-F构成的16进制数表示一些简单的英文单词。Hexspeak的转写规则为:数字“0”表示字母“O”,“1”表示“I”或“L”,“5”表示“S”,“7”表示“T”,“6”、“9”则各自表示“G”与“g”,其它的数字则可利用画谜Leet的规则来借代字母,例如“defecate”就可用“DEFECA7E”或“DEFEC8”来表示。

更多的魔术数

16进制魔术数在许多处理器操作系统调试工具中都得到应用,且尤常作为调试量使用。

  • 0x0000000FF1CE是微软Office组件产品代码的最后一部分,可于注册表的HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall的键值中寻得。

  • 0x00BAB10C(oo-ba-block)在ZFS的uberblock里使用。

  • 0x1BADB002(“I bad boot”)为多重引导标头。[1]

  • 0x8BADF00D(“ate bad food”)为iOS应用程序崩溃报告中的超时标识符,一般在程序运行、终止与响应时停滞太久时出现。[2]

  • 0xBAADF00D(“bad food”)在微软的LocalAlloc(LMEM_FIXED)函数中使用,用以在已启用调试堆的情况下,标识未初始化的分配堆内存。[3]

  • 0xCAFEBABE(“cafe babe”)在Mach-O格式文件中用于标识通用二进制目标文件,同时也在Java中用于识别Java字节码类文件。[4]

  • 0xCAFED00D(“Cafe Dude”)在Java中用于识别Pack200压缩格式。[5]

  • 0xD15EA5E(“disease”)是任天堂GameCubeWii控制台正常启动的标识符。[6][7]

  • 0xDEADBABE(“Dead Babe”)在IBMJikes研究虚拟机上使用,用于确认主线程的栈是否正常。[8]

  • 0xDEADBEEF(“dead beef”)在嵌入式系统中常用于标示软件崩溃或是死锁,在IBM RS/6000系统、32位PowerPC处理器上的Mac OS系统以及Commodore InternationalAmiga电脑上都有使用;而在SunSolaris操作系统中,这一魔术数则用于标记已释放的内核存储空间。另外,在Alpha处理器上的OpenVMS操作系统中,按下CTRL+T就可以看到DEAD_BEEF。DEC Alpha的存储资源管理控制台亦有一个用于检测内存错误的后台进程,PS识别为“BeefEater waiting on 0xdeadbeef”[9]

  • 0xDEADDEAD(“dead dead”)是蓝屏时显示的错误代码[10] 。由于此代码在基于Windows NT的系统上用于进行内存转储,因而常为驱动开发者所见。0xDEADDEAD还有一个变种──0x000000E2[11],这两者在微软开发者网络中都被称为MANUALLY_INITIATED_CRASH。

  • 0xDEADFA11(“dead fall”)为iOS应用程序崩溃报告中的“强制终止应用程序”的标识符。[2]

  • 0xDEFEC8ED(“defecated”)在OpenSolaris核心文件中使用。[12]

  • 0xE011CFD0在微软Office文件中使用,小端序下表示为D0CF11E0,也即“docfile0”。[13]

  • 0xFACEFEED(“face feed”)在运行Windows NT的Alpha服务器上使用,也即当出现硬件错误时,Alpha的硬件抽象层就会产生这一错误信号。[14]

  • 0xFEE1DEAD(“feel dead”)是Linux重启系统调用中使用的魔术数。[15]

  • C15C:0D06:F00D(cisco dog food)于世界IPv6日在www.cisco.com的IPv6地址中使用。“Dog food”指的就是就是Cisco在IPv6上“eating its own dog food”(也即用自家的设备)的做法。

  • 12
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值