Wii軟改概念解析(三) 緩衝區溢位/Trucha Bug - 改機

Jacob avatar
By Jacob
at 2010-07-12T17:16

Table of Contents

我們在第一篇文章中提到,要在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是利用SD資料管理(3.0~4.1)
或SD Menu(4.2)的緩衝區溢位來執行自製程式

這個方法,只需要一張SD卡,不需要特別的遊戲即可執行,相當方便
(但是系統選單必須是3.0以上,這就是為什麼軟改需要升到3.0以上的原因)

只要進入特定的系統選單位置,如SD Menu
就可以選擇執行自製程式了

(目前沒有4.3上面可用的BannerBomb)

5. Trucha Bug

單單可以執行程式,駭客們當然是不能滿足的
如果可以安裝成頻道,多方便啊!

但是任天堂在你安裝程式的時候,會檢查簽章,該怎麼辦呢?
這時候有人發現了一個bug,也就是有名的Trucha Bug

在比對你的RSA憑證(不懂請看本系列第一篇)是否有效時
任天堂犯了一個很嚴重的錯誤

在驗證憑證的有效性時,我們曉得需要Hash = Hash'(第一篇中有詳述)
但是很不幸地,任天堂使用了「字串比對」,而不是「記憶體比對」

字串比對有什麼問題?C語言中,字元值0代表字串的結束
只要遇到0,不管後面還有沒有,他都會停下來

所以,如果Hash中有0,它的有效長度被縮短了!
駭客也就可以比較輕易地偽造出一個假的憑證和簽章

也就是說,這個演算法,其實並沒有被破解
但是它的檢查機制卻有漏洞!

這個漏存在於當時所有的IOS和boot1之中

可以偽造簽章之後,也就大開了Wii軟改的方便之門
自製頻道(HBC)、自製的IOS、自製的Boot2
不管你想裝什麼東西進Wii,都可以

多彩多姿的Wii軟改世界,也就此展開了
(關於Trucha bug的攻防戰,後面再做說明)

--
Tags: 改機

All Comments

Ivy avatar
By Ivy
at 2010-07-16T12:58
這內容寫成快變魔戒了 應該會大受歡迎XDDDD
Doris avatar
By Doris
at 2010-07-21T12:26
看到這篇只有感動可以形容,文筆也很好!
Isla avatar
By Isla
at 2010-07-23T00:07
從兩光公主的威能被封印之後 眾壯士們組成了威能遠征隊...
Wallis avatar
By Wallis
at 2010-07-27T07:06
今天先到這..未完待續
Ula avatar
By Ula
at 2010-07-29T05:38
也可以建議一下內容
Kama avatar
By Kama
at 2010-07-31T06:21
大推
Olivia avatar
By Olivia
at 2010-08-03T05:23
看到這裡 才知道原來是這麼一回事! 不推不可!
Kristin avatar
By Kristin
at 2010-08-04T07:28
膜拜
Irma avatar
By Irma
at 2010-08-04T15:40
我喜歡這篇!去年修了密碼學很有感覺~
Gary avatar
By Gary
at 2010-08-08T15:52
overflow應該是讓他coredump, 然後在console執行自製程式
Xanthe avatar
By Xanthe
at 2010-08-09T03:20
太強了........駭客和遊戲機廠商之間的戰爭永無止境啊
Eden avatar
By Eden
at 2010-08-09T23:48
寫得真好,期待後續>///</
Annie avatar
By Annie
at 2010-08-13T11:17
修正一下 代表字串結束的是ascii為0的字元 不是數字0
Ula avatar
By Ula
at 2010-08-14T06:20
應該是說當比對到字串值為0時,就代表字串結束
Anonymous avatar
By Anonymous
at 2010-08-15T01:30
接下來因為要進入到最複雜的部份,會晚一點才出文
Blanche avatar
By Blanche
at 2010-08-17T07:36
野心不會太大,目標是講完一般人弄不清楚的觀念就好
Vanessa avatar
By Vanessa
at 2010-08-21T00:51
看完這三篇只能說太強大了
Joe avatar
By Joe
at 2010-08-21T21:42
請問填0如何造假? 是類似injection的做法嗎?
Skylar Davis avatar
By Skylar Davis
at 2010-08-24T21:59
C裡面讀字串陣列 假如是ILOVEYOU 最後會有個/0
Hedda avatar
By Hedda
at 2010-08-25T04:07
就是利用這個東西 只比較一部份 一部份造假不難
Freda avatar
By Freda
at 2010-08-26T15:43
讀到/0會自動停止讀取 沒讀到會一直讀下去
可能就是利用這特性吧 我比較少逛Gbatemp
以上有錯請訂正m(_ _)m
Callum avatar
By Callum
at 2010-08-28T12:14
一般是利用stack buffer overflow
修改function return address
Enid avatar
By Enid
at 2010-09-01T19:59
細節可以上網找資料自己研究看看
Sandy avatar
By Sandy
at 2010-09-06T05:34
喔不好意思我看錯,是要問trucha bug對吧
Dorothy avatar
By Dorothy
at 2010-09-08T13:11
你講的差不多很接近了
Olga avatar
By Olga
at 2010-09-10T03:30
讚!
Aaliyah avatar
By Aaliyah
at 2010-09-14T11:31
好神
Noah avatar
By Noah
at 2010-09-17T14:05
希望對您有幫助 http://www.94istudy.com

內湖/汐止 徵軟改

Tracy avatar
By Tracy
at 2010-07-12T12:16
我已經算都改好了(看game disk的一步步改,之前是3.4j的,有硬改過) 但就是usb loader GX一直都不能成功 按了usb loader gx後,lading一會後 顯示 do u want to retary for 30 secs cIOS249 cIOS222 back to wii ...

軟改

Yedda avatar
By Yedda
at 2010-07-12T08:08
各位大大我想請問一下,我昨天從光華2F的圓X科技改完機後,拿回來發現我的硬碟不見了, 這是本來就會有的情況?(改完之後硬碟不能用) 還是說是他真的沒有還我?? 麻煩各位大大解答! 感激萬分 -- http://www.facebook.com/yonker.liao?ref=name - ...

gba備份卡買哪張比較好

Lucy avatar
By Lucy
at 2010-07-12T03:01
傳說現在gba備份卡可以和ds備份卡聯動了 那gba備份卡和ds備份卡各要哪張才能支援呢? 還有備份卡可以和正版卡匣作聯動嗎? - ...

wood1.09的金手指怎麼打開QAQ

Lucy avatar
By Lucy
at 2010-07-12T01:40
我把金手指放到_rpg裡的cheat裡了 可是....... 不知道要怎麼打開.... 以往的內核都是在選遊戲按y 可是這wood1.09...... 我孤狗好像有辜到說 選遊戲時按L+X 可是我按了他也只是跳回上一個資料夾~ 感覺是個蠢問題但我真的...不知道andgt;and#34;and ...

R4卡 升級問題 快來救救我

Damian avatar
By Damian
at 2010-07-11T22:38
我剛剛把 R4卡升級了 但是開機顯示 硬件版本不兼容 怎麼辦? 我到底哪裡用錯了 誰來救救我阿? 謝謝 andgt;and#34;andlt; 我的 R4卡長這樣 http://www.wretch.cc/album/album.php?id=bluemily0606andamp;book=2 ...