🎯 一句话总结: PixelIMS 是一个开源 Android 应用,通过 Instrumentation 框架绕过 Google 运营商白名单,无需 Root 即可在 Pixel 设备上启用 5G、VoLTE、VoWiFi、VoNR 等全部 IMS 特性。

PixelIMS 架构概览 图 1:PixelIMS 整体架构——Shizuku 提供非 Root 权限,PixelIMS 通过 Instrumentation 框架修改运营商配置


📌 项目概览

项目参数
项目名称PixelIMS
开发语言Java
最低系统Android 12 (API 31)
支持设备Google Pixel 6 及以上(Tensor 芯片)
核心依赖Shizuku v13+
Root 要求❌ 无需
开源协议遵循上游 vvb2060/TurboIMS 相关许可

功能清单

功能说明
5G NR (NSA/SA)非独立组网与独立组网全部支持
VoLTE4G 高清语音通话
VoWiFiWiFi 环境下的语音通话
VoNR5G 网络上的语音通话
视频通话 (VT)IMS 视频呼叫
跨 SIM 通话多 SIM 卡场景覆盖
UT 补充业务呼叫等待、呼叫转移等

🔍 问题背景

Google 运营商白名单机制

Google Pixel 设备的调制解调器固件中维护一份运营商白名单(Carrier Whitelist)。如果当地运营商未被 Google 列入批准名单,Pixel 会拒绝连接 5G 网络,同时隐藏 VoLTE 设置选项。即使运营商已经在物理上部署了 5G 基站,用户仍然无法使用。

传统解决方案如刷入修改版固件或使用 Magisk 模块都需要 Root 权限,这会带来安全风险和保修失效的问题。

绕过技术演进时间线

技术演进时间线 图 2:绕过技术从 ADB 直接调用 → TurboIMS Root 方案 → CVE 补丁封堵 → Instrumentation 绕过 的演进路径


⚙️ 核心绕过原理

Instrumentation 框架绕过

2025 年 10 月,Google 修复了 CVE-2025-48617,封堵了从 ADB Shell 直接调用 CarrierConfigManager.overrideConfig() 的路径。PixelIMS 改用 Android 的 Instrumentation 框架进行间接调用:

绕过流程图 图 3:Instrumentation 绕过流程——从 Shizuku 到最终调用 overrideConfig 的完整链路

