Android 移除 Root 和 Magisk

本站搬家到 GitHub 了, 新網址是 https://dennys.github.io/tw/doc/android/android-remove-root-magisk/

注意: 系統刷機有一定的風險, 可能導致手機無法開機和失去保固, 資料還會被清空, 執行前請先三思!!!

注意: 系統刷機有一定的風險, 可能導致手機無法開機和失去保固, 資料還會被清空, 執行前請先三思!!!

注意: 系統刷機有一定的風險, 可能導致手機無法開機和失去保固, 資料還會被清空, 執行前請先三思!!!

====================================================================

在上次這篇 https://dennys.wordpress.com/?p=305 有說明如何修改系統設定檔, 修改完後, 其實就不需要 Root 了, 因此可以 UnRoot. 方法如下:

1. 將手機重開, 並同時按下 電源+音量下鍵進入 bootloader 模式

2. 用 fastboot 刷回原始的 boot.img

fastboot boot boot.img

2.1 其實 Magisk 有這個功能刷回原始的 boot.img

2.2 但我實測按下還原原始映像檔是沒作用的, 所以只好自己刷

3. 刷回原來的 boot.img 之後, 絕大多數 App 都可以用了, 不過實測發現沒有移除 Magisk, 還是有某些 App 譬如 Costco 或國泰世華銀行無法使用, 所以最後還是把 Magisk 移除. 但手機還是維持在 Unlock 狀態.

Android 改機系列相關文章

Google Pixel 5 Root & Magisk

本站搬家到 GitHub 了, 新網址是 https://dennys.github.io/tw/doc/android/google-pixel-5-root-magisk/

注意: 系統刷機有一定的風險, 可能導致手機無法開機和失去保固, 資料還會被清空, 執行前請先三思!!!

注意: 系統刷機有一定的風險, 可能導致手機無法開機和失去保固, 資料還會被清空, 執行前請先三思!!!

注意: 系統刷機有一定的風險, 可能導致手機無法開機和失去保固, 資料還會被清空, 執行前請先三思!!!

===================================================

安裝 Google USB driver

  1. 首先要在電腦上安裝 Google USB driver, 可在這裡下載https://developer.android.com/studio/run/win-usb

2. 解開壓縮檔 (應該是 usb_driver_r13-windows.zip), 在 android_winusb.inf 按右鍵, 然後一直往下就好了

ps: 沒有裝 driver 的話, 在執行 fastboot 的時候, 就會遇到 waiting for any device 的訊息

===================================================

安裝 Android SDK Platform Tools

從這裡下載, 一直 next next 就好.

https://developer.android.com/studio/releases/platform-tools#downloads

===================================================

手機解鎖 Unlock

請記得先備份資料, 因為解鎖會清空資料

請記得先備份資料, 因為解鎖會清空資料

請記得先備份資料, 因為解鎖會清空資料

1. 手機進入開發者模式並確定 adb devices 可以連上手機

2. Enable OEM 解鎖

3. 執行下列指令, 手機會出現要你確認是否要 unlock, 按下去, 手機就解鎖了. 注意: 這裡會把手機資料清空

adb reboot bootloader
fastboot flashing unlock

=============== 以上完成 Unlock, 以下為 Root 的步驟 ===============

手機 Root

