快轉到主要內容

Xperia XZ1/XZ2使用Xperable漏洞強制解鎖Bootloader + 取得Root權限

· 民國115年丙午年
·
切換正體/简体 ·
分類 智慧型手機 Root與刷機
標籤 Sony Xperia
目錄

在無法Root也不能刷機的舊型Sony Xperia XZ系列手機,可以透過Xperable工具強制解鎖Bootloader。

解鎖Bootloader並刷入LineageOS的日版Sony Xperia XZ1 Compact

這是一套組合拳。2019年,XDA開發者j4nn基於CVE-2019-2215漏洞,製作了名爲BinderShell工具,能夠在不解鎖Bootloader的情況下取得Root權限。並且能進一步搭配另一個CVE-2021-1931緩衝區溢位漏洞,修改Sony手機的開機過程,向Fastboot寫入自訂數值,從而強制解鎖Sony手機的Bootloader。後者需要用到2021年發表的Xperable工具。

這對日版Sony手機十分有用。一般全球販售的Sony手機是能夠解鎖Bootloader的,只要到Sony官網申請解鎖碼就行。但日本電信如Docomo販售的機種是不能解鎖的,於是乎就只能用這種漏洞繞過去了。這樣便能將已經無法更新系統的舊手機刷成最新版Android系統。

「去欺騙另一個自己吧。去欺騙世界吧。這就是抵達命運石之門(Steins;Gate)的唯一方法。祝你好運。El Psy Kongroo。」

開發者j4nn還有在研發不解鎖Bootloader來刷機的方法,不過這很高難度的說。本文只討論漏洞解鎖Bootloader然後刷機。

1. Xperable適用機種
#

CVE-2021-1931漏洞主要針對高通SD835與SD845平臺,需要搭配特定系統版本才有效。適用的機種有:

  • Sony Xperia XZ Premium (G8141/G8142/G8188)
  • Sony Xpeira XZ1 (G8341/G8342/G8343/SO-01K)
  • Sony Xpeira XZ1 Compact (G8441/SO-02K)
  • Sony Xpeira XZ2 (H8216/H8266/H8296/H8276/SO-03K)
  • Sony Xpeira XZ2 Premium (H8116/H8166/SO-04K)
  • Sony Xpeira XZ2 Compact (H8314/H8324/SO-05K)

再次提醒,全球版手機不需要用漏洞解鎖Bootloader解鎖,只要到Sony官網申請解鎖碼就行。

本文Ivon以日本版Sony Xperia XZ1 Compact (SO-02K) 爲例。

2. 需要的檔案
#

需要在Linux或Windows電腦操作。Ivon使用Ubuntu 26.04。

  1. Sony的USB驅動,只有Windows需要
  2. ADB工具
  3. Xperable,到XDA下載xperable-1.1.zip,裡面包含Linux與Windows的執行檔
  4. Xperable xz1 blob,到XDA下載xperable-blobs-xz1.zip
  5. BinderShell,到XDA下載bindershell-v2.zip
  6. NewFlasher,裡面包含Linux與Windows的執行檔
  7. SO-02K_47.1.F.1.105_1311-8845_R14B.ftf,對應Sony Xperia XZ1 Compact的舊版系統韌體

3. 將手機韌體刷回Android 8
#

  1. 對應CVE-2021-1931的漏洞需要Android 8才能觸發,Android 9不行。Sony Xperia手機在Fastboot之外還有Flash Mode,即使是Bootloader上鎖的情況也能刷寫原廠韌體,並且允許降級系統。

  2. XperiFirm抓不到XZ1c的韌體下載網址,故使用網友備份的載點。針對日版,確保你下載的是SO-02K_47.1.F.1.105_1311-8845_R14B.ftf

  3. 將.ftf檔案用tar解壓縮。

  4. 將NewFlasher執行檔放到韌體目錄,然後在這個目錄開啓終端機

  5. 將手機關機,在關機狀態下,按著音量下鍵,插到電腦USB。手機亮綠燈,進入Flash Mode。

  6. 執行NewFlasher

./newflasher
  1. 輸入a,清除手機資料,重新啓動

  2. 如果需要的話:!第二個問題回答y,備份TA分區的DRM金鑰,確保之後能安全刷回原廠,我是不打算回原廠了所以沒做。再重新執行上一步的寫入步驟。

  3. 等待NewFlasher寫入完成。

  4. 手機重開機,完成初始化。

4. 使用BinderShell暫時取得Root權限
#

我們將使用BinderShell工具觸發CVE-2019-2215漏洞,Android取得Root權限,然後在提權之後的短暫空檔,寫入包含漏洞程式碼的xfl-o77.mbn映像檔到xfl分區,製造給CVE-2021-1931漏洞運作的環境。BinderShell的作者還提供Magisk管理器安裝的指令。不過因爲我之後要刷第三方ROM了,所以沒有繼續使用Sony原廠系統的必要。

  1. 在設定 → 關於手機 → 版本號,點5下,啓用開發人員選項

  2. 啓用ADB,將手機連線到電腦

adb devices
  1. 將BinderShell推送到手機
adb push ./bindershell /data/local/tmp
  1. 將xperable-blobs-xz1裡面的xfl-o77.mbn推送到手機
adb push ./xperable-blobs-xz1/boot/xfl-o77.mbn /sdcard/
  1. 進入ADB shell,取得Root權限
adb shell

cd /data/local/tmp

chmod 755 bindershell

./bindershell
  1. 應該會出現以下畫面

  2. 利用Root權限,寫入.mbn檔案到手機的xfl分區

dd if=/sdcard/xfl-o77.mbn of=/dev/block/bootdevice/by-name/xfl
  1. 回到電腦,將xperable-blobs-xz1下的目錄放到xperables的boot目錄,結構如下

  2. 讓手機重開機進入Fastboot

adb reboot bootloader
  1. 此時亮藍燈

  2. 觸發漏洞

./xperable -v -V -B -U -s 0xf49880 -4
  1. 畫面如下。應該會顯示LinuxLoader @ patched successfully

  2. 按著音量上鍵,執行以下指令,再次重開機到Fastboot

./xperable -B -U -4

./xperable -c "oem unlock Y" -1 -c reboot -1
  1. 印出Fastboot狀態,應顯示unlocked:yes
./xperable -A
  1. 不用去Sony官網申請解鎖碼了了,現在能夠用任意系統開機了。

5. 刷機爲第三方ROM
#

請到XDA尋找有無official或unoffical的建置版本。

例如Sony Xperia XZ1 Compact有LineageOS可以刷:Sony Xperia XZ1 Compact ROMs - XDA

參考資料
#

相關文章


感謝您的閱讀。我寫作是為了誠實表達想法,而不是追逐社群互動與流量。我很樂意傾聽你在仔細閱讀我文章之後的心得。若有內容勘誤 or 技術問題 or 回饋想法,歡迎透過本站「關於」頁面的Email與我聯絡。