nds吧 关注:85,841贴子:1,558,081

【长篇巨坑】NDS平台破解&烧录史

只看楼主收藏回复

前段时间,听说dsi ware终于破解了,不禁感到很感慨,一直到3DS世代,NDS平台的破解才终于完整。于是很想开个帖子来讲讲nds破解的历程,先前混了很久3DS破解吧,那边早就有了关于3DS的类似的帖子,但NDS平台却一直缺这么个帖子。如果对于GBA烧录卡硬件上不是很了解的话,本文的大半内容估计都是看不懂的。看完这篇文章有什么用?嘛,可能R4银卡玩某个游戏死机的问题仍无法立即解决,但积累到一定程度后,能提高大家对于烧录卡和破解本身的理解,有些疑难杂症也就不再是问题了。


IP属地:江苏1楼2015-05-16 17:10回复
    1 一些闲话
    最早的NDS是2004年底发售的,这款异质化的掌机是为了对抗PSP而紧急推出的,这时的GBA才发售四年,换代速度显得太快。从商业上讲,老任这么做确实没啥问题,因为如果用GBA去对抗PSP自然是完败,GBA相比PSP没有任何特色,而NDS的创意游戏则保留了低机能下的唯一特色。
    不过,这台主机的设计还真是,算了我就不黑了。同时推出的PSP已经引入了可升级的操作系统,它的机器固件却仍是死的,活该那么快被完破- -。
    2 破解前的准备&ROM破解的先导
    首先需要了解一下NDS破解的硬件基础。NDS加密方式是RSA 128bit,名字取自发展它的三位数学家。以NDS的CPU实际运算能力来说,NDS程序不可能是全部加密方式,这会加重CPU负担,并使得掌机续航时间变短。NDS所采用的加密方式,实际上类似于PS2和NGC的引导程序加密,这种加密是在游戏程序运行之前进行加密,进入游戏后便畅通无阻。
    最开始的破解要从哪里开始呢?嘛,当然是要暴力拆解NDS,然后dump出机器的bios、固件等等等等,而后再从中寻找设计漏洞,还有就是卡带的dump。总得来说NDS破解,总是要包含ROM破解和机器本体的破解两个部分,由于机器固件是死的(直到ndsi发售才变成活的),因此一旦破解机器固件,那就一劳永逸了,只剩不停地破解新ROM就可以。
    ROM破解贡献最大的是黑客DarkFader,引用一条当时的破解新闻吧。
    “1、他烧录了(原文是Flashed)《银河战士》DS版的ARM7部分。通常这些代码都是从DS卡带槽载入内存的,但是DarkFader改变了执行地址到了GBA卡带槽。弄走《银河战士》的卡带,《银战战士》仍然能从GBA卡带槽玩;
    2、DarkFader已经Dump了0x4000字节ARM7执行ARM9的代码(没看明白,请对照原文看,可能是指从ARM7跳转到ARM9执行?),并能重建完整的ROM。”
    ARM7是GBA模块的主控,ARM9则是NDS模块的主控,DarkFader不但实现了NDS游戏的dump,并实现了GBA卡槽运行NDS游戏。同个时期(具体的时间先后我懒得去查了orz),Darkain小组完成了NDS引导程序的破解,引导外设制作成功(这一点在本文下个部分会展开描述),于是最早期基于GBA卡槽的NDS破解就这么轰轰烈烈地开始了。这时距日版NDS首发才半年不到。
    须知,从GBA烧录卡运行NDS游戏在当时有明显的合理性,GBA烧录卡是当时很成熟的东西,尽量迁就它,对于黑客来说可以省去不必要的麻烦。


    IP属地:江苏3楼2015-05-16 17:18
    收起回复
      2025-05-11 18:05:20
      广告
      3 从pass-through到flashme——早期NDS本体破解
      这个部分的关键词:引导&刷机,前面简述了ROM破解,现在谈本体破解。其中功劳最大的莫过于Darkain破解小组。他们完成的工作,便是NDS破解的最核心部分,也就是破除了NDS引导程序的加密。他们将破解代码烧入自己制作的一个外设中,这便是pass-through——外插一张NDS正版卡带后,再将pass-through插进nds的slot-1,即可引导slot-2的gba卡槽运行NDS游戏。Pass-through长这个样子:

      它后其它黑客经改进设计缩小尺寸,改名为passme,为各大烧录卡厂商所用,每个牌子几乎都有自己的passme,名字不太一样,功能大同小异。
      同步在发展的还有另外几种技术。最一开始的NDS本体破解既有wifime引导,也有passme引导,前者不但是引导,也致力于hack NDS本体的wifi机能,但由于老任官方大力推广自家的NDS wifi联机协议,和其他平台的主流协议并不兼容,因而wifime不再有存在价值,而后者由于无需对nds本体做改动,只通过自制外设便可引导,所以兴盛起来。而作为等效于passme技术的,还有一种刷机破解,这时将自制固件刷写进NDS本体,以免除使用引导卡,简言之刷了机的NDS=插着引导卡的NDS。刷机的代表便是flashme,刷机和引导技术互为替代,基本可以认为是同步发展,因而仅仅介绍引导技术的发展便已足够。
      于是乎,第一张商用NDS烧录卡neoflash就这么横空出世了。其实际上就是passme+gba烧录卡的组合。当时的passme是个非常前沿的技术,这卡推出的速度也确实够快,因此象征意义还是蛮大的。这时NDS首发刚刚半年。




      一段时间内(主要指的是SC M3 G6 EZ4成熟之前),neoflash是最好的NDS烧录卡,兼容最好,而且因为是norflash烧录式,读取极快,发生拖慢卡死的情况也相对少很多。不仅如此,早期重要的NDS rom dump组织GST小组,发布的ROM加入了特别的代码,只能在neo上运行。这其中必然有商业利益,但多多少少也反映了neo小组的野心。后来掀起了抵制GST小组,倡导clean dump的运动,厂商们才算回到了同一起跑线。
      passme的核心在于破解了NDS的引导加密,它本身在细节上还有很多可以改进。最早的passme功能很弱,只能提供最基本的引导功能,但一来需要借助正版卡才能骗过NDS固件,二来那时候ROM破解并不成熟,存档都没合适的地方可以放- -存档存不进slot-2,那就只好slot-1咯,被逼无奈,只好先存到NDS正版卡里面去,不仅如此,存档还分不同类型,类型A对应的正卡只能存A型ROM,不能存B型ROM。挺讨厌的吧?破解早期就这个样子的。不仅如此,它的引导方式还存在着改进的空间,这在下文中会有涉及。
      Neoflash的动作够快,但其他厂商也没掉队。只要有gba烧录卡,再买个passme就玩NDS游戏了?那感情好啊,只要更新更新烧录软件就OK了嘛。注意,即便机器破解了,ROM的破解也是非常重要的一环,因为正版卡和烧录卡的硬件是两回事,运行环境不同,产生兼容问题那就无可厚非,为此,要进行细致的软件维护。特别当时那个时期,NDS游戏的要从GBA卡槽运行,必须进行转换。不仅如此,还有存档格式的问题。
      基本的技术模式成型咯,下面是进行细节的改进了。我想通过典型的例子来说明。从2004年底NDS发售,到2005年5月掌机王SP报道neoflash,没用半年时间NDS的核心破解便完成了。再到06年底首张三免slot-1烧录卡AceKard出现,这一年半的时间内便是NDS破解技术急速成熟的时期。期间烧录、刷机、引导的技术变化跨度之大,是现今无法想象的。Neo团队作为先驱者,在这期间出了一堆现在看来意义不明的硬件,虽说纯属坑钱,但也提供了很好的实物素材。其MK系列产品便是代表。MK也就是magic key 的缩写,这玩意儿是neoflash系列NDS引导外设的名字,它有一个大家族。


      IP属地:江苏4楼2015-05-16 17:22
      回复
        先到这里打住,虽然全文已经写完,但还是慢慢更。


        IP属地:江苏6楼2015-05-16 17:26
        回复
          几年前好像看过这个


          IP属地:广西来自Android客户端7楼2015-05-16 17:29
          收起回复
            看看


            IP属地:浙江来自Android客户端8楼2015-05-16 17:37
            回复
              ware破解为什么找不到一样下载资源


              来自手机贴吧9楼2015-05-16 21:52
              收起回复
                4 真slot-1时代
                AK烧录卡的出现,一直到08年底ndsi发售前,是slot-1烧录卡的黄金时代。这期间技术成熟(指的是在当时那个阶段看来显得非常成熟),NDS平台游戏阵容也是惊喜不断,烧录卡厂商也稳步推进。虽然没有关键性的进步,但可能却是大家印象最深刻的一个阶段。

                Slot-1烧录卡虽然和slot-2的gba烧录卡是两回事,但设计的思路显然是有所借鉴的。解码芯片、存档芯片一般是需要的,但不再需要存放游戏的ram或norflash。免除了norflash和ram后,取而代之的是所谓的nand直读的技术。也就是从NDS平台开始,由于机能的提升,不再需要高速内存,烧录卡仅凭借直接读取nand中的游戏数据便可满足正常游戏的需要,其中的原因是比较好理解的。原本的gba及其以前的机器,都直接将卡带挂在CPU总线上,这样卡带既是存储体,又充当了机器的大容量运存,因而烧录卡也必须使用norflash或者ram才能正常游戏。到了NDS这里,由于主机设计思路发生变化,运行和存储分离开来,正版NDS卡带本身就采用nandflash作为存储体,由机身ram动态读取,于是烧录卡也使用nand也就无可厚非。

                这是AK初版第二批的PCB。
                AK是个很着急的产品,最早的AK使用TF卡时必须用专门的软件格式化TF卡,格式化后的TF卡不能被直接识别为移动磁盘,而得通过专用软件才能拷贝删除文件,但是ROM确实是免转换的。而后没多久,EZV、DSONE、M3DSS、R4、N-card、CycloDS等在国内国外的市场也都各自粉墨登场,一时间好不热闹。这个时间段,这些真slot-1烧录卡和slot-2、伪slot-1的烧录卡仍在市场上并行流通,但slot-2和伪slot-1已成强弩之末,逐渐退出了市场。说是伪slot-1,意指虽然插在slot-1,但仍需要刷机和rom转换,主要指dslink。

                这些烧录卡作为刚刚从诞生的slot-1卡带,仍保留了slot-2引导功能。即可以引导slot-2烧录卡玩nds游戏和gba游戏。尽管前面已经有了slot-2和伪slot-1的烧录卡的制作经验,但来到真slot-1后,内核可以做得更加庞大得多,各种功能、UI方面可以增加、改进的方面实在太多了,究竟什么样的slot-1烧录卡最能迎合市场?
                内核的游戏兼容性NDS时代显得尤为关键。以往GBA时代的游戏基本没有任何加密,只要存档格式兼容,游戏就畅通无阻,软件补丁方面不怎么需要动脑筋。到了NDS时代,一来游戏数目大为增加,二来经历GBA时代的教训后,游戏商们或多或少开始加密,因此兼容性问题就值得关注。不仅仅是原版游戏,还有自制软件的兼容性,要知道自制软件的开发甚至早于这些刚刚成熟的真slot-1卡带,后者自然要去主动地向前者示好,还有自然是改版ROM,它们主要指hacked rom和汉化rom,不难理解。
                兼容性的关键就是在loader。当然,loader是内核的最关键部分,不同的烧录卡在ROM兼容上的实现方式有差异,有三种思路,这和gba时代也是如出一辙的。
                以N-card为代表的一票烧录卡,采取的是所谓硬件克隆的方式。N-card内置nandflash、解码芯片、4M存档芯片,其设计思路基本就是可反复擦写的正版卡,在一定的时间范围内,正版卡的设计和N-card基本没区别,因而N-card可以用来直接制作NDS的D卡,现在淘宝上大量有卖却鲜有人问津的D卡,基本就是那个时期没消化完的库存。其内核只需少量更新,但是其局限性也很明显,如果新出的游戏在卡带硬件上做了大改动,那就没得救了。比如08年左右出现的8M存档游戏,因为N-card存档芯片不够大所以直接歇菜。
                以R4为代表的一票廉价烧录卡,采取的是深层软件补丁的方式。其卡带本体设计便阉割了存档芯片,采取直接存档到TF卡的方式。这种完全异于正版卡架构的设计,必然对应ROM需要大量的补丁。它的内核需要频繁的更新。
                以AK为代表的,还有dsone EZV,采取的是硬件模拟的方式。这些卡仍有解码芯片+存档芯片的基本硬件结构,但并不是无脑克隆,是采用可变更的运行引擎来模拟正版卡运行环境,由此兼容clean rom,其实际上介于前两种方案之间,随仍然需要补丁,但拥有自己独家的运行引擎,也并不是无脑克隆,比较能适应新出游戏的变化。原则上说,它向下兼容深层补丁的运行方式,这些卡也都标榜自己是双重运行机制并存,但早期时候,它们大多对存储卡极为挑剔。这些卡运行游戏有双重模式,一种是clean模式,一种是补丁模式,前者理论兼容性更高,出问题几率更小,但没有软复位金手指之类的功能,后者则与之相反咯,基本就跟深层补丁一样了。这些卡的硬件上即对各种软件兼容性好于R4之流,但这个优势直到很后期才体现得出来,后文可能会提及。

                这是早期AK内核中的界面,可以看到,它是按不同存档类型来模拟的,这是硬件模拟的重要一环。


                IP属地:江苏11楼2015-05-16 23:36
                收起回复
                  2025-05-11 17:59:20
                  广告
                  哇草,前排膜拜大神


                  IP属地:山西来自Android客户端13楼2015-05-16 23:51
                  收起回复
                    哇,我穿越了?


                    IP属地:浙江来自Android客户端14楼2015-05-17 00:33
                    收起回复
                      楼主排版改一下就更好了,一大段一大段好多人一看都不想看了


                      IP属地:上海来自Android客户端15楼2015-05-17 02:11
                      收起回复
                        鼓励楼主继续更新


                        IP属地:天津来自Android客户端16楼2015-05-17 08:39
                        收起回复
                          怎么没有了?!


                          IP属地:北京来自iPhone客户端18楼2015-05-17 10:58
                          收起回复
                            在进一步讨论内核前,再补充些其他概念。
                            Slot-2扩展功能。Slot-1称为主流后,slot-2解放出来,可以实现更多的功能,如浏览器,gba扩展卡,震动功能。原本这几样功能任天堂都有官方外设,但烧录卡厂商推出的整合外设功能更为强大。如浏览器和gba功能完全可以二合为一,因为gba功能本身就可以依靠大容量ram实现,这便是M3 gba扩展卡,ewin gba扩展卡,但任天堂官方自然不会允许这种方案。这些slot-2外设的功能需要slot-1烧录卡进行引导,不能独立使用。这种引导可以通关运行自制软件来实现,也可以直接在内核中内置这些功能。


                            即时存档和金手指。请知悉,NDS运行NDS游戏是硬件兼容,又称硬解,而非模拟器软解,因而实现金手指和即时存档的功能就显得尤为不易。金手指的本质是锁死内存的某些地址,实现类似HP不减之类的非正常功能,而锁死内存的只可能是NDS本体的CPU,这个CPU还得忙着运行游戏,搞不好就冲突死机了,因此金手指在硬解机上实现就需要很繁重的debug工作。即时存档也是类似的,不过即时存档需要更高程度的硬件支持,自制内核一般支持不了即时存档,即时存档做得比较好的烧录卡其实也没几张。
                            Wii联动。NDS和WII的某些游戏间可以联动,这个功能烧录卡能不能实现?当然可以,但得专门去做内核维护。最早期这个功能是cycloDS系列的特色,后来其他烧录卡也逐渐完善了这个功能。
                            DMA读卡与外挂数据库。DMA,也即direct memory access,其含义是不通过CPU,直接进行nand与机身ram的数据交互,用在烧录卡的表现是降低TF卡速导致的兼容问题,以及提高内核的总体兼容性。这个概念最早是由DSTT用在烧录卡的技术上,后来为其他烧录卡所借鉴。外挂数据库,意思是说对一些有特殊硬件软件规格的游戏制作外挂库,当内核运行的游戏被数据库包含,内核将调出该数据,进行必要的反烧、或免去游戏和存档加载的过程。外挂库的好处是库作为一个文件独立出来,可由有学习精神的玩家自行拆包编辑,却又不需要过分繁杂的操作。这也是DSTT内核设计中经典的一笔。

                            这是某张山寨卡的内核,可以看到DMA读卡的普及。
                            文件碎片。烧录卡或多或少都会有这个问题。TF卡用久了,文件碎片会变多,需要及时格式化。


                            IP属地:江苏20楼2015-05-17 13:53
                            收起回复
                              2025-05-11 17:53:20
                              广告
                              6 本体破解的新困局——迈入ndsi时代
                              日版ndsi是08年底发售的,dsi相比先前ds dsl有了很大的变化。最重要的有两点,一是可升级的机身固件,二是dsi模式的出现。这两件事情都对NDS平台破解的发展产生了重大影响,分开讨论吧。总得来说,dsi的出现,以及之后的3ds,都是机身本体破解的新困局。
                              可升级的机身固件,冠冕堂皇地说,是为了“提高运行稳定性和安全性”,实际上,就是为了狙击烧录卡,以往NDS NDSL机身固件是固定的,是个不会动的活靶子,而可升级的机身固件可以不停地应对新出的烧录卡,并及时封锁它。这种封锁,是直接屏蔽掉烧录卡的欺骗手段,机器连卡都不认。可升级的固件,使得原本无需再关注的机器本体破解又成为了关注的焦点。
                              而dsi模式,则是直到最近出现破解曙光的一个领域。Ndsi设计相比NDS NDSL有了关键性的变化,CPU最高主频提升,并加入了摄像头机能和机身SD卡。虽然SD卡的功能仅仅局限于播放音乐和存储照片,但还是能和ndsi本体进行数据交互的。而CPU主频的提高至关重要,因为,原则上说这台ndsi的机能比NDS NDSL都要高了啊,原则上就能够设计只有dsi能玩但dsl不能玩的游戏咯。为了加以区分,dsi出现了dsi模式和ds模式的区分。
                              ds模式下,dsi的CPU并非全速运行,而dsi模式就是CPU主频以最大值运行的模式,在这个模式下,相比ds模式多出了三块儿全新的功能,dsi专属游戏,dsiware,dsi增强游戏。Dsi专属游戏顾名思义,dsiware则是仅仅贩售于新增加的网络商店的趣味游戏,dsi增强游戏是指在dsi模式下会拥有ds模式下不具有玩法内容的游戏。

                              这是dsi专属游戏。


                              IP属地:江苏22楼2015-05-17 14:01
                              回复