🎯 一句话总结: 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 解决方案。