Guise 中文文档 下载 App

Build.* 与 SystemProperties 两条通道的覆盖范围

Java Build.* 层

这是最常用的一层 API,几乎所有应用都会读:

字段Hook 方式备注
Build.BRAND替换字段值品牌
Build.MANUFACTURER替换字段值制造商,留空则不 Hook
Build.MODEL替换字段值型号
Build.DEVICE替换字段值设备代号
Build.PRODUCT替换字段值产品代号
Build.BOARD替换字段值主板代号
Build.HARDWARE替换字段值硬件/CPU 代号
Build.FINGERPRINT自动拼接生成不手动填
Build.ID替换字段值构建 ID
Build.HOST替换字段值构建主机
Build.USER替换字段值构建用户
Build.TIME替换字段值构建时间戳
Build.DISPLAY替换字段值显示名称

Build.VERSION.* 版本号

字段备注
Build.VERSION.RELEASEAndroid 版本号,如 14
Build.VERSION.INCREMENTAL增量版本,如 UP1A.231005.07
Build.VERSION.SECURITY_PATCH安全补丁日期
Build.VERSION.SDK_INT⚠️ 通常取自真机,改了应用会崩

API 级别不能改。应用会根据 SDK_INT 做运行时分支,改成不存在的值会直接崩溃。

SystemProperties 层 — 最容易漏的一层

很多应用和完整性检查根本不读 Java Build 类,而是直接读系统属性。Guise 覆盖 23 个 ro.* 键,包括:

为什么属性层必须同时 Hook

假设你只 Hook 了 Build.MODEL = "Pixel 7",但没 Hook ro.product.model:

只 Hook Java 层、属性层漏了——这是改机模块「半残」最常见的样子。 Guise 两条通道同步覆盖,你改一个字段,两层一起变。

Build.getSerial()

自 Android 8 起 Build.SERIAL 常量恒为 UNKNOWN。真正被调用的是 Build.getSerial() 方法——Guise 专门 Hook 这个入口,返回配置好的序列号。