系統版本:Android 14
手機:Sony Xperia 10 V
Kitsune Magisk版本:R655F6129-kitsune(26401)
Google Play版本:38.7.35
本文Ivon解說2023年,防止APP檢測到Root環境的最新手段,並附上通過Play Integrity(SafetyNet)的方法。不定時更新。
0. Root環境帶來的問題#
Magisk目前仍是主要的Root手段,偶會遇到APP偵測Root環境便不給用的情況,多半是出於安全性考量。
所謂「Root環境偵測」可能包含以下項目:
- 讀取APP列表,偵測Magisk Manager
- Zygisk
- PlayIntegrity或SafetyNet狀態
- TWRP資料夾
- 開發人員模式或ADB啟用狀態
- Bootloader解鎖狀態
不論各路好手推出防止偵測的手段,總有APP能偵測到,從這點也可以看出銀行對資安的重視。
像玉山銀行、行動郵局、花旗銀行、台新銀行這類跟金融有關的APP,就處於攻防最激烈的階段,常常一更新完後,Magisk隱藏Root就失效,接著APP閃退。
Google Play商店一偵測到Root環境也會不給安裝特定APP,顯示「這個應用程式不支援你的裝置」。
自從Magisk Hide從官方Magisk移除之後,使用者就得用其他手段規避Root偵測。
如果不想因為少數APP犧牲整個Root環境,不妨改用「Kitsune Magisk」,再搭配一些模組即可解決上述問題。
Kitsune Magisk,舊稱Magisk Delta,是官方Magisk的修改版,由HuskyDG開發,把Magisk Hide的功能加了回來,並加入一些試驗性程式碼,專門用於躲避Root偵測。
進一步說,Kitsune Magisk可以針對特定APP取消掛載模組,甚或只給特定APP掛載模組。這樣銀行APP就很難偵測到Root環境啦,也不需要Shamiko和Xposed模組介入了。
1. 從現有Magisk安裝切換至Kitsune Magisk#
Kitsune Magisk的原始碼位於 Github。
跟官方版Magisk一樣,Kitsune Magisk可以用修補boot.img
的方式安裝。這裡則是從現有Magisk切換至Kitsune Magisk。
官方Magisk與Kitsune Magisk二者APP可以共存,不過一次只能使用其中一方的版本。
您應該已經裝有Magisk Manager,在設定裡面啟用「隱藏Magisk」,將Magisk Manager重新打包,再新增捷徑到手機桌面
如果有安裝Shamiko模組,請在Magisk Manager選單將其停用或解除安裝。
到 Github下載Kitsune Magisk的
app-release.apk
安裝後開啟,授予Root權限,點選修復執行環境
點選直接安裝,重開機。
重開機後就不要再使用官方版的Magisk Manager了,請改點選Kitsune Magisk的圖示
點選右上角設定,勾選啟用Zygisk,並同樣點選「隱藏Magisk」,將Kitsune Magisk重新打包。
這樣您的桌面應該就會有二個Magisk的APP了,現在Root管理的權限已移交給Kitsune Magisk。
如果想切換回官方版Magisk:開啟官方版Magisk Manager,取得Root權限,點選修復執行環境,重新安裝Magisk。
2. 設定要防止Root偵測的APP#
關閉ADB偵錯,或是將手機開發人員選項整個關掉(有的APP真的會偵測這個)
開啟Kitsune Magisk,勾選Zygisk和MagiskHide
點選Configure MagiskHide,選取要防止root偵測的APP,重開機,完成,不需設定其他模組了。
如果要做得更絕一點:點選Enforce SuList,只給需要的APP掛載Magisk模組。注意此功能可能會導致許多模組失效。
3. 通過Play Integrity檢測的方法#
有時Kitsune Magisk還不夠,針對需要Play Integrity(取代SafetyNet)的APP,得另外安裝模組。
我們將用開源的 YASNAC和Google Play作為檢測Play Integrity是否有通過的證明。
在Magisk Delta勾選「啟用Zygisk」,再刷入 PlayIntegrityFix模組。PlayIntegrityFix對應Google最新的Play Integrity API,可取代Universal SafetyNet fix。
將YASNAC加入至Kitsune Magisk的Magisk Hide列表,重開機。
再開啟YASNAC查看SafetyNet狀態。BASIC模式下確認可以通過,對大多數APP來說已經足夠。
如果Google Play還是偵測到手機有Root,請參考 XDA分享的自訂指紋方法,蒐集舊機指紋(fingerprint),開啟檔案管理員,編輯
/data/adb/pif.json
檔案,將指紋填進去,Play Integrity API模組就會自動修改指紋。
4. 其他可參考的防Root偵測方案#
Reddit的 r/Magisk板是討論Root相關問題的好地方。
我把隱藏Magisk Root狀態的替代方案列在這裡,有些方案會互相衝突:
- Magisk Alpha:跟Kitsune Magisk類似作用的Magisk分支版本,會追蹤使用者,原始碼尚未公開。
- Hide-My-Applist:防止APP讀取應用程式列表,需搭配LSPosed Zygisk使用。
- MagiskHide Props Config:修改props數值的工具。
- Shamiko:依賴Zygisk運作的Maigsk Hide。
此外,還有底層技術跟Magisk不同的Root方案,降低被偵測到Root的機率: