伊莉討論區

標題: 从技术角度描述本次reset glitch hack [打印本頁]

作者: z1994323    時間: 2011-9-19 08:26 PM     標題: 从技术角度描述本次reset glitch hack

開此貼的目的,是從純技術的角度來描述一下個人對這次reset glitch hack的理解。
  這是一個掃盲貼,所以不會有艱深的理論,小白也可以看。但是出于尊重,請不要在回帖中說類似于“你說的這些都沒用,我就關心什么時候能硬盤跑游戲”之類的話。
  另外由于是個人理解,所以可能會有錯誤。
  XBOX360在啟動時,CPU會有一個模塊對比啟動部分的代碼是否正確為原版。如果和存儲的特征值不同,就不會讓系統繼續啟動。如果要運行自制系統,首先要搞掉這個保護功能。
  XBOX360的CPU存在一個設計缺陷。就是如果給出一個非常短的復位信號,按理說機器會復位,但是實際上,CPU不會重新啟動,而會發生一些功能錯誤,如果這個在非常恰當的時候,給出這個脈沖的話,那個保護模塊就會錯誤的返回一個“沒有問題”的信號,這樣,系統就會繼續啟動了。
  下面就是如何在恰當的時候發出一個足夠短的復位脈沖的問題了。
  在胖版中,破解者發現,如果給CPU一個腳(CPU_PLL_BYPASS)一個信號,就會讓CPu的頻率變得非常慢。然后這時就可以用相對長的復位脈沖來達到讓CPu錯亂的目的。
  在slim版中,這個信號腳沒有了。這就無法讓CPU跑在一個慢的頻率上,所以產生這個復位脈沖的難度就變大了,因為產生特別短的電脈沖是有難度的。而且你還必須控制這個時序。難上加難。
  不過破解者又發現了一個方法。就是時钟芯片。XBOX360用的時钟芯片可以用IIC總線給一些指令進去(IIC是一種常用的管理總線),讓他產生較低的頻率,但也不是太低,大概是100兆這樣。然后再用一個20納秒寬度的脈沖,在啟動到某個特定時刻(這個靠監視一些腳可以知道),發到CPu的復位腳上去。這樣,也可以達到相同的效果。
  所以,除了原理以外,技術上還有2個問題,1是在啟動到什么時候,發送這個脈沖。2是產生一個足夠短的脈沖。
  破解小組使用了XILINX(世界最大的可編程邏輯器件公司,第二大是altera)的CPLD(復雜可編程邏輯器件),型號是XC2C64A。
  這是XILINX公司最便宜的CPLD之一,有如下特性:
  1,超低功耗。2,觸發器支持雙沿觸發(可以理解成這個芯片可以讓48兆時钟能拿來當96兆用)。3,速度快。4同一個芯片,支持不同電壓。
  所以在slim的破解中,這一顆芯片肩負了給時钟芯片的IIC總線發送指令的任務。(3.3V電平)還肩負了探測CPU啟動狀態,用計數器來計算時間,在恰當的時刻給出短脈沖,然后在回復時钟芯片內容的任務。時钟信號用的就是XBOX360本身的48兆時钟信號。
  要注意,這里用XC2C64A,僅僅是因為,他足夠的便宜,而不是因為他是最牛逼的。能達到和超過這片CPLD性能的片子,比比皆是,但是都更貴。所以現在有炒這個片子的,我覺得意義不大,炒不了多高。比如說,XC2C128一定能實現他的功能,只是比較貴。你再貴,也不能比替代品貴,對吧。另外,用FPGA來實現目前的工作,會更好更可靠。FPGA內部的數字時钟管理模塊可以直接多倍頻,計數器可以跑在遠高于現在96兆的頻率上,計數更精確,能夠產生的脈沖更短。就是都比較貴(最便宜的XC3S50AN要20多),而且封裝都比較大,管腳多,還需要多個電壓。所以綜合來看,破解小組使用XC2C64A是合理的,有性價比的選擇。
  至于為什么用C-MOD,C-MOD是XC2C64A的最小系統。用起來方便,僅此而已。
  再說說關于那個220pf電容的問題。那個電容可以讓脈沖更短一點,可能還有點濾除噪聲的作用。我覺得並不是特別重要,如果破不了的話,倒是可以嘗試改變一下那個電容的大小,可能會有點用。
  以上是通讀wiki和目前放出文檔以后,對slim360破解技術細節的一些看法。權當掃盲用。有錯誤請指正。




歡迎光臨 伊莉討論區 (http://a401.file-static.com/) Powered by Discuz!