整个流程可以概括为:

  1. ShizukuProvider 接收 Shizuku 框架返回的 Binder 对象
  2. 调用 IActivityManager.startInstrumentation(),携带 INSTR_FLAG_NO_RESTART 标志和自身 PID
  3. 系统以 Instrumentation 上下文启动 PrivilegedProcess(继承自 Instrumentation
  4. PrivilegedProcess 内部调用 startDelegateShellPermissionIdentity() 提升当前 UID 权限
  5. 调用 CarrierConfigManager.overrideConfig() 修改运营商配置——系统在 Instrumentation 上下文中不会触发 CVE 补丁的检测
  6. 释放委托权限,正常退出

安全门控PrivilegedProcess 会校验传入 PID 与自身 PID 一致,防止被恶意应用滥用。

canPersistent() — 运行时补丁级别检测

不同 Android 补丁级别对持久化配置覆盖有不同的限制策略。PixelIMS 在运行时探测 com.android.phone.CarrierConfigLoader 类的私有方法来判断当前环境:

系统状态isSystemApp()isSdkSandboxUidInternal()持久化覆盖
旧版系统不存在不存在✅ 安全
中间版本存在不存在✅ 安全
最新补丁存在存在❌ 被阻止,改用会话模式

showVoLTE() — IMS 配置层绕过

部分运营商在 CarrierConfigManager 之上还有第二层 IMS 配置保护。即使运营商配置被成功覆盖,KEY_VOIMS_OPT_IN_STATUS 标志可能仍被设为禁用。PixelIMS 通过直接调用 ITelephony.setImsProvisioningInt() 绕过这层限制——这是 TurboIMS 从未覆盖的层面。

版本指纹机制

应用将 vvb2060_config_version = VERSION_CODE 写入运营商配置包。下次 Shizuku 连接时读取该键值,如果配置已是最新版本则自动跳过重新应用,避免不必要的重复操作。


📱 使用教程

前提条件

要求说明
设备Google Pixel 6 及以上(Tensor 芯片)
系统版本Android 12 (API 31) 及以上
Shizukuv13+,从 Google Play 免费安装

第一步:启用无线调试

  1. 打开 设置 → 关于手机
  2. 连续点击 版本号 7 次,激活开发者选项
  3. 进入 设置 → 系统 → 开发者选项
  4. 启用 无线调试

第二步:配置 Shizuku

  1. 从 Google Play 安装 Shizuku
  2. 打开 Shizuku 应用
  3. 点击 「无线调试配对」
  4. 按照配对向导完成设置(全程无需电脑
  5. 确认 Shizuku 状态显示为 "Running"

第三步:安装 PixelIMS

  1. 安装 PixelIMS.apk
  2. 打开应用
  3. 首次启动时授予 Shizuku 访问权限
  4. Shizuku 状态应显示 ✅ Ready
  5. 根据需要关闭不需要的功能开关
  6. 点击 「Apply to All SIMs」
  7. 成功后点击 「Open Network Settings」
  8. 在 SIM 卡设置中启用 5G 和 VoLTE 选项

第四步:重启后操作

重启后检查

每次重启后,无线调试会自动关闭:

  1. 前往 设置 → 开发者选项 → 无线调试 → 重新打开
  2. 打开 Shizuku → 点击 Start
  3. 打开 PixelIMS → 点击 Apply

如果显示 Persistent mode: Yes,配置会在后续重启中自动保持,无需重复操作。


📊 三代工具对比

特性vvb2060 v3.1TurboIMS v3.0PixelIMS v1.0
2025 年 10 月补丁绕过❌ 已失效
图形界面❌ 无头模式
功能独立开关
按 SIM 单独选择
中英文语言切换
showVoLTE() IMS 配置层
canPersistent() 补丁检测
版本指纹跳过机制
UI 显示配置状态✅ 新增
UI 显示持久化状态✅ 新增
Shizuku 连接自动应用
SDK 沙箱支持 (Android 14+)
最低 Android 版本API 34API 33API 31

从对比表可以看出,PixelIMS 在保持与 v3.1 相同绕过能力的同时,填补了 TurboIMS 在最新补丁下完全失效的空白,并以图形界面大幅降低了使用门槛。


🔧 源码构建

环境要求

依赖版本
Android StudioHedgehog (2024.1.1)+
JDK17
Android SDKAPI 35

构建步骤

# 1. 克隆仓库
git clone https://github.com/VinujaHerath/PixelIMS.git
cd PixelIMS

# 2. 构建(首次自动下载 Gradle 和依赖)
./gradlew assembleRelease

# 3. 签名
keytool -genkey -v -keystore my-release-key.jks \
    -keyalg RSA -keysize 2048 -validity 10000 \
    -alias my-key-alias

zipalign -v 4 app/build/outputs/apk/release/app-release-unsigned.apk aligned.apk
apksigner sign --ks my-release-key.jks --out PixelIMS.apk aligned.apk

# 4. 安装
adb install PixelIMS.apk

⚠️ 常见问题

Shizuku 重启后显示 "Not Running"?

无线调试在重启后默认关闭。前往开发者选项重新启用,然后打开 Shizuku → Start。

点击 Apply 后仍然显示 "Not yet applied"?

Instrumentation Runner 需要几秒钟完成。等待 5 秒后下拉刷新。如果仍然失败,强制停止应用后重试。

SIM 设置中没有出现 5G 选项?

确认运营商套餐包含 5G 服务且你处于覆盖范围内。以斯里兰卡为例,截至 2026 年 5 月,Dialog 在科伦坡、康提、加勒等主要城区提供 5G 覆盖。

出现 SecurityException?

说明系统补丁已封堵当前绕过路径。关注 GitHub Issues 查看是否有新的绕过方法发布。


🏗️ 项目结构

PixelIMS/
├── app/
│   ├── build.gradle.kts
│   ├── proguard-rules.pro
│   └── src/main/
│       ├── AndroidManifest.xml
│       └── java/io/github/pixelims/
│           ├── MainActivity.java        # 主界面
│           ├── SplashActivity.java      # 启动屏
│           ├── PrivilegedProcess.java    # 核心绕过引擎
│           ├── ShizukuProvider.java      # Shizuku 集成
│           └── LocaleHelper.java        # 多语言切换
│       └── res/
│           ├── layout/
│           └── values[-zh]/
├── stub/                                 # Hidden API 存根
│   ├── build.gradle.kts
│   └── src/main/java/
│       ├── android/app/
│       │   └── IActivityManager.java    # INSTR_FLAG 常量
│       └── com/android/internal/telephony/
│           └── ITelephony.java
├── build.gradle.kts
├── settings.gradle.kts
└── README.md

🎯 总结

PixelIMS 的核心价值在于:在不 Root、不刷机的前提下,通过 Android 框架层面的 Instrumentation 绕过机制,让被 Google 白名单排除在外的 Pixel 用户也能享受完整的 5G 和 IMS 体验。 结合 Shizuku 的免 Root 权限提升和 vvb2060 的成熟绕过引擎,再加上图形化的操作界面,使得这项原本需要深度技术背景的操作变得触手可及。

对于经常前往斯里兰卡等运营商未被官方支持地区的用户来说,这可能是目前唯一可行的 Pixel 5G 解决方案。