目前 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
至此大功告成
如果有其他疑问欢迎一起讨论