警告:因為我們無從得知那些專有APP的檢查方式,本文分享的方法不保證能100%隱藏Root,即使你通過Strong Integrity,以及各種模組都用上了,還是可能被APP檢測到Root。
本文Ivon解說防止APP檢測到Android Root環境的最新手段,並附上通過Play Integrity的方法。不定時更新。
測試環境:Sony Xperia 10 V,LineageOS 23 (Android 16),已解鎖Bootloader。

0. Root環境帶來的問題#
Root之後,便會遇到APP偵測Root不給使用,還有無法通過Play Integrity(SafetyNet後繼者)的問題。這多半是開發者出於安全性考量所設下的限制。
所謂「偵測Root環境」可能包含以下項目:
- 讀取APP列表,偵測Magisk Manager或KernelSU Manager或APatch Manager
- Zygisk或LSPosed
- Play Integrity狀態,根據官網資料,這是Google提供的安全性機制。通常解鎖Bootloader + Root後的裝置會顯示為
NO_INTEGRITY。有些APP會看Play Integrity有沒有達到MEETS_DEVICE_INTEGRITY,或者最高安全等級的MEETS_STRONG_INTEGRITY才給使用 - TWRP資料夾
- 開發人員模式或ADB啟用狀態
- Bootloader解鎖狀態
不論各路好手推出防止偵測的手段,總有APP能偵測到,從這點也可以看出銀行對資安的重視。
像Google錢包、玉山銀行、行動郵局、花旗銀行、台新銀行這類跟金融有關的APP,就處於攻防最激烈的階段,常常一更新完後,Magisk隱藏Root就失效,接著APP閃退。

Google Play商店一偵測到Root環境也會不給安裝特定APP,顯示「這個應用程式不支援你的裝置」。
自從Magisk Hide從官方Magisk移除之後,使用者就得用其他手段規避Root偵測。
如果不想因為少數APP犧牲整個Root環境,就得使一些手段防止Root偵測。各種偵測Root的手段,應該都有方式繞過,除非APP連Bootloader有無解鎖都要管,那就很難解決了。
1. 最乾脆的解決方法:不要再用Magisk#
與其用Magisk加上一堆有的沒的隱藏Root的模組,或者用其他Magisk的奇怪fork,不如改用KernelSU或者APatch這類基於Linux核心的Root方案,能夠更好的隱藏Root,並且增加通過Play Integrity的機會。
Ivon必須老實說,這二個方案真的比使用Magisk隱藏Root簡化許多。
KernelSU有自己的模組框架,需要GKI核心,機型要求比Magisk嚴格。APatch則是同時相容Magisk與KernelSU的模組,安裝難度等同Magisk,屬於不能用KernelSU機型的折衷方案。隨著這些社群成熟,許多Magisk模組的作者也把模組移植到這些嶄新的方案上了。
但是!雖然KernelSU與APatch能夠更簡單的隱藏Root,不代表能通過Play Integrity,依然需要安裝Play Integrity Fix模組繞過。
如果你依然堅持要用Magisk:請用Kitsune Magisk隱藏Root。點選展開
Kitsune Magisk,舊稱Magisk Delta,是官方Magisk的修改版(fork),最初由HuskyDG開發,把Magisk Hide的功能加了回來,並加入一些試驗性程式碼,專門用於躲避Root偵測。

進一步說,Kitsune Magisk可以針對特定APP取消掛載模組,甚或只給特定APP掛載模組。這樣銀行APP就很難偵測到Root環境啦,也不需要Shamiko和Xposed模組介入了。
順帶一提,有一個Magisk Alpha專案跟Kitsune Magisk作用類似,不過會追蹤使用者,且封閉原始碼。
如果已經裝有Magisk,請先將其解除安裝。最簡單的方法是用電腦fastboot刷入ROM未修改過的boot.img,這樣Magisk就會消失。再移除Magisk Manager。
到Github下載Kitsune Magisk的
app-release.apk,安裝Kitsune Magisk Manager。接著,跟官方版Magisk一樣的作法,將手機ROM的boot.img交給Kitsune Magisk Manager修補,再使用fastboot刷入修補過的boot.img。重開機。
安裝後可能要點選修復執行環境,重開機。

點選右上角設定,勾選啟用Zygisk,並同樣點選「隱藏Magisk」,將Kitsune Magisk重新打包。

開啟Kitsune Magisk,勾選Zygisk和MagiskHide

然後設定要防止Root偵測的APP,點選Configure MagiskHide,選取要防止root偵測的APP,重開機,完成,不需設定其他模組了。如果要做得更絕一點:點選Enforce SuList,只給需要的APP掛載Magisk模組。注意此功能可能會導致許多模組失效。

2. 通過Play Integrity的步驟#
通過Play Integrity的關鍵是紀載金鑰的keybox.xml檔案。撰文當下,開源社群研究出來的最簡單方法是使用「Play Integrity Fix Inject」,此模組會自動下載通過認證的keybox.xml並套用。由於keybox.xml可能隨時會被Google抓到後撤銷,因此需要定期更新新的keybox.xml。
- 這個模組需要Zygisk。請刷獨立的Zygisk Next模組,這個模組兼具隱藏自身Zygisk的功能。到Github Releases下載.zip檔案並刷入。重開機。
註解:Zygisk Next的原始碼並沒有開源。你可以考慮改刷ReZygisk取得完全開源的實作版本。
- 刷入Tricky Store模組,這個模組會修改Android Key Attestation機制。到Github Releases下載.zip檔案並刷入。重開機。
註解:因為太多人濫用,所以Tricky Store原作者停止開源了。你可以考慮改刷Tricky Store OSS。
刷入Tricky Addon模組,補充target.txt。到Github Releases下載.zip檔案並刷入,重開機。
刷入Play Integrity Fix Inject。到Github Releases下載.zip檔案並刷入。重開機。
在模組管理界面,開啟Tricky Store的網頁界面,點右上角,全選APP,按下保存。

點右上角,密鑰 → 設置有效密鑰

點右上角,安全補丁 → 獲取安全補丁日期,按下保存

在模組管理界面,開啟Play Integrity Fix Inject的網頁界面,點選左上角的Fetch,取得一組keybox。

嘗試隱藏Root權限管理器的APP本身,偽裝為其他套件,或者使用Hide-My-Applist禁止特定APP讀取APP列表。
3. 查看是否有通過Play Integrity#
我們將用開源的Simple Play Integrity Checker和Google Play本身作為檢測Play Integrity是否有通過的證明。
開啟Simple Play Integrity Checker,點選check查看Play Integrity狀態。有了
MEETS_DEVICE_INTEGRITY以上等級的話,對大多數APP來說已經足夠。當然有MEETS_STRONG_INTEGRITY更好。
開啟Google Play,點右上角設定 → 關於,在Play商店版本點七下,就會出現開發人員選項。
開啟Google Play,點右上角設定 → 開發人員選項 → Play Integrity,點選檢查完整性,有出現
MEETS_DEVICE_INTEGRITY以上等級的話就是成功了。
以上步驟確認完成之後,開啟系統設定,找到Play商店,點選清除應用程式資料。這樣Play商店才會讓你下載需要Play Integrity的APP。
其他可參考的防Root偵測方案#
Reddit的r/Magisk板是討論Root相關問題的好地方。
我把隱藏Magisk Root狀態的替代方案列在這裡,有些方案會互相衝突:
- Zygisk Assistant:隱藏Root的開源工具,類似Shamiko。
- Hide-My-Applist:防止APP讀取應用程式列表偵測Root,需搭配LSPosed Zygisk使用。