一句话总结

平台用来识别云手机的 14 个信号中,9 个可在软件层处理,5 个不行:CPU ABI、硬件密钥库认证、摄像头 HAL 特性、运营商 ASN 与 TEE 存在性。任何使用容器或虚拟机的服务商,这 5 项都永久不通过。

可打补丁的 9 个

  1. Build fingerprint——ro.build.fingerprint、机型、品牌、厂商。设置很容易,但大多数服务商都设错了,因为组合起来并不对应任何真实发布过的 ROM。
  2. Android ID 与 GSF ID——可以改,但只有在永不复用的前提下才有意义。多数服务商在租户之间循环使用。
  3. 广告 ID——设计上就可重置,所以很简单。但如果共享,在平台的设备图谱里依然会被关联。
  4. 已装应用列表——要看起来像一台有人在用的手机,而不是只装了一个应用的干净 AOSP 镜像。
  5. 传感器数值——从"你可以上报任何数值"的角度说可以改,但熵与自相关分析会识破合成数据。
  6. 语言、时区、输入法——容易设置,也容易设错。插法国 SIM 卡、语言是 en-US、输入法是中文,这就是个标记。
  7. 电池与存储状态——每次开机都是 100% 电量、94% 剩余空间,这不是任何人会拥有的手机。
  8. 屏幕分辨率与密度——必须与所声称机型完全一致,包括挖孔几何形状。
  9. Wi-Fi 与蓝牙环境——在任何有人的区域,扫描列表为空都很可疑。

结构性的 5 个

1. CPU ABI

真实安卓手机上报 arm64-v8a。x86 容器上报 x86_64,而无论怎么改属性值,代码实际运行的指令集都不会变——只要加载一个原生库,它就会说实话。

2. 硬件密钥库认证

证书链必须终止于 Google 根证书,私钥必须存放在出厂时写入的安全元件中。软件层没有任何路径能造出来。

3. 摄像头 HAL 特性

传感器物理尺寸、有效阵列、焦距、光圈列表与噪声基底,必须描述一颗真实存在的摄像头。在不存在的摄像头之上做注入层,得到的特性不匹配任何已发售设备。

4. 运营商 ASN

这个 IP 要么属于移动网络运营商,要么不属于。住宅代理能改善,但只有模块里插着真 SIM 卡才能真正解决。

5. TEE 存在性与版本

应用可以直接查询可信执行环境。模拟的 TEE 会上报不一致的版本,或者查询直接失败。

你可以给一个信号打补丁,但你没法给"没有那个硬件"打补丁。

选服务商时该怎么用这份清单

问任何服务商三个问题:宿主机是什么 CPU 架构、Play Integrity 返回什么、IP 是不是移动运营商 ASN。如果答案不是"ARM64 裸金属"、"MEETS_STRONG_INTEGRITY"和"是",那剩下 9 个信号根本不重要——你会栽在真正重要的那 5 个上。