KernelSU 隐藏 Root 实战第三篇:推特 X 打不开?是 Play Integrity 在查岗

KernelSU 隐藏 Root 实战第三篇:推特 X 打不开?是 Play Integrity 在查岗

前两篇我们解决了大麦、淘宝(内核 umount 隐藏)和小红书实名认证(Shamiko 黑名单模式),套路都是「App 查文件痕迹 → 我们藏文件」。但这次推特 X(Twitter)打不开,用的完全是另一套检测机制——Google Play Integrity,查的不是文件,而是设备完整性证书。排查过程有点曲折,记录如下。

症状

  • 点 X 图标「打不开」:进程在跑,Activity 也能拉起,但界面起不来/反复闪退
  • 其他 App 都正常,大麦、淘宝、小红书都好好的
  • 怀疑是 root 原因,但按老套路查 /proc/self/maps/data/adb 可见性都没问题

排查过程

第一步:确认不是闪退

$ pidof com.twitter.android
856
$ dumpsys activity activities | grep topResumedActivity
topResumedActivity=ActivityRecord{... com.twitter.android/com.x.android.main.MainActivity}

进程活着,MainActivity 在前台——不是崩溃,是启动了但被卡住/被拒。dropbox 里也没有 crash 记录。

第二步:抓到真凶——Play Integrity

清空 logcat 后重新启动 X,抓到了关键日志:

08-30 08:56:35.918   856  1070 I PlayCore: StandardIntegrity : Initiate binding to the service.
08-30 08:56:35.934   856  5865 I PlayCore: OnRequestIntegrityTokenCallback : onRequestExpressIntegrityToken

X 调用了 Google Play Integrity API(StandardIntegrity / ExpressIntegrity),向 Google 请求设备完整性令牌。这是 Google 官方的防篡改验证:App 把令牌发给服务端,Google 在服务端判定「这台设备是否被 root/解锁/篡改」。文件藏得再好也没用——这是服务端判定,客户端无从伪造(除非用密钥盒 Keybox 模拟)。

第三步:检查 Play Integrity 防线

KernelSU 方案里对抗 Play Integrity 的模块叫 Tricky Store(和 Shamiko 互补):

  • Shamiko:藏 root 痕迹(文件、挂载、进程)
  • Tricky Store:模拟 Google 的硬件密钥(Keybox),让 Play Integrity 判定「设备未篡改」

检查配置:

$ cat /data/adb/tricky_store/target.txt
com.chinamworld.main
com.coloros.soundrecorder
...
ai.x.grok        ← Grok 在名单里
...

target.txt 是 Tricky Store 的拦截名单——只有列在里面的 App 才会被 Tricky Store 处理(返回模拟的 Keybox 结果)。一眼扫过去:Grok(ai.x.grok)在,X 本体(com.twitter.android)不在

这就解释了为什么 Grok 能用、X 不能用——X 调 Play Integrity 时走了真实环境,Google 判定设备已 root,服务端拒绝放行。

修复

一行搞定:把 X 加进名单。

$ echo "com.twitter.android" >> /data/adb/tricky_store/target.txt
$ grep -n "com.twitter.android" /data/adb/tricky_store/target.txt
129:com.twitter.android

重启 X:

$ cmd activity force-stop com.twitter.android
$ am start -n com.twitter.android/com.x.android.main.MainActivity

进程重新拉起(pid 8659),MainActivity 正常显示,修复完成

踩坑记录

  1. 「打不开」≠闪退:先看进程和 topResumedActivity,别一上来就查崩溃日志。dropbox 无记录 + 进程存活 = 不是 crash。
  2. 类名解析坑:X 的入口是 com.x.android.main.MainActivity(注意是 com.x 不是 com.twitter.android.x),用 am start -n com.twitter.android/.x.android.main.MainActivity 会报 Error type 3。完整类名要写成 com.twitter.android/com.x.android.main.MainActivity
  3. Tricky Store 的 target.txt 是白名单式拦截:新装/更新的 App 如果不在名单里,Play Integrity 就裸奔。建议定期检查,或者把常用 App 都加进去。
  4. Termux 里 am 没有 force-stop:用 cmd activity force-stop 代替。

总结

检测方式 代表 App 对抗手段
文件/挂载检测 大麦、淘宝 KernelSU kernel_umount + Shamiko
maps 注入检测 小红书 Shamiko 黑名单模式(进程内过滤)
Play Integrity 服务端验证 推特 X Tricky Store(Keybox 模拟)

三类手段各有分工:KernelSU 管内核层卸载,Shamiko 管文件层隐藏,Tricky Store 管服务端完整性。三件套齐了,绝大多数检测都能过。

另外提一句:排查时发现 screencapcannot find libmediandk.so 的坑——用 LD_LIBRARY_PATH=/apex/com.android.media/lib64:/system/lib64 前缀即可正常截图,无需修复系统。


系列前作:KernelSU 环境下隐藏 Root 检测实战:大麦、淘宝全部正常打开小红书实名认证”设备不安全”排查实录

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容