IMEI / MEID 的合成与 Luhn 校验
什么是 IMEI
IMEI(International Mobile Equipment Identity)是移动设备国际身份码,15 位数字,包含 TAC(型号分配码)+ FAC(最终装配码)+ 8 位序列号 + 1 位 Luhn 校验位。
MEID(Mobile Equipment Identifier)是 CDMA 网络设备的标识,14 位字符,结构类似。
Guise 怎么伪装 IMEI
Guise 覆盖的电话 API 入口:
| 方法 | 覆盖 | 说明 |
|---|---|---|
getImei(int) 所有重载 | ✅ | 带卡槽参数的全部入口 |
getPrimaryImei() | ✅ | 主 IMEI |
getDeviceId() | ✅ | 旧版兼容入口 |
| TAC(型号分配码) | ✅ | IMEI 的前 8 位 |
Luhn 校验合成
IMEI 最后一位是 Luhn 校验位。传统改机工具常忽略这一点,填的 IMEI 校验位不对——应用一算校验就知道是假的。
Guise 的合成算法:
- 你填 IMEI 的前 14 位(或一键随机生成)
- Guise 自动按 Luhn 算法计算第 15 位
- 返回完整的、校验正确的 IMEI
双卡设备的注意事项
当前配置为单值——应用从任一卡槽读取都会返回同一个 IMEI。所以双卡设备上:
- IMEI 1 = IMEI 2 = 你配置的值
- 界面会有说明,避免误以为只配置了第一卡槽
一键随机生成规则
随机生成的 IMEI:
- 15 位数字
- 末位 Luhn 校验正确
- TAC 段(前 8 位)在有效范围内
- 整号符合常见平台 IMEI 形态
IMEI 伪装的边界
- Android 10+ 后,普通应用获取 IMEI 需要
READ_PRIVILEGED_PHONE_STATE权限,这是签名级权限,普通应用拿不到。但预装应用、系统应用仍可能读到 - 运营商网络层面的 IMEI 校验 Hook 覆盖不了——那是基站和 SIM 卡层面的事