即使DS卡没有受到光盘诅咒的影响,任天堂还是实施了一些保护措施以保持对游戏发行的控制。
安全机制
让我们看看各个领域的安全机制:
加密系统
NDS主要使用对称加密系统对内存接口和Slot-1卡之间的通信进行加密。 在讨论如何加密之前,我们需要先聊一聊所使用的算法以及如何生成用于加密的密钥。
卡片的"Header"区域包含一个名为Gamecode的值(游戏的唯一标识符),内存接口抓取这个块来生成KEY1并使用它来加密进一步发送到卡片的命令。 KEY1加密基于Blowfish算法。
之后,KEY1与内部时钟和卡带Header的一些其他值混合,生成一个新的密钥,称为KEY2。 KEY2与KEY1的根本区别在于,前者使用随机值所以无法被预测。 KEY2加密使用多个异或与移位操作来混淆数据。
KEY1和KEY2在不同阶段被Slot-1接口用来保护其与卡片的通信。 ARM7 BIOS还使用KEY1对NDS卡进行验证并初始化卡片接口。
DS卡的校验
正如我们上面看到的那样,BIOS包括一些例程,在启动时校验NDS游戏卡。 工作原理如下:
- ARM7 BIOS检索卡带的芯片ID,将其保存在RAM上,然后启用KEY1和KEY2加密。
- 安全区的前2KB以随机顺序复制到RAM中。 该块的前8B存储了一个名为Secure Area ID的字符串,后面的数据包含校验和(CRC16类型)与一些其他元数据。 所有这些都使用KEY1加密,并且Secure Area ID使用了不同参数通过KEY1加密了两次。
- ARM7 BIOS解密了Secure Area ID,并检查解密后的值是否与
encryObj匹配。 如果匹配,则意味着卡片验证通过了第一次测试。 此后,该字符串被销毁,防止算法泄露。 如果验证失败,Secure Area的2KB就会被无意义数据填满,阻止读取卡片的其他部分。 - 第二个测试流程为再次随机检索芯片ID(使用内部时钟做种)。 如果芯片ID的值与存储的第一个芯片ID相匹配,则第二次测试通过。
- 最后,Secure area的其余部分以随机顺序被取走并在RAM中重新构建。 之后就该执行固件了。
如果一切顺利,固件将在RAM中找到该卡所需的可执行文件,从而成功启动游戏。 否则,游戏选择框将显示为灰色。
Download Play 保护
通过Download Play收到的程序必须由任天堂使用RSA签名(只有任天堂知道私钥)进行签名。
该检查由固件执行。
击败
如果你是自制软件使用者,那么你可能会遇到可以运行该软件的选项。 事实是,在发现目前的破解方法之前,黑客们很难绕过任天堂复杂的反盗版系统。
现有的Slot-2
由于 GBA 子系统在没有实施任何保护(除了商标技巧)的情况下仍然可以执行卡带,所以现有的 GBA 闪存卡仍然与 NDS 兼容。 这使得运行GBA自制软件成为可能,如果你不介意错过DS游戏独有的所有新功能,那就可以正常运行。
一如既往,烧录卡带也能运行盗版ROM,但由于任天堂不能改变GBA的保护系统(因为它有可能使现有游戏无法使用),所以只得处理这个问题。
增强的Slot-2

可以运行DS游戏的Slot-2闪存卡示例。 这需要一个Slot-1直通卡来引导。
秘密地深入研究DS BIOS和固件后,最终发现可以把NDS卡的执行重定向到GBA插槽。 尽管NDS卡还没有被破解,但这种方法允许暂时绕过Slot-1卡的安全系统,并在DS模式下执行Slot-2程序。
因此,市面上出现了一种新一代的Slot-2烧录卡。 它们内嵌了ARM9代码,一旦从Slot-1启动就会执行。 引导本身是使用发现的上述方法之一(被称为"passthrough方法")实现的:
- 使用PassMe卡:该方法需要一个真正的Slot-1卡。 PassMe是一种处于Slot-1和真正的游戏卡之间的适配器。 它基本上篡改了从卡片发送到游戏机的header,以欺骗控制台执行Slot-2代码,并在此过程中加载Slot-2卡带。
- 使用WifiMe:该方法需要一台带有兼容Wi-Fi卡的PC。 修改驱动程序,然后可以广播自定义程序让NDS通过Download Play下载。 一旦启动,它就会重定向执行到Slot-2。 这种方法利用了固件不会检查二进制文件特定区域的RSA签名这件事。
- 使用FlashMe:一劳永逸的方案。 通过连接先前的方法并桥接
SL1终端,可以运行一个自制程序,该程序可以在闪存卡存在的情况下覆盖固件以从Slot-2引导。 这个破解还删除了从Download Play引导自制程序时的数字签名检查。
如预期的那样,任天堂推出了包含新固件的新版NDS,修补了这些漏洞。 因此,黑客更多地侧重于寻找BIOS的漏洞(很难修补)。
原生Slot-1

"R4 DS" 是市场上最早出现的 Slot-1 闪卡之一。 紧接着,大量的仿制品泛滥成灾。
著名NDS模拟器"NO$GBA"的开发者Martin Korth随后成功提取了BIOS并逆向工程了Slot-1的安全机制。 这样一来,就可以用更新的工具和文档揭示NDS真实的安全机制。 正如你在本文中看到的那样,加密系统只要没有被破解就可以运行。这是对称加密系统的一个局限,非对称加密系统(例如RSA,永远不会存储私钥)就不会。
无论如何,这导致市场涌入了大量的即插即用Slot-1烧录卡。这些卡可以在任何类型的掌机上原生运行NDS程序。 随着"NoPass"卡的推出,passthrough方法也得到了改进。这些烧录卡可以在没有真正的游戏的情况下加载Slot-2烧录卡。
由于加密系统无法更改除法对现有的所有零售游戏造成影响,任天堂最终输掉了这场战斗。 现在,他们唯一剩下的选择就是走法律途径,就像为前代游戏机所做的一样。
观察
在我看来,与以前的游戏机的自制方法相比,获取和使用烧录卡简单得让我感到惊讶。 在之前的文章中我曾经描述过,用户必须深入迷宫般繁琐的步骤才能运行自制程序或盗版游戏。
就NDS而言,烧录卡就像零售游戏一样销售(尽管它们的营销"风格"有所不同),我想游戏工作室看到用户轻松就能诉诸盗版,情况确实堪忧。

Slot-1闪存卡在某一时段是一个非常活跃的行业,这只是众多产品中的一小部分。
另一件事是,市场上出现的闪存卡品牌的数量也令人惊讶(不计所有仿冒品)。 从技术角度看,烧录卡只不过是SD卡适配器。 然而,随着这个行业的发展,一些制造商采取了额外的步骤来设计更好的软件包(称为"内核"或者"固件"),甚至设计了相当不寻常的硬件。 例如,"N-Card"提供嵌入式存储;而"SuperCard DSTwo"则捆绑了一颗 Ingenic Jz4740 CPU(MIPS-兼容)以360 MHz运行! 自从扩展卡带之后,我再也没有见过这种热情。