作者mars3712
看板Android
標題[討論] ROOT & Play Integrity 解決方案
時間Sat Sep 7 09:20:23 2024
目前 ROOT 方案大眾所知的大多是 Magisk
這篇文章介紹 Apatch 順便提一下 KernelSU
KernelSU 提供兩種補丁方式
GKI mode (Generic Kernel Image)
LKM mode (Loadable Kernel Module)
前者為替換 kernel image 達到載入 ROOT 權限
後者為植入 module 到 first stage 的 ramdisk
運作原理大概與 Magisk 稍微相似
# KernelSU 支援清單
android12 kernel 5.10.x
android13 kernel 5.10.x
android13 kernel 5.15.x
android14 kernel 5.15.x
android14 kernel 6.1.x
這部分就不著墨太多,有興趣請到 github 查看
https://github.com/tiann/KernelSU
開始進入正文,以下教學使用 Apatch 為範例
https://github.com/bmax121/APatch
Apatch 僅支援 ARM64 系統
Kernel 核心支援 3.18 - 6.1
示範手機 OnePlus Ace 3 (12R)
kernel-5.15.123-android13
https://i.imgur.com/8VnObhO.png
#1 安裝 Apatch manager
commit f6feb6a build (需登入github)
https://reurl.cc/kyypQ3
或是我提供的 mirror
https://www.mediafire.com/file/8qm202ebbc8ngy1
#2 Patch boot.img
https://imgur.com/a/kFVL6MG
#3 刷入 patched boot.img
這部分還要教學嗎 ╮(′~‵〞)╭
#4 輸入 master key 後取得 ROOT 權限
https://i.imgur.com/eXUyfN5.png
至此順利的話就完成 ROOT 部分
這邊稍微提一下 Play Integrity 的淵源
大約是 Android 5 ~ 7 時代引入了 SafetyNet 驗證
這時候還只是單純的驗證系統 properties
屬於基礎性的驗證,而且大多數 APP 不會驗證 SafetyNet
Android 8 之後強化了 bootloader
BL 解鎖後會讓 keymaster 拒絕硬體金鑰驗證
SafetyNet 也就過不了硬體層級的驗證
這部分可以騙過 SafetyNet 讓它以為手機是早期機型
不會強制採用硬體層級驗證,歷史的眼淚如下
https://github.com/Displax/safetynet-fix
好了這兩年 Google 開始放大招了 (╥﹏╥)
Play Integrity 只信任 TEE 環境提供的簽章驗證
並且將 Integrity API 導入到 APP 開發環境
讓開發者於上架 APP 時可以選擇不同等級的驗證
BL 解鎖後的手機只會擁有
Basic Integrity
https://imgur.com/a/FX2lGqt
中國開發者
5ec1cff 提供了一套 ROOT 模組
透過攔截 keystore 交互過程並插入自訂金鑰串
目前只支援
Android 11+
https://github.com/5ec1cff/TrickyStore
手機解鎖狀態將透過 PlayIntegrityFork 修復
https://github.com/osm0sis/PlayIntegrityFork
此篇教學僅基於
TrickyStore /
PlayIntegrityFork
相互配合來達成
Strong Integrity
使用下方兩個 APP 進行測試
# chiteroman/KeyAttestation
https://reurl.cc/YqqDax
# Simple Play Integrity Checker
https://reurl.cc/myypOA
#1 安裝 TrickyStore 1.1.3 模組
https://reurl.cc/eyyp4x
#2 安裝 PlayIntegrityFork v10 模組
https://reurl.cc/Ree2lr
#3 進行一次重新開機後,模組頁面如下
https://i.imgur.com/UkSyMvl.png
#4 由於只需要修復系統 props 環境
採用
Scripts-only 模式再次安裝 PlayIntegrityFork
#4-1 移動至目錄
/data/adb/modules/playintegrityfix
並新增
scripts-only-mode 檔案
https://i.imgur.com/PoGxHnD.png
#4-2 重新安裝 PlayIntegrityFork 並重新開機
https://i.imgur.com/iZMihIc.png
https://i.imgur.com/ePlMglA.png
#5 TrickyStore 內建 AOSP keybox
無法完成硬體級別認證 (Key Attestation)
https://i.imgur.com/43MvOHE.png
#5-1 下載有效的 keybox.xml
https://www.mediafire.com/file/kp3ineqxuruungs
#5-2 移動
keybox.xml 至
/data/adb/tricky_store
https://i.imgur.com/JG4ytod.png
#5-3 再次驗證 Key Attestation
https://i.imgur.com/IBQ4B7j.png
#6 驗證 Play Integrity / SafetyNet
https://imgur.com/a/281HKyO
至此大功告成
如果有其他疑問歡迎一起討論
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.173.137.245 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Android/M.1725672033.A.187.html
※ 編輯: mars3712 (1.173.137.245 臺灣), 09/07/2024 09:26:16
1F:推 KyA: 有試過這樣就可以正常使用Google錢包嗎? 09/07 10:42
2F:→ JustinYeh88: google錢包只看play integrity有沒有達到device以上 09/07 15:21
3F:推 KyA: 應該不只 我現在Strong還是會出現 09/07 15:22
4F:推 dinasore: 感謝大神分享詳盡攻略,請問上述的module在magisk 一樣 09/07 15:24
5F:→ dinasore: 適用嗎? 09/07 15:24
6F:推 snowcreeper: 推用心整理 09/07 15:53
7F:→ JustinYeh88: google play現在有辦法偵測到magisk修補過的boot映像 09/07 16:04
8F:→ JustinYeh88: 檔,所以用magisk是不可能達到strong的,頂多到devic 09/07 16:04
9F:→ JustinYeh88: e 09/07 16:04
10F:→ JustinYeh88: 想要有root同時擁有strong認證,請改用kernelSU或apa 09/07 16:05
11F:→ JustinYeh88: tch 09/07 16:05
12F:推 KyA: 意思是檢測工具當參考不準? 09/07 16:21
13F:→ jamt: 我裝了lsposed又從strong被打回basic... 09/07 16:29
14F:→ jamt: 用chiteroman原版的PIF就可以strong 09/07 17:18
15F:推 haveastar: 推 09/07 17:37
16F:→ mars3712: magisk 可以使用 alpha fork 搭配 shamiko 09/07 17:59
18F:→ clse0190: keybox有版權問題,不能公開分享,會有問題。 09/07 22:19
19F:→ clse0190: 然後trickystore本身就會做bootloader spoof 09/07 22:20
20F:→ clse0190: 用到pifork的理由是因為你是oneplus 解鎖死TEE 09/07 22:21
21F:→ clse0190: 如果用的是KSU,除了pixel應該是不需要用pifork的 09/07 22:27
22F:→ clse0190: 小米系的用ksu不需要pif,只要trickystore就會正常 09/07 22:28
23F:→ clse0190: 如果真的要分享,最好是用2b0a這個被使用比較廣的 09/07 22:32
24F:→ clse0190: 然後有一個很重要的你忘了說 trickstore只支援 09/07 22:53
25F:→ clse0190: framework沒有被改過的 xiaomieu之類的不能支援 09/07 22:54
26F:→ clse0190: framework.jar有調過的很多,原生系統通常能用 09/07 22:55
27F:→ mars3712: to clse0190: 看來你不清楚pifork script only做了甚麼 09/07 23:15
28F:→ mars3712: 事情,也許在你的手機環境third-party rom 或 kernel 09/07 23:15
29F:→ mars3712: 自動避掉了解鎖相關 props/cmdline 才讓你覺得 trickys 09/07 23:15
30F:→ mars3712: tore 會處理 ro. properties 09/07 23:15
31F:→ mars3712: 至於我提供的 keybox 也是在tg群組拿過來用的 09/07 23:15
32F:→ mars3712: 使用人數不多也不容易被察覺 revoke 掉 09/07 23:15
33F:→ mars3712: playintegrityfix 最新版的直接包入 2b0a keybox 09/07 23:15
34F:→ mars3712: 這個取得難度直接為零 甚麼時候被ban都不意外 09/07 23:15
35F:→ mars3712: 再者是xiaomi.eu 三方 rom 要怎麼魔改keystore impl 就 09/07 23:15
36F:→ mars3712: 是它們社群的事情了 祝各位 happy rooting 09/07 23:15
37F:→ clse0190: pifork script only做了甚麼可以看CODE 09/07 23:27
39F:→ clse0190: PIFORK其實在說明就寫過了,需要動的就兩個 09/07 23:34
40F:→ clse0190: spoofProvider spoofProps 設成0就好 09/07 23:35
41F:→ clse0190: 除非完全不碰lsposed相關的東西,不然ZA 或是 shamiko 09/07 23:36
42F:→ clse0190: 你兩個總是要用到一個 把PIF相關的東西刪光對某些設備 09/07 23:37
43F:→ clse0190: 就是不會通過 09/07 23:39
44F:→ clse0190: 然後2b0a就是因為最常用 到現在都沒出事 當然是優先用 09/07 23:40
45F:→ clse0190: keybox現在常見的也就那26個 等2b0a死了再換新的 比較能 09/07 23:42
46F:→ clse0190: 持續久一點 KEYBOX始終是消耗品 而且比起PIF還要少 09/07 23:43
47F:→ clse0190: ts不處理ro沒錯 但是小米系的設備在hyperos下 09/07 23:52
48F:→ clse0190: KSU+TS就能正常通過strong 09/07 23:54
49F:→ mars3712: 會需要用到 zygisk+pifork+custom.pif.json 的情況就是 09/07 23:56
50F:→ mars3712: 原生手機的指紋不在google認證設備裡面 09/07 23:56
51F:→ mars3712: 對 OnePlus Ace 3(12R) 國際版的系統來說就只是很單純 09/07 23:56
52F:→ mars3712: 的修復 BL 解鎖後的 ro. props 再模擬 keybox 而已 09/07 23:56
53F:→ mars3712: 所以 pifork 模組只需要 script only mode 09/07 23:56
54F:→ mars3712: 當然各家手機有不同的玩法 怎麼方便怎麼來囉 09/07 23:56
56F:→ baby0803: jpeg 09/08 00:27
57F:→ mars3712: 沒安裝 trickystore 模組,或是ts模組無效 09/08 00:33
58F:→ baby0803: 不知什麼原因,只要A11的rom root後就不行,但刷A12的ro 09/08 00:42
59F:→ baby0803: m就不會出現這個問題 09/08 00:42
60F:→ baby0803: 只要用magisk做root後,用key這個apk檢測就會出現這問題 09/08 00:44
61F:→ baby0803: ,裝了tricky store也是一樣 09/08 00:44
62F:→ clse0190: TS只支援12以上 11以下的支援是"開發中" 09/08 00:47
64F:→ clse0190: pre-release的RC1理論上支援到10,但是"可能不穩定" 09/08 00:50
66F:→ baby0803: 已經有其他分叉出了支援10跟11的TC 09/08 00:51
67F:→ mars3712: 可以試試 trickystore 1.2.0-RC1 09/08 00:52
69F:→ baby0803: 怪的是出現這個畫面時是還未安裝TC單純用key.apk去看就 09/08 00:53
70F:→ baby0803: 有這問題 09/08 00:53
71F:→ baby0803: 我有另一隻其他型號手機也是A11卻沒這問題 09/08 00:54
72F:推 Arbin: 比較好奇keybox這種東西可以用自己手機的嗎?不然用別人的 09/08 10:05
73F:→ Arbin: 都有遲早被註銷的問題 09/08 10:05
74F:→ Arbin: 還是用自己的也會因為Google偵測手段強化被註銷 09/08 10:06
75F:推 KyA: 我把Google錢包問題解決了 果然不只看Device而已 09/08 15:30
76F:推 stephen2232: 09/09 00:46
77F:推 ec97: 手邊10幾台都改用ap了 面具到後期搞得很躁 09/10 13:01
78F:→ xxx5566xxx: 筆記 09/11 13:29
79F:推 xylophone135: 話說最近richart跟健保又壞了 有人有想法嗎 09/11 14:21
80F:推 xylophone135: 以前Richart改用alpha就好了 09/11 14:29
81F:→ xylophone135: 最近不曉得裝了什麼又偵測到了 09/11 14:29
82F:→ xylophone135: 我看我也跳apatch好了 09/11 14:29
83F:推 cooladam: richart,richart life,健保都正常啊,alpha+shamiko+lsp 09/11 17:43
84F:→ cooladam: osed mod+hma 09/11 17:43
85F:推 sebastian777: 借串問一下,lsposed mod有開富邦會閃退,把lspose 09/11 21:25
86F:→ sebastian777: d mod關閉後重開機就能開富邦,有解嗎?同樓上該裝 09/11 21:25
87F:→ sebastian777: 的都有裝 09/11 21:25
88F:推 JKGOOD: 推 09/11 22:38
89F:→ jamt: 今天在pixel watch 3(Wear OS 5, Android 14)上試裝apatch, 09/11 23:37
90F:→ jamt: 從安裝apk就有問題了,還是回去magisk 09/11 23:37
92F:推 piggy51350: 推 09/12 11:46
93F:→ sam613: 現在能用不表示永遠都能用 09/12 22:15
94F:推 JKGOOD: 不知道哪個步驟做錯,現在連Device 都過不了 09/15 03:56
97F:→ mars3712: to JKGOOD: 手機只安裝tricky store並不會修復系統prop 09/15 19:20
98F:→ mars3712: 請看教學安裝 playintegrityfork 模組 09/15 19:20
100F:→ JKGOOD: Strong 過了,國泰跟Gpay也過了,但是健保不給XD 09/15 20:38
101F:推 JKGOOD: 目前尚不清楚健保快易通偵測的原因,RE瀏覽器、幸運破解 09/15 20:47
102F:→ JKGOOD: 器那類的也都移除了 09/15 20:47
103F:→ glen246: 健保、郵局APP最近更新後就出現ROOT偵測訊息了 09/15 22:23
104F:→ mars3712: apatch 隱藏能力比 kernelsu 還弱,如果手機符合ksu使 09/15 22:26
105F:→ mars3712: 用條件,建議轉換成ksu+shamiko測試看看 09/15 22:26
106F:推 KyA: 健保有加HMA 郵局沒加HMA 這樣都有過 09/15 22:48
107F:推 JKGOOD: APatch有可能像Magisk改名安裝嗎 09/16 01:32
108F:推 JKGOOD: 在Apatch環境下安裝ZygiskNext+Shamiko 健保一樣沒辦法過 09/16 02:05
109F:推 NonsenseKing: 這篇文,版主不 m 嗎?香透了~~~ 09/18 10:18
110F:推 linkt0: 推 keybox.xml 這裡找到的 謝謝 09/19 15:28
111F:推 eric525498: 好久沒玩 root,想知道還有什麼好玩 XD 09/22 16:01
112F:推 KyA: PIF GG 10/23 08:41
113F:→ jamt: 新的一輪大屠殺 10/23 17:10
114F:→ jamt: PIF更新了 10/23 21:20