根據神人的研究,發現 HTC 的韌體更新程式 RUU (ROM Update Utility),為了怕使用者誤用、拿到不正確語系或版號的韌體去刷手機,於是在安裝程式裡面動了手腳,增加一些檢查機制,阻擋這類跨區或跨版本的韌體升級,這樣能避免不懂的使用者亂刷刷壞,間接也阻止了不同版本的韌體在不同地區的手機上使用。不過,如同之前改機前言所述,如果透過管道弄到「歐洲工程版」的 RUU,這道檢查機制就變成阻擋改機的第一道關卡。先從原理來看,RUU 在執行前,會要求使用者確認手機和電腦已經連接,一旦連接,安裝程式和手機就能溝通,藉由溝通結果來做檢查。而這個檢查機制主要有兩種:第一種開放給電話系統商使用,就是透過 SIM 卡檢查(讀取 ID 或序號之類的),來判斷是不是那一家的系統(Ex. 中華電信 or 台哥大),第二種是手機製造商(就是 HTC 自己啦),依照銷售的區域、機種和型號,判斷更新執行的權限,會檢查的包含了裝置識別碼 (MID; Model Identification) 和客戶識別碼 (CID; Customer Identification)。這次提供改機後門的 RUU 和電話系統商無關、有限定手機型號,所以只要是 Magic 手機應該都能夠用,唯一阻擋在前面的只剩下 CID 檢查(硬去執行 RUU 會因為 CID incorrect 而 update fail)。所以要能做到 CID Unlock,才能開始改機的第一步:安裝歐版的 RUU。(聽說也可以直接修改更新安裝程式,跳過檢查直接達到 SIM Unlock & CID Unlock 的目的..)
實際 CID 檢查的詳細步驟我不是很瞭解,不過聽說在開機時、手機裡的 SPL (Second Program Loader, Android 上的 Bootloader, 類似 BIOS) 會讀取記憶卡做檢查,只要在手機的記憶卡裡寫入一些「引導資料」、讓 SPL 載入,當 RUU 要做 CID 檢查時,就能直接 bypass 啦!這張「被寫入引導資料」的記憶卡,就是所謂的「金卡」(Gold Card)。在製作金卡之前,要先確認幾個前提,首先所有步驟只和記憶卡有關,所以製作過程手機插著哪張記憶卡,就只能用那張卡來進行改機動作(也就是說不能產生寫入金卡資料後寫進別張記憶卡使用)。再者,這張卡必須是 FAT32 檔案系統(目前一般大容量記憶卡的標準格式),最後,有些人認為雜牌爛卡也會是金卡製作的失敗原因之一,所以最好是有品牌或好一點的記憶卡(我自己是用威剛 A-Data 8GB Class 6,買手機送的)。
製作金卡的第一個步驟是先取得手機的 CID。熟悉 Linux 的人可以透過手機的終端機程式(例如用 ConnectBot 連 Localhost、或是其他像 Android Terminal Emulator 之類的終端機工具,請自行安裝)從檢視下述檔案內容,或是先確認過電腦與手機連線狀況後,透過 ADB 工具(可以從下載的 Android SDK 壓縮檔裡 tools 目錄下取得),執行命令查看檔案內容:
adb shell cat /sys/class/mmc_host/mmc1/mmc1:*/cid
或是使用 adb shell 登入,以及在手機上的終端機程式下命令:
cat /sys/class/mmc_host/mmc1/mmc1:*/cid
回應: 25