在無法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。
- Sony的USB驅動,只有Windows需要
- ADB工具
- Xperable,到XDA下載
xperable-1.1.zip,裡面包含Linux與Windows的執行檔 - Xperable xz1 blob,到XDA下載
xperable-blobs-xz1.zip - BinderShell,到XDA下載
bindershell-v2.zip - NewFlasher,裡面包含Linux與Windows的執行檔
- SO-02K_47.1.F.1.105_1311-8845_R14B.ftf,對應Sony Xperia XZ1 Compact的舊版系統韌體
3. 將手機韌體刷回Android 8 #
-
對應
CVE-2021-1931的漏洞需要Android 8才能觸發,Android 9不行。Sony Xperia手機在Fastboot之外還有Flash Mode,即使是Bootloader上鎖的情況也能刷寫原廠韌體,並且允許降級系統。 -
XperiFirm抓不到XZ1c的韌體下載網址,故使用網友備份的載點。針對日版,確保你下載的是
SO-02K_47.1.F.1.105_1311-8845_R14B.ftf。 -
將.ftf檔案用tar解壓縮。
-
將NewFlasher執行檔放到韌體目錄,然後在這個目錄開啓終端機

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

-
執行NewFlasher
./newflasher-
輸入a,清除手機資料,重新啓動
-
如果需要的話:!第二個問題回答y,備份TA分區的DRM金鑰,確保之後能安全刷回原廠,我是不打算回原廠了所以沒做。再重新執行上一步的寫入步驟。
-
等待NewFlasher寫入完成。
-
手機重開機,完成初始化。
4. 使用BinderShell暫時取得Root權限 #
我們將使用BinderShell工具觸發CVE-2019-2215漏洞,Android取得Root權限,然後在提權之後的短暫空檔,寫入包含漏洞程式碼的xfl-o77.mbn映像檔到xfl分區,製造給CVE-2021-1931漏洞運作的環境。BinderShell的作者還提供Magisk管理器安裝的指令。不過因爲我之後要刷第三方ROM了,所以沒有繼續使用Sony原廠系統的必要。
-
在設定 → 關於手機 → 版本號,點5下,啓用開發人員選項
-
啓用ADB,將手機連線到電腦
adb devices- 將BinderShell推送到手機
adb push ./bindershell /data/local/tmp- 將xperable-blobs-xz1裡面的
xfl-o77.mbn推送到手機
adb push ./xperable-blobs-xz1/boot/xfl-o77.mbn /sdcard/- 進入ADB shell,取得Root權限
adb shell
cd /data/local/tmp
chmod 755 bindershell
./bindershell-
應該會出現以下畫面

-
利用Root權限,寫入.mbn檔案到手機的xfl分區
dd if=/sdcard/xfl-o77.mbn of=/dev/block/bootdevice/by-name/xfl-
回到電腦,將
xperable-blobs-xz1下的目錄放到xperables的boot目錄,結構如下
-
讓手機重開機進入Fastboot
adb reboot bootloader-
此時亮藍燈

-
觸發漏洞
./xperable -v -V -B -U -s 0xf49880 -4-
畫面如下。應該會顯示
LinuxLoader @ patched successfully
-
按著音量上鍵,執行以下指令,再次重開機到Fastboot
./xperable -B -U -4
./xperable -c "oem unlock Y" -1 -c reboot -1- 印出Fastboot狀態,應顯示
unlocked:yes
./xperable -A- 不用去Sony官網申請解鎖碼了了,現在能夠用任意系統開機了。
5. 刷機爲第三方ROM #
請到XDA尋找有無official或unoffical的建置版本。
例如Sony Xperia XZ1 Compact有LineageOS可以刷:Sony Xperia XZ1 Compact ROMs - XDA