« NDS架构 (index)

NDS架构

Chapter 9: 反盗版和自制游戏


目录

  1. 安全机制
    1. 加密系统
    2. DS卡的校验
    3. Download Play 保护
  2. 击败
    1. 现有的Slot-2
    2. 增强的Slot-2
    3. 原生Slot-1
    4. 观察

即使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游戏卡。 工作原理如下:

  1. ARM7 BIOS检索卡带的芯片ID,将其保存在RAM上,然后启用KEY1和KEY2加密。
  2. 安全区的前2KB以随机顺序复制到RAM中。 该块的前8B存储了一个名为Secure Area ID的字符串,后面的数据包含校验和(CRC16类型)与一些其他元数据。 所有这些都使用KEY1加密,并且Secure Area ID使用了不同参数通过KEY1加密了两次。
  3. ARM7 BIOS解密了Secure Area ID,并检查解密后的值是否与encryObj匹配。 如果匹配,则意味着卡片验证通过了第一次测试。 此后,该字符串被销毁,防止算法泄露。 如果验证失败,Secure Area的2KB就会被无意义数据填满,阻止读取卡片的其他部分。
  4. 第二个测试流程为再次随机检索芯片ID(使用内部时钟做种)。 如果芯片ID的值与存储的第一个芯片ID相匹配,则第二次测试通过
  5. 最后,Secure area的其余部分以随机顺序被取走并在RAM中重新构建。 之后就该执行固件了。

如果一切顺利,固件将在RAM中找到该卡所需的可执行文件,从而成功启动游戏。 否则,游戏选择框将显示为灰色。

Download Play 保护

通过Download Play收到的程序必须由任天堂使用RSA签名(只有任天堂知道私钥)进行签名。

该检查由固件执行。

击败

如果你是自制软件使用者,那么你可能会遇到可以运行该软件的选项。 事实是,在发现目前的破解方法之前,黑客们很难绕过任天堂复杂的反盗版系统。

现有的Slot-2

由于 GBA 子系统在没有实施任何保护(除了商标技巧)的情况下仍然可以执行卡带,所以现有的 GBA 闪存卡仍然与 NDS 兼容。 这使得运行GBA自制软件成为可能,如果你不介意错过DS游戏独有的所有新功能,那就可以正常运行。

一如既往,烧录卡带也能运行盗版ROM,但由于任天堂不能改变GBA的保护系统(因为它有可能使现有游戏无法使用),所以只得处理这个问题。

增强的Slot-2

Image
可以运行DS游戏的Slot-2闪存卡示例。 这需要一个Slot-1直通卡来引导。

秘密地深入研究DS BIOS和固件后,最终发现可以把NDS卡的执行重定向到GBA插槽。 尽管NDS卡还没有被破解,但这种方法允许暂时绕过Slot-1卡的安全系统,并在DS模式下执行Slot-2程序

因此,市面上出现了一种新一代的Slot-2烧录卡。 它们内嵌了ARM9代码,一旦从Slot-1启动就会执行。 引导本身是使用发现的上述方法之一(被称为"passthrough方法")实现的:

如预期的那样,任天堂推出了包含新固件的新版NDS,修补了这些漏洞。 因此,黑客更多地侧重于寻找BIOS的漏洞(很难修补)。

原生Slot-1

Image
"R4 DS" 是市场上最早出现的 Slot-1 闪卡之一。 紧接着,大量的仿制品泛滥成灾。

著名NDS模拟器"NO$GBA"的开发者Martin Korth随后成功提取了BIOS并逆向工程了Slot-1的安全机制。 这样一来,就可以用更新的工具和文档揭示NDS真实的安全机制。 正如你在本文中看到的那样,加密系统只要没有被破解就可以运行。这是对称加密系统的一个局限,非对称加密系统(例如RSA,永远不会存储私钥)就不会。

无论如何,这导致市场涌入了大量的即插即用Slot-1烧录卡。这些卡可以在任何类型的掌机上原生运行NDS程序。 随着"NoPass"卡的推出,passthrough方法也得到了改进。这些烧录卡可以在没有真正的游戏的情况下加载Slot-2烧录卡。

由于加密系统无法更改除法对现有的所有零售游戏造成影响,任天堂最终输掉了这场战斗。 现在,他们唯一剩下的选择就是走法律途径,就像为前代游戏机所做的一样。

观察

在我看来,与以前的游戏机的自制方法相比,获取和使用烧录卡简单得让我感到惊讶。 在之前的文章中我曾经描述过,用户必须深入迷宫般繁琐的步骤才能运行自制程序或盗版游戏。

就NDS而言,烧录卡就像零售游戏一样销售(尽管它们的营销"风格"有所不同),我想游戏工作室看到用户轻松就能诉诸盗版,情况确实堪忧。

Image
Slot-1闪存卡在某一时段是一个非常活跃的行业,这只是众多产品中的一小部分。

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


Previous: 8. 游戏

Next: 10. 到这就结束了!


Rodrigo Copetti © 2026 RSS Feed

切换至现代版

主页 · 文章 · 支持 · 关于作者 · 关于此网站