什麼是軟改,就是不需要把機器拆開,不會破壞保固,用軟體漏洞的方式去修改系統!那軟改要做什麼呢? 簡單來說就是要玩謎片,謎片是啥?問Google囉!軟改的基本知識,首先就是要了解,Wii的系統是怎麼運作的,Google有很多的資料可查,這邊就做個整理,留個紀錄!

Wii的靈魂 IOS

  1. 什麽是IOS

    IOS是Input Output System的縮寫,IOS採用了微核心的架構,提供了USB鍵盤、光碟、滑鼠、SD卡、專屬的File System等等機制,其特色之一就是模組化。

    而IOS與DLL的最大區別之一就是DLL只是個函式庫,可能是個組件,可能是個函數集合,可能是個資源文件,或者是個功能模組。而IOS則是整個操作系統的核心,它包含了各種不同功能DLL。以一個不太恰當的比喻來說,IOS可以理解為I/O系統的核心,System Menu則是我們可以接觸到的使用者界面(UI)。
  2.  IOS的版本

    IOS是以IOSxxx-Vyyyyy存在的,前面的xxx是編號,範圍限制在4-255之間(其中100為BC,101為MIOS), 也就是4#-255#,4#之前被系統佔用,而後面的yyyyy才是IOS的版本,例如IOS30的版本有1042、2816等,這裡的IOS包括了官方IOS和所有cIOS。
  3. 什麼是cIOS

    談到cIOS,相信大家都不會陌生,舉其中一例,custom IOS36是由waninkoko釋出的,根據IOS36修改而來,與官方IOS最主要的區別就是DIP模組,即DVD Interface,用於IOS與光碟之間的數據交換。眾所周知,官方的IOS是不能讀取備份碟的,而cIOS則由自製的DIP模組,代替了官方的,使其能夠讀取備份碟。
  4. 升級

    遊戲執行前,首先會檢查光碟中文件,即Title metadata中指定的IOS版本,如果一樣,則直接執行遊戲,如果不一樣,則先載入指定的IOS,然後再運行遊戲。與其原理類似的還有執行頻道,wiiware等程式。

    這裡就牽涉到升級,如果光碟中update區域的IOS版本比主機裡的IOS還新,則會開始升級(這就是為什麽有舊版本IOS的機器,放入附帶新版本IOS升級文件的遊戲,
    會提示升級的原因),如果有主機裡沒有的IOS,也會開始升級。

    當我們執行遊戲時,如果主機裡沒有所指定的IOS,則會導致遊戲無法執行,這時只需安裝指定的IOS,這也是為什麽要補齊IOS的原因,有些IOS是很相似,例如所有的IOS都支援WiFi和USB功能,而且有些能夠被取代。而Wii的每次升級,可能會增加新的IOS,並且升級舊有的IOS,但並不取代舊有的IOS,為什麽這樣做?其實是因為,每一個遊戲光碟,wiiware都會在其中指定使用的IOS,如果升級覆蓋掉了原有的IOS的功能,那遊戲就無法執行囉。

    所以綜上所述,Wii升級不是覆蓋原有的IOS,而是增加新的IOS,系統中每個IOS都是有用的,隨便刪除IOS,非常容易導致無解的全磚,要格外的小心!
  5. 什麼是軟改

    從第5點可以得知,光碟、頻道、wiiware,都有其指定的IOS來執行,如BKL,SC這樣的程式,可以強制使用IOS249,那SysMenu呢?

    SysMenu同樣在特定的IOS上執行,3.4使用IOS50,3.4以前使用IOS30,4.0使用ios60,同樣的SysMenu也可以指定其使用的IOS,如果我們指定其使用IOS249,那麽就可以直接從光碟頻道進入遊戲了。

    然而伴隨而來的問題是,在光碟頻道中我們無法指定其使用的IOS,這樣即使備份碟能夠正常顯示,但是仍然無法進行遊戲,當然我們可以用類似IOS patcher等程式,指定遊戲使用IOS249,但麻煩的是要重新燒錄一次光碟。解決的方式是,把所有官方IOS都替換上自製DIP模組,那麽我們就可以直接從光碟頻道執行遊戲備份碟囉。這就是一種特別cIOS。當然這樣做仍然有缺點,只有同區的遊戲才能在光碟頻道顯示。
  6. 韓版
    韓版3.3K SysMenu指定的是使用的是IOS40,目前已知韓版專屬的還包括IOS41,IOS43,IOS45,IOS46。
  7. IOS和SysMenu的關係

    上面提到,IOS是wii系統I/O的核心,而SysMenu是對應的使用者介面。系統I/O核心是必須存在的,但是使用者介面的版本則不強制要求,在主機內存在較新版本的IOS時,舊版本的SysMenu也同樣允許使用,這也是系統選單可以降級的基礎,同時也是補齊IOS而不用升級系統版本的原理。但是,當系統中不存在SysMenu所需要的IOS時,系統就會出現各種問題(半磚),甚至無法執行(全磚),這也就是為什麽IOS不能隨便刪除的原因。

    某些頻道也是需要系統IOS支援的(4.0下購物頻道需要IOS61),所以當對應的IOS不存在時,該頻道也無法使用。

    在一般的情況下,我們是無法對IOS進行操作的,因為使用者介面(SysMenu)沒有開放這部分的權限,正是由於高手們對SysMenu的研究,發現了各種漏洞,使我們破解了Wii的系統,獲得了對IOS進行操作的權限與能力,才讓我們對Wii的應用得到了相當大的進展。但魔高一尺道高一丈,任天堂也在盡力的封堵這些漏洞,所以系統才出現了官方版和破解版,IOS也出現了有漏洞(+trucha、freethebug)和無漏洞(-trucha)。

    官方的升級(主機選單“系統更新”,連線網路、進入頻道、或是玩遊戲)時,是將IOS和SysMenu同時更新的,而官方所更新的全都是無漏洞的版本,缺少漏洞會導致自製程式無法安裝、無法執行,所以建議不要透過官方更新,為了玩遊戲(遊戲不要求SysMenu版本)用頻道可以補齊IOS,為了獲得新的系統特性(系統選單),可以安裝破解版。

 以下轉載另一外網友(Kwirky)的大作

  • Nintendo IOS(Input Output System)其實就是系統內核和一系列的驅動程序集,作用是操縱Wii的硬件,比如手柄,平衡板等等。隨著系統的硬件升級和新遊戲的推出,Nintendo需要安裝新的IOS來支持新遊戲和新硬件。但是舊的IOS還是繼續存在系統中,而不是被新IOS覆蓋,因為舊的遊戲還需要他們。
  • 這樣的軟件架構所造成的問題就是,隨著系統的不斷升級,最終Flash資源會被用盡。目前Flash容量大約在512MB左右,用了大約100多MB,所以剩余空間還是很大。Wii大約有20個左右不同的IOS。每個遊戲都需要使用其中的一個IOS。比如Rock Band出來的時候,光碟上就有IOS37來支持USB的樂器外設。所有的IOS里面還有DVD的驅動,原本是用來播放DVD用的,但是Nintendo並沒有使用他們,卻被hacker用來運行備份光碟了。IOS30,50,60是被系統菜單使用的,如果對他操作不當的話,就全磚了,所以很危險,輕易不要動他。
  • CIOS(Custom input output system)是打在原有的IOS上的補丁,用來運行備份光碟. Wii上所有的title都必須signed才能安裝運行,但是這里面有一個著名的bug, 它用了strcmp()來compare signature, 但是strcmp遇到0x00就退出了,黑客就利用這個bug來修改數據,使得signature的第一位為0x00。 有一些黑客如WiiGater,Waninkoko等利用reverse engineering,反匯編IOS,寫了這些補丁程序,這樣backup launcher 這樣的loader就強制光盤遊戲用IOS249+補丁程序Rev10來運行。但是這個漏洞卻在3.3版的升級中被nintendo補上了,但是有一個IOS卻漏掉了,那就是IOS16, 它出自於nintendo service CD),他還有strcmp bug, 所以可以利用IOS16來安裝其他的patch過的IOS. 所以3.3版以上都要安裝這個IOS16先才能裝CIOS249Rev10等其他CIOS
  • 在最近的系統菜單4.0升級中,Nintendo安裝了一個高版本IOS16 stub. 這樣低版本的IOS16就無法安裝了。所以hacker又想了個辦法,就是把IOS35降級,還原trucha bug. 這樣又可以通過IOS35安裝其他CIOS 了。
創作者介紹
創作者 unclepooh 的頭像
unclepooh

郁Two家族 維尼大叔札記

unclepooh 發表在 痞客邦 留言(0) 人氣()