返回资讯中心
外部精选
软件工程
#开发者实时流

开发者利用EOSHD BACKROM破解在佳能EOS R8上运行《超级马里奥64》

来源标题:Mario 64 on the Canon EOS R8

开发者通过EOSHD BACKROM hack在佳能EOS R8相机上成功运行了《超级马里奥64》。作者在YouTube发布了演示视频,并表示将介绍实现方法、后续计划以及R8的最终性能潜力。

Hacker News 最新kakadu2026/11/10 · 今天23 分钟阅读

以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。

Shield · 无广告 在 YouTube 上观看“EOSHD BACKROM 破解:Canon EOS R8 上运行 Mario 64” 想象一下,在等待你那群大牌演员排练那场情绪饱满的末日场景时,你可以按下 Canon EOS R8 上的删除键,来一段任天堂游戏?各位读者,这一天终于到来了,而且不止如此,你会在本文中发现更多(拿杯茶慢慢看)。我会告诉你我是怎么做到的、接下来要做什么,以及 R8 最终能做到什么程度……

我一直在为相机开发一系列应用,但从没想过拿我的 Canon R8 来试。今年早些时候,我和 BBC 的一位好心人合作,为新闻记者开发了一款人像与风光视频应用,经过内部测试,这又促成了一款 Mac OS 上的 NLE,用来和 Adobe 一较高下,我很快就要发布它了。

iPhone 那边的事情挺有意思,但要说市场已经饱和,那都是轻描淡写了。我的 iPhone 相机应用最终会发布,但我现在大部分时间都花在 Mac OS 视频编辑器、一款 PC 上的 F1 模拟器,以及针对 5D classic 和 5D Mark II 的电影感破解上,后者应该本周就能完成。

日本相机公司在它们的相机商业模式中从未拥抱过应用商店——它们错过了那份备忘录:光是对苹果一家公司来说,应用商店一年(2025 年)就值 1.4 万亿美元营收。这是 2010 年代日本企业界的一点疏忽,由此开启了一个温吞实验的时代,比如早期 Sony 无反相机上那个脑回路清奇的“Play Memories”功能。就连 Flappy Birdware 大师三星,似乎也只是用它们首款全功能 Android APS-C 无反相机 Galaxy NX 探了探脚,随后就迅速抛弃了它。过去十五年里,Canon 用户靠着 Magic Lantern 获得额外功能(最著名的是 raw 视频)玩得挺开心,但任何官方的东西都还得靠固件更新,仿佛现在还是 2006 年。

Canon 相机有一个工厂服务和工程模式。在 5D Mark II 时代,为了启用它,Magic Lantern 制作了一个小型 payload,通过相机官方的固件更新系统运行。这个 payload 的任务是在 ROM 中拨动一个开关,以启用从 Compact Flash 卡引导代码。这就是著名的 autoexec.bin 的起源,它让老款单反上实现了多得多的可能性。

这些相机没有对固件更新(.fir)文件强制进行公钥签名。R5 和 R8 使用的新格式带有 ECDSA P-256 签名,分别覆盖头部/更新程序和固件 payload。成功解密或重新计算校验和是不够的。验证使用公钥,恢复出那个公钥(或单独的加密密钥)并不能给我们签名修改过的更新所需的私钥,而那个私钥是 Canon 的财产。

此时此刻,我无法公开记录或开源我如何在 R8 上运行我的代码。我不走固件更新程序那条路,也不做解密或固件签名。不过,我有充分的理由暂时不披露 BACKROM 的工作原理细节。与其拐弯抹角,我干脆跟你们直说原因:

请记住,现在是极早期——是某件事的开端,是一件需要大量呵护、考量和时间慢慢焐熟的特殊事情——甚至可能与 Canon 展开对话。

如果他们正在读这篇文章,我很乐意开启那场对话。

不起眼的 EOS R8 有一颗 ARM Cortex CPU,外加一堆非常定制化的 bespoke 硬件。要为这台相机写代码,你需要深入理解这颗 CPU、它管理内存的方式,以及相机的整体系统架构。

R8 相比老款单反是一大飞跃。它有受保护内存、多个带控制器的 CPU 核心、一个内存管理器,门口还有一大堆保安,你得跟他们交涉才能办成任何事。

在 Magic Lantern 传奇首席开发者 a1ex 于 2020 年离开后,项目一度停滞,而新相机写代码要复杂得多。

Canon EOS R8 还有自己的编程语言——Canon BASIC。我更喜欢 C。一旦代码能在相机上执行,我就从简单的探索性原型应用(也就是一个带文字的彩色方块)开始扩展,到一个旋转的、带阴影的立方体,以测试软件 3D 渲染。

我的代码从卡上运行。把卡拔出来,相机就恢复正常。

要理解相机如何工作,你需要理解 ROM 和操作系统(DryOS)。要让一个人把二进制应用静态重编译成 C,你得理解大约 48,000 个函数,外加这些函数之间(以及与硬件之间)的关系,而键盘后面那个笨蛋得全搞明白,重编译会产生超过 800 万行 C 代码。对一个专家团队来说,这大约是 6 年的工作。Claude(AI 工具)把这项工作压缩到了一个周末。

很明显,现在已经有人以机器速度在工作,不管你喜欢与否,他们都会比那些仍以人类速度工作的人拥有巨大优势。一个有趣的发现是,OpenAI 的前沿模型(GPT 6 Astra)在逆向工程方面的护栏比 Claude 宽松得多(尽管没后者那么惊艳地好)。如果 Canon 想改进安全性,他们应该认真考虑联系我,因为我在 Astra 上看到了一些相当令人担忧的东西。

回到 R8,在旋转 3D 立方体之后,我用 C 做了若干个更简单的应用原型,并在 Mac 端的 ARM 模拟器上测试,直到在积累了大量研究基础和相机上的实测结果之后,才做到运行 Mario 64。这些其他原型(包括带原版音乐和音效的 DOOM!)很快会在 EOSHD 上展示。

当 Mario 64 首次成功启动并显示出画面时,帧率完全就是幻灯片。我当时大概只有 3-6fps,现在则达到了和原版 N64 版本一样的 30fps 上限。

(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →