关注电玩巴士

随时随地,获取最新游戏资讯

退出
Wii
电玩巴士 > Wii > 导购教学 > 教学天地 > 正文

Wii软改原理解析(三)缓冲区溢出、Trucha bug

发布时间:2010/8/30 17:33:50 来源:电玩巴士 作者:青菜

作者:[91Wii]Lucky☆star

  我们在第一篇文章中提到,要在Wii上面执行未授权软体是很困难的。不过这当然无法阻挡黑客(Hacker)想在Wii上面执行自制(HomeBrew)软体的决心。当然,他们成功了(废话....)这边先介绍一些相关的知识。

1. 缓冲区溢出(Buffer Overflow)

  可以说大多数的安全漏洞都是出自缓冲区溢出。起因是,我们最常使用的C语言,并没有检查缓冲区(Buffer)的大小,我们常常会在程式中设定一个固定大小的阵列(array)当做缓冲区,例如说用40个字节来储存使用者姓名。在一般的状况下,是没什么问题的。不过如果原始资料故意输入超过40个字节。C语言在读取的时候,依然会依序将它拷贝进阵列,结果,超过40个字节的部份,就会盖写内存中其它用途的地方。而造成所谓的Stack Overflow,或Heap Overflow。也就是内存溢出。

  黑客就利用这点,来执行一些原本系统不允许的的动作。

2. Twilight Hack

  Wii上面,最早也最有名的一个缓冲区溢位攻击,利用特殊的存档,造成塞尔达传说:黄昏公主(反正就是那个游戏,黄昏公主、黎明公主、黎昏公主...)的缓冲区溢位问题。结果就是可以不经由正常的程序,执行自制的程式,由于是利用漏洞的关系,所以可以跳过检查机制,执行任何你想要的程式。(基本上都是执行SD上根目录的boot.elf或boot.dol)。

SYSMENU ----------> 曙光公主---------------> 自制程式
光碟频道 Twilight Hack

  由于是利用有问题的存档,所以后来的系统选单会检查有问题的存档并删除,进而封住这个漏洞,在4.0系统选单的系统无法使用Twilight hack。

3. Indiana Pwns/Smash Stack

  在曙光公主被封住之后,还有二个漏洞被发现,一个是LEGO Indiana Jones(无日版),一个是大乱斗欧/美版,Indiana Pwn同样是利用存档的漏洞,理论上也可以被修复(目前为止未被修复),Smash Stack则是游戏本身去读取SD造成的问题,所以会非常不容易被修复,甚至有可能永远存在。(修复很难哦)

  不过前述的这种方式,需要这三片游戏其中一片,而且要进入游戏玩一下,才能执行自制程式,不是很方便,所以主流是另一种BannerBomb的方式。

4. BannerBomb

  bannerbomb,顾名思义,频道炸弹。BannerBomb是利用SD资料管理(3.0~4.1)或SD Menu(4.2)的缓冲区溢位来执行自制程式。(就是频道图片缓冲区,类似windows的图片查看器缓冲区)这个方法,只需要一张SD卡,不需要特别的游戏即可执行,相当方便(但是系统选单必须是3.0以上,这就是为什么软改需要升到3.0以上的原因),只要进入特定的系 统选单位置,如SD Menu,就可以选择执行自制程式了,(目前没有4.3上面可用的BannerBomb)。

5. Trucha Bug !!!

  单单可以执行程式,黑客们当然是不能满足的,如果可以安装成频道,多方便啊!但是任天堂在你安装程式的时候,会检查签章,该怎么办呢?这时候有人发现了一个bug,也就是著名的Trucha Bug。

  在比对你的RSA凭证(不懂请看本系列第一篇)是否有效时,任天堂犯了一个很严重的错误。在验证凭证的有效性时,我们晓得需要Hash = Hash'(第一篇中有详述),但是很不幸地,任天堂使用了「字串比对」,而不是「内存比对」。

  字串比对有什么问题? C语言中,数字0代表字串的结束,只要遇到0,不管后面还有没有,他都会停下来。所以,如果Hash中有零,它的有效长度被缩短了! !黑客也就可以比较轻易地伪造出一个假的凭证和签章。也就是说,这个演算法,其实并没有被破解,但是它的检查机制却有漏洞!

  这个漏存在于当时所有的IOS和boot1之中。可以伪造签章之后,也就大开了Wii软改的方便之门,自制频道(HBC)、自制的IOS、自制的Boot2,不管你想装什么东西进Wii,都可以。

  多彩多姿的Wii软改世界,也就此展开了。(关于Trucha bug的攻防战,后面再做说明)。

提示:支持键盘“← →”键翻页 阅读全文

相关推荐

评论