在Power Mac G3 ROM中发现一个27年的复活节彩蛋
Hacker News 摘要原标题:Finding a 27-year-old easter egg in the Power Mac G3 ROM
最近,我在研究原版Power Macintosh G3的ROM时,意外发现了一个至今无人记录的复活节彩蛋。故事源于一个懒洋洋的周日,我使用Hex Fiend和Eric Harmon的Mac ROM模板(ROM Fiend)浏览Power Mac G3的ROM资源。这个ROM在1997年至1999年期间用于米色桌面、迷你塔和一体机G3型号。随着我在2025年中旬写下这篇文章,我很难接受Power Mac G3现在已经超过27岁了。哇!
在浏览ROM时,有两个发现引起了我的注意:首先,有一个HPOE类型的资源,其中包含一张JPEG格式的图片,显示出一些显然是参与这些Mac型号开发的人的照片。这一点并不新鲜,Pierre Dandumont在2014年就对此进行了讨论。不过,在他的帖子中,他提到尚未找到在实际机器上显示这张隐藏图片的方法。一些较旧的Mac计算机有秘密的按键组合来显示相似的照片,但显示这一图片的机制却完全成谜。
我发现的第二个线索则显得更为重要:我继续查找ROM中的其他有趣信息,最终发现了ID为43的nitt资源,名为“Native 4.3”。凭借Keith Kaisershot早期的Pippin研究,我很快得出这个资源是PowerPC原生SCSI Manager 4.3代码的结论。然而,吸引我注意的并不是SCSI Manager,而是在数据的最末尾找到了几个有趣的Pascal字符串,它们令我非常好奇,包括“secret ROM image”和“The Team”。“secret ROM image”这段文字特别让我联想到上面的图片。我决定深入了解,看看我是否能找出SCSI Manager为啥包含这些字符串,希望能够解开这个谜团。
经过一些互联网搜索,对于“secret ROM image”这个短语,我发现它在早期的PowerPC Mac中已被用作复活节彩蛋。在那些机器上,只需输入文本,选中它,然后拖到桌面上,就能显示图片。但这种方法在G3上并没有成功。我怀疑有某种类似的方式可以激活这个隐藏图片,但根据我所找到的资料,还没有人对此进行记录。因此,我只能反向工程代码,看看这个字符串是何使用。
我提取了整个ID为43的nitt资源并进行了检查:$ file nitt43 结果为“header for PowerPC PEF executable”。考虑到前12个字节是“Joy!peffpwpc”,我将这个文件输入到Ghidra中,Ghidra立刻识别出它是一个PEF文件,并且能很好地加载它。虽然我对x86和ARM汇编语言较为熟悉,但对PowerPC汇编代码几乎一无所知。幸运的是,Ghidra的反编译器在这个文件上表现出色。然而,有一个问题:它并没有检测到任何针对“secret ROM image”字符串的引用,除了在一个庞大的指针变量列表中。
在思考了一阵后,我意识到Ghidra在查找几个变量的引用方面做得并不好。幸运的是,在初步分析后,再次运行自动分析似乎帮助它找到了更多的引用,包括我感兴趣的所有字符串。这个使用所有这些字符串的函数显然与.Edisk驱动相关,而我以前因为对系统的了解知道它是RAM磁盘驱动。它似乎通过strncmp()函数检查字符串是否等于“secret ROM image”,如果是,则会创建/打开/写入一个名为“The Team”的文件。我清理了这段反编译,更改了一些变量的名称并搞清楚了数据类型。很高兴,由于像PBGetVInfoSync()这样的函数都有很多公开文档,因此我只需告诉Ghidra有关使用的各种Mac工具箱结构即可。这样理解就容易多了!
经过这些步骤后,我没有弄明白如何将32位函数参数格式化为四个字母的代码,以及如何让Ghidra在反编译中显示成ASCII。然而,decompiled代码看起来很合理,以下是它的工作概要:
1. 它寻找名为.Edisk的驱动。
2. 它找到与该驱动关联的磁盘(RAM磁盘)。
3. 它查找与该磁盘关联的卷。
4. 如果该卷名为“secret ROM image”,则:
• 加载HPOE资源ID 1,包含JPEG图像数据。
• 创建一个类型为JPEG的“ The Team”文件。
• 打开文件,将JPEG数据写入,然后关闭它。
然后该代码进行了一些我没有仔细研究的操作。很有趣的是,这段代码显然在搜索名为“secret ROM image”的RAM磁盘,但我不确定如何触发它。如果调用此函数的地方只是一个检查第一个参数是否等于0x3DA(十进制986)的地方,我没有带着米色G3来进行尝试,因此只能在#mac68k的Libera频道提到我所发现的内容。
幸好,有人(^alex)在我给出的提示后在Infinite Mac中进行了尝试。他们很快发现了关键:需要格式化RAM磁盘,并在格式化对话框中输入特殊文本。于是,我找出了我的桌面G3,直接在真实硬件上进行了测试,结果成功了!如果你也想试试,可以通过这个链接运行Infinite Mac,设置一个模拟的米色G3,并使用DingusPPC运行Mac OS 8.1。运行过程中会有个奇怪的错误引发;我故意禁用了它,只需在弹出错误时点击“停止”即可。以下是操作说明:
• 在内存控制面板中启用RAM磁盘。
• 从特定菜单中选择重启。
• 等待桌面再次出现后,选择RAM磁盘图标。
• 从特定菜单中选择清除磁盘。
• 输入“secret ROM image”文本,确保格式与上面完全相同。
• 点击清除。
打开刚格式化的RAM磁盘后,你应该会看到一个名为“The Team”的文件;双击该文件时,SimpleText会打开它。根据各位用户测试的反馈,包括我自己的,听说这个技巧在整个Mac OS 9.0.4都有效,而9.1可能是首次停止工作的版本。根据我所了解,这个秘密直到现在才被曝光。尽管人们早就知道ROM中有这张图片,但没有人弄清楚如何真正激活它。这可能是Steve Jobs在1997年回归Apple后禁止的最后一个复活节彩蛋之一。我在想,他是否曾知道这个秘密?特别感谢^alex,感谢他发现了需要擦除RAM磁盘才能激活复活节彩蛋!如果你看到这篇文章,并且参与过“团队”工作,欢迎与我联系!我很好奇在那个时代的Apple工作的人是否还记得这个小秘密。
原文:https://www.downtowndougbrown.com/2025/06/finding-a-27-year-old-easter-egg-in-the-power-mac-g3-rom/