神奇数字:程序员藏在你电脑里的密码

自从第一个人在计算器上写出5318008以来,书呆子们就一直把秘密号码藏在你的电脑里,并用它们来协商应用程序和文件之间的秘密握手。今天我们就来看看一些更有趣的例子。...

神奇数字:程序员藏在你电脑里的密码

自从第一个人在计算器上写出5318008以来,书呆子们就一直把秘密号码藏在你的电脑里,并用它们来协商应用程序和文件之间的秘密握手。今天我们就来看看一些更有趣的例子。

什么是幻数(magic numbers)?

大多数编程语言使用32位整数类型来表示后台的某些类型的数据—在内部,数字存储在RAM中或由CPU用作32个1和0,但在源代码中,它将以常规十进制格式或十六进制格式写入,后者使用数字0到9以及字母a通过F。

当操作系统或应用程序想要确定文件的类型时,它可以在文件的开头查找表示文件类型的特殊标记。例如,PDF文件可能以十六进制值0x255044462D312E33开始,该十六进制值等于ASCII格式的“%PDF-1.3”;或者ZIP文件可能以0x504B开始,该十六进制值等于从原始PKZip实用程序派生的“PK”。通过查看这个“签名”,即使没有任何其他元数据,也可以很容易地识别文件类型。

Linux实用程序“file”可以从终端上用来确定文件的类型——实际上,它从一个名为“magic”的文件中读取幻数

当应用程序要调用函数时,它可以使用integer等标准类型将值传递给该函数,integer可以用十六进制格式的源代码表示。对于常量尤其如此,常量是用AUTOSAVE\u INTERVAL等可读名称定义的标识符,但它们映射到实际的整数(或其他类型)值。因此,程序员不必每次在源代码中调用函数时都键入60这样的值,而可以使用AUTOSAVE_INTERVAL常量来提高可读性。(常量通常很容易识别,因为它们都是用大写字母写的)。

所有这些示例都可以归入术语幻数,因为它们可能需要特定的十六进制数才能使函数或文件类型正常工作…如果值不正确,则无**常工作。当程序员想找点乐子的时候,他们可能会用十六进制数来定义这些值,这些十六进制数用英语拼写出来,也就是说hexspeak。

神奇数字的乐趣:一些值得注意的例子

如果您快速浏览一下Linux源代码,就会发现Linux上的_reboot()系统调用需要传递一个等于十六进制数0xfee1dead的“magic”变量。如果某个函数试图调用该函数而没有首先传入该魔术值,它只会返回一个错误。

GPT分区方案中BIOS引导分区的GUID(全局唯一标识符)是21686148-6449-6E6F-744E-656564454649,它形成ASCII字符串“Hah!“IdontNeedEFI”,一个暗指GPT通常会在用UEFI代替BIOS的计算机中使用,但不一定非得如此。

微软著名的做法是将0x0B00B135隐藏在他们的Hyper-V虚拟机中,该虚拟机支持提交给Linux的源代码,然后他们将该值更改为0xB16B00B5,最后将其切换为十进制,然后将其从源代码中完全删除。

更多有趣的例子包括:

  • 0xbaaaaad–由iOS崩溃日志记录使用,表示日志是整个系统的堆栈快照。
  • 0xbad22222–由iOS崩溃日志记录使用,用于指示VoIP应用程序由于行为不当而被iOS杀死。
  • 0x8badf00d–(吃坏了的食物)由iOS崩溃日志使用,用于指示应用程序执行某项操作花费的时间太长,并且被看门狗超时终止。
  • 0xdeadfa11–(死区)当用户强制退出应用程序时,iOS崩溃日志记录使用。
  • 0xDEADD00D–由Android用于指示VM中止。
  • 0xDEAD10CC(死锁),当应用程序在后台锁定资源时,iOS崩溃日志记录使用。
  • 0xBAADF00D(坏食物),由Windows中的LocalAlloc函数用于调试。
  • 0xCAFED00D(Cafe dude)由Java的pack200压缩使用。
  • 0xCAFEBABE(Cafe babe)被Java用作已编译类文件的标识符
  • 0x0D15EA5E(疾病),任天堂在Gamecube和Wii上使用,表示正常启动。
  • 0x1BADB002(1个坏引导)被multiboot规范用作幻数
  • 0xDEADDEAD–由Windows用于指示手动启动的调试崩溃,也称为蓝屏死机。

当然,这些并不是唯一的例子,只是一个看似有趣的例子。你还知道吗?在评论中告诉我们。