1. 用手機下載並安裝 Magisk (https://github.com/topjohnwu/magisk_files/blob/canary/app-debug.apk) (更新: 請改從這裡抓 https://magiskmanager.com/

2.1 檢查手機版本 (設定 -> 關於, 然後拉到最下面), 譬如我這支是 SQ1A.220105.002

2.2 用電腦連到 https://developers.google.com/android/images, 下載對應的 boot image (按 Link)

2.3 解開裡面的 vbmega.img 和 boot.img.

3. 將前一步驟解出來的 boot.img 放到手機上, 然後使用 Magisk 對 boot.img 做 patch, 並把 patch 完後的檔案傳回電腦

4. 將手機重開, 並同時按下 電源+音量下鍵進入 bootloader 模式

5.1 用 fastboot 刷 vbmega.img, 不然刷完後重開機, 手機會出現 failed to load/verify boot images (應該是 Pixel 4A 5G 以後的都需要這個)

fastboot flash --disable-verity --disable-verification vbmeta vbmeta.img

5.2 用 fastboot 刷剛剛用 Magisk 給 patch 過的 image. 注意, 這裡用的是 fastboot boot, 不是 fastboot flash. 刷完以後會自動重開機.

fastboot boot magisk_patched.img

Magisk

6. 使用 Magisk 檢查是否 Root

若你的 Masgisk 長這樣

然後執行時出現這個畫面, 這時候按確定, 他應該會去嘗試下載, 然後最後說剖析套件時發生問題.

還是得裝前面講的版本 (https://github.com/topjohnwu/magisk_files/blob/canary/app-debug.apk), 執行後看到下面畫面, 就是 Root 成功了.

7. Root 之後可再刷第三方 ROM, Pixel5 有一堆可刷, 可參考 https://forum.xda-developers.com/f/11343/. 比較意外的是, 本來以為最多人用的是 LineageOS, 不過看來 ProtonASOP 受到的關注更多 (以 XDA 上面的 views/replies 數量來看). 還有 CleanSlate 在沒有 Root 的情況下也可以使用, 這個值得研究一下.

參考:

Android 改機系列相關文章

Android 11 如何不要驗證 Wi-Fi CA 憑證

本站搬家到 GitHub 了, 新網址是 https://dennys.github.io/tw/doc/android/add-do-not-validate-android-11-peap-mschapv2-wifi/

注意: 系統刷機有一定的風險, 可能導致手機無法開機和失去保固, 資料還會被清空, 執行前請先三思!!!

注意: 系統刷機有一定的風險, 可能導致手機無法開機和失去保固, 資料還會被清空, 執行前請先三思!!!

注意: 系統刷機有一定的風險, 可能導致手機無法開機和失去保固, 資料還會被清空, 執行前請先三思!!!

===================================================================

更新紀錄

  • 2022/05/30: 新增系統更新或 Wi-Fi 密碼修改後的處理方式

Wi-Fi CA 憑證驗證在 Android 11 的改變

Android 10 以前, 如果是連到 Enterprise Wi-Fi (EAP/PEAP), CA 憑證是可以選 “不要驗證", 如下:

自 Android 11 起, 如果是連到 Enterprise Wi-Fi (PEAP), CA 憑證就無法選 “不要驗證", 原因可參考 https://www.xda-developers.com/android-11-break-enterprise-wifi-connection/. 這個方向是對的, 但如果網管不改, 一般使用者恐怕也無能為力. (而且 iPhone 至少到 15.4 都沒有卡這個…)

爬了一下文, 看來是可以直接把這個設定加回去 (參考: https://android.stackexchange.com/questions/231859/), 但很不幸的, 檔案是放在 /data/misc/apexdata/com.android.wifi/WifiConfigStore.xm, 這裡的檔案必須 Unlock 才能修改. 文章裡面是寫有可能透過 App 修改, 但我沒找到方法, 如果有人找到好方法了, 也麻煩分享一下.

修改步驟

1. 首先, 要 Unlock, Pixel 5 (Android 12) 可參考 https://wordpress.com/post/dennys.wordpress.com/280. (要做到把 boot.img 換掉)

2. 試著連上 Wi-Fi, 網域就隨便給他寫, 然後試著連線, 這當然是不會成功, 目的只是要先寫入一版 Config 檔案, 等一下可以修改.

3. 先用下列指令檢查 WifiConfigStore.xml 是否正確, 這裡也可以用 adb pull 拉到電腦檢查, 但我一直沒成功, 就先用 cat 看. 若執行時發生

adb shell
su
cat /data/misc/apexdata/com.android.wifi/WifiConfigStore.xml

若執行 su 時發生 inaccessible or not found (如下), 通常是 root 沒成功, 請再確認一次 root 步驟.

127|redfin:/system/bin $ su
/system/bin/sh: su: inaccessible or not found

讀出來的 WifiConfigStore.xml 內容如下, 可找 WifiEnterpriseConfiguration 這個關鍵字, 目的是要把紅色的設定值拿掉

<WifiEnterpriseConfiguration>
<string name="Identity">這裡是帳號名字</string>
<string name="AnonIdentity"></string>
<string name="Password">這裡是密碼</string>
<string name="ClientCert"></string>
<string name="CaCert"></string>
<string name="SubjectMatch"></string>
<string name="Engine">0</string>
<string name="EngineId"></string>
<string name="PrivateKeyId"></string>
<string name="AltSubjectMatch"></string>
<string name="DomSuffixMatch">這裡是上面隨便輸入的網域</string>
<string name="CaPath">/system/etc/security/cacerts</string>
<int name="EapMethod" value="0" />
<int name="Phase2Method" value="4" />
<string name="PLMN"></string>
<string name="Realm"></string>
<int name="Ocsp" value="0" />
<string name="WapiCertSuite"></string>
<boolean name="AppInstalledRootCaCert" value="false" />
<boolean name="AppInstalledPrivateKey" value="false" />
<null name="KeyChainAlias" />
<null name="DecoratedIdentityPrefix" />
</WifiEnterpriseConfiguration>

4. 執行以下指令 (這指令是直接從上面那篇 stackexchange 抄過來的), 他就會把 CaPathDomSuffixMatch 的內容改成空白. 最後一個步驟會重開, 要重開才會生效.

adb shell
su
sed -i 's%<string name="CaPath">.*</string>%<string name="CaPath"></string>%' /data/misc/apexdata/com.android.wifi/WifiConfigStore.xml
sed -i 's%<string name="DomSuffixMatch">.*</string>%<string name="DomSuffixMatch"></string>%' /data/misc/apexdata/com.android.wifi/WifiConfigStore.xml
reboot

5. 重開完後, 檢查 /data/misc/apexdata/com.android.wifi/WifiConfigStore.xml 的內容, 確認下面紅色這段的設定被清空了

<WifiEnterpriseConfiguration>
<string name="Identity">這裡是帳號名字</string>
<string name="AnonIdentity"></string>
<string name="Password">這裡是密碼</string>
<string name="ClientCert"></string>
<string name="CaCert"></string>
<string name="SubjectMatch"></string>
<string name="Engine">0</string>
<string name="EngineId"></string>
<string name="PrivateKeyId"></string>
<string name="AltSubjectMatch"></string>
<string name="DomSuffixMatch"></string>
<string name="CaPath"></string>
<int name="EapMethod" value="0" />
<int name="Phase2Method" value="4" />
<string name="PLMN"></string>
<string name="Realm"></string>
<int name="Ocsp" value="0" />
<string name="WapiCertSuite"></string>
<boolean name="AppInstalledRootCaCert" value="false" />
<boolean name="AppInstalledPrivateKey" value="false" />
<null name="KeyChainAlias" />
<null name="DecoratedIdentityPrefix" />
</WifiEnterpriseConfiguration>

6. 這時候應該就可以連線了

7. 因為實際上並不需要 root, 只是為了修改 WifiConfigStore.xml, 因此改完後可以 UnRoot (移除 Magisk 和刷回原廠 boot.img), 但因為解鎖會清空資料, 而且下次又遇到新的 Wi-Fi 又得重來, 我就維持解鎖狀態了. 方法可參考 https://dennys.wordpress.com/?p=330

系統更新後如何處理?

不用處理, 至少目前我的 Pixel 5 更新到 2022 年 5 月更新 (12.1.0 (SP2A.220505.002, May 2022) 時, 都不需要處理.

Wi-Fi 密碼更新後如何處理?

  1. 如果系統有更新過, 就得先用 Magisk 重新 patch 一次.
  2. 一樣要試著連線 (當然不會成功), 重點是把密碼寫進去.
  3. 然後再用 adb shell 跑一次上面的 sed 指令修改 WifiConfigStore.xml 即可.

後記

1. 這個方法並不是把不要驗證 (Do Not Validate) 的設定加回去, 而是先嘗試連線一個要驗證的 Wi-Fi (當然這裡會失敗), 等他把設定檔存下來之後, 再進系統把憑證的設定改掉, 所以還是和 Android 10 以前不太一樣. 而且每次連上一個新的要使用 EAP 的 Wi-Fi 基地台都要重新執行一次, 會比較麻煩.

Android 改機系列相關文章

Samsung Galaxy S7 Edge 刷 LineageOS

本站搬家到GitHub了, 新網誌是 https://dennys.github.io/tw/doc/android/samsung-galaxy-s7-edge-lineageos/

注意: 系統刷機有一定的風險, 可能導致手機無法開機和失去保固, 資料還會被清空, 執行前請先三思!!

注意: 系統刷機有一定的風險, 可能導致手機無法開機和失去保固, 資料還會被清空, 執行前請先三思!!

注意: 系統刷機有一定的風險, 可能導致手機無法開機和失去保固, 資料還會被清空, 執行前請先三思!!

====================================================================

Samsung Galaxy S7 Edge 是 2016 年初的手機, 最多可更新到 Android 8, 最後的 patch 是 2020 年 9 月.

可以刷的 ROM 看來有很多 (可參考 https://forum.xda-developers.com/f/5186/)

  • 最有名的 LineageOS 15~19 (Android 8~12)
  • FloydQ: 這是基於 Android 10 的 Samsung OneUI 2.5, 這應該是可以用到比較多 Samsung 手機特有的功能

請先在電腦安裝以下兩個程式

下載 LineageOS 和 Open GApps

下載 TWRP

安裝 TWRP

  1. 開啟工程模式
    1.1 設定→關於裝置→軟體資訊→版本號碼處連點8下
    1.2 進入開發人員選項後,USB偵錯以及OEM解鎖選項要打勾。
  2. 重開機進入 download mode
    3. 執行 ODIN, 把剛才的 twrp 給刷進去, 再重開就可以了

刷 LineageOS 和 Open Gapps

執行 adb reboot recovery 或是先關機, 然後按音量上+Home+Power 鍵進入 TWRP Recovery. 選 INSTALL, 把LineageOS 和 Open Gapps 的 zip 檔案裝上去, 重開機就可以了.

如果要用 ADB, 指令如下:

adb sideload open_gapps-arm64-11.0-nano-20220202.zip

TWRP 被 LineageOS Recovery 蓋掉的問題

自 LineageOS 17 開始, 他自己有帶一個 Recovery, 嘗試刷回 TWRP 又常常失敗.

可試試看 https://forum.xda-developers.com/t/3334084/ 的 step 6~8

=================================================

NikGapps 測試 (失敗)

一開始用 LineageOS 自己的 Recovery, 刷 NikGapps 一直失敗

adb sideload NikGapps-basic-arm64-12-20211224-signed.zip
adb: sideload connection failed: closed
adb: trying pre-KitKat sideload method…
adb: pre-KitKat sideload connection failed: closed

用以下指令可解決

C:\platform-tools>fastboot devices
C:\platform-tools>adb usb
C:\platform-tools>adb sideload NikGapps-basic-arm64-12-20211224-signed.zip
serving: 'NikGapps-basic-arm64-12-20211224-signed.zip' (~32%)

但最後又一直卡在空間不足, 就放棄了.

Samsung Galaxy View Root & Magisk

本站搬家到 GitHub 了, 新網址是 https://dennys.github.io/tw/doc/android/samsung-galaxy-s7-edge-lineageos/

注意: 系統刷機有一定的風險, 可能導致手機無法開機和失去保固, 資料還會被清空, 執行前請先三思!!!

Samsung Galaxy View

Samsung Galaxy View 是 2015 年出的巨無霸平板 (18″), firmware status 如下:

  • 官方: Android 5.1.1 (security patch 到 2016/02/01)
  • LineageOS 15 (Android 8): 最新的版本是 20184/28, 這應該已經沒在維護了, 而且他還有些大問題一直沒解 (ex: Camera, Ambient Light, …)

請先安裝以下兩個程式

下載 TWRP 以及 Magisk

安裝 TWRP 步驟

  1. 打開 Samsung Galaxy View 的工程模式 (參考 這裡)
  2. 重開機進入 download mode
  3. 執行 ODIN, 把剛才的 twrp 給刷進去, 再重開就可以了

安裝 Magisk 步驟

  1. 把 Magisk-v20.3.zip 複製到 本機\Galaxy View\Internal storage\Download
  2. 重開進入 TWRP, 使用 INSTALL, 把 Magisk 裝上去
  3. 重開, 就可以看到 Magisk 了

Android 改機系列相關文章

HTC U Ultra Root & Magisk

本站搬家到 GitHub 了, 新網址是 https://dennys.github.io/tw/doc/android/htc-u-ultra-root/

注意: 系統刷機有一定的風險, 可能導致手機無法開機和失去保固, 資料還會被清空, 執行前請先三思!!!

HTC U Ultra

HTC U Ultra 是 2017 年出的手機, firmware status 如下:

  • 官方: Android 8 (security patch 到 2018/3/1)
  • LineageOS 17.1 (Android 10)
  • Resurrection Remix, AICP, …: 參考 這裡

Root & RWRP

  1. htc 官方解鎖 http://www.rayzen-dev.com/htc-unlocked-download/
  2. 安裝 htc driver https://drive.google.com/open?id=1sgIbTgW9PKXb9PKQ_PSzJxHkwc5tMV6Z
  3. TWRP
    1. 參考以下兩篇

Magisk

參考: https://izaka.tw/android-magisk-installation-guide/

  1. 用手機從這裡下載 Magisk-v20.3.zip https://forum.xda-developers.com/apps/magisk/official-magisk-v7-universal-systemless-t3473445
  2. 重開進入 TWRP (指令: adb wait-for-device reboot recovery)
  3. 選擇 INSTALL, 路徑選擇 /sdcard/Download
  4. 選擇檔案後, 執行螢幕最下面的 Swipe to confirm Flash
  5. 重開系統

LineageOS

Android 改機系列相關文章