作者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/cn.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