自己看例子

通过打开一个十六进制编辑器,然后打开任意数量的文件类型,您可以看到更多的示例。有很多免费的十六进制编辑器可用于Windows,OS X,或Linux-只是要确保你在安装免费软件时小心,以免感染垃圾软件或间谍软件。

再举一个例子,像ClockworkMod这样的Android**的恢复图像以“Android!“如果以ASCII格式读取。

神奇数字:程序员藏在你电脑里的密码

注意:当你环顾四周时,不要去改变任何东西。十六进制编辑器可以破坏东西!

  • 发表于 2021-04-11 05:00
  • 阅读 ( 126 )
  • 分类:互联网

你可能感兴趣的文章

度假期间保持小工具安全的7种方法

...虽然建议你不要使用生日,但如果是一个你很容易记住的数字,它至少比普通的好。确保你使用一个强大的代码,对你个人!不要选择1234或1111或任何类似的明显。是的,代码比模式更安全,所以这更可取。指纹可能更好(没人...

  • 发布于 2021-03-14 06:45
  • 阅读 ( 186 )

口袋里的电脑维修工具包:U盘上的引导cd

...,我保存着一个USB闪存驱动器,里面装载着这个星球上最神奇的工具:我的电脑维修工具箱。 ...

  • 发布于 2021-03-16 01:24
  • 阅读 ( 234 )

U盘提高安全性的5种方法

...问题,但有很多方法,其中一个U盘可以帮助您提高您的数字安全。 ...

  • 发布于 2021-03-16 11:33
  • 阅读 ( 201 )

忘了你的iphone备份密码?这是你能做的

...看起来不像其他一些恢复应用程序那么粗略,但它们并不神奇。 ...

  • 发布于 2021-03-21 08:46
  • 阅读 ( 235 )

7个秘密的iphone功能会给你的朋友留下深刻印象

... 这也许并不神奇,但苹果支付比你想象的更安全、更方便。只需将您的卡添加到iPhone的原生钱包应用程序中,您就可以在任何有兼容终端的商店或餐厅付款。 ...

  • 发布于 2021-03-21 13:21
  • 阅读 ( 197 )

如何将神奇宝贝从任天堂3ds转移到任天堂交换机

你可以带着你的神奇宝贝从任天堂3DS到任天堂开关上的神奇宝贝宝剑和盾牌,从神奇宝贝银行转到神奇宝贝之家。下面介绍如何将神奇宝贝转化为神奇宝贝剑和盾。 如何将你的神奇宝贝放入神奇宝贝银行 Pokémon Bank是任天堂3DS...

  • 发布于 2021-04-01 09:29
  • 阅读 ( 236 )

键盘记录者解释说:你需要知道什么

...定类型的文本—例如,它可以查找看起来像信用卡号码的数字序列,并将它们上传到恶意服务器,以便它们被滥用。 键盘记录软件也可能与其他类型的计算机监控软件相结合,因此攻击者可以在您访问银行网站时看到您键入的...

  • 发布于 2021-04-11 12:05
  • 阅读 ( 179 )

为您的新任天堂交换机提供2020年的10款精彩游戏

...堂的帐篷专营权之一-无论是超级马里奥,动物穿越,或神奇宝贝-但有很多不同类型的经验,可在平板电脑上。其中包括大型社交游戏、经典游戏和独创的独立发行版。见鬼,今年我最喜欢的经历之一就是在开关上重新学习象棋...

  • 发布于 2021-04-17 02:49
  • 阅读 ( 188 )

dashlane现在只需单击一下就可以更改所有密码,这真是太神奇了

Dashlane是一个基于订阅的密码管理服务,现在它引入了一个应该成为每一个类似产品标准的功能:只需单击一下就可以更改所有密码,包括启用了双因素身份验证的帐户。该功能将与大约75个主要网站合作,包括亚马逊、苹果、Fa...

  • 发布于 2021-04-28 01:38
  • 阅读 ( 212 )

如何在windows pc上隐藏色情内容

...一个方便的PIN码登录到你的Windows PC。虽然它使键入几个数字而不是20个字符容易得多,但这只是要求有人知道你的登录名。类似地,我不会使用Windows10的动态锁定功能,只要蓝牙配对设备在范围内,它就会打开系统。不,不,不...

  • 发布于 2021-05-12 09:48
  • 阅读 ( 109 )
rna8u7fhtj
rna8u7fhtj

0 篇文章

相关推荐