feat(spoof): add boot_props_mode Oplus carve-out
Add a boot_props_mode control so global ro.boot.* property spoofing can be tuned per device. BootStateManager reads /data/adb/tricky_store/boot_props_mode (auto/force/disable). In auto, Oplus-family devices (OnePlus/OPPO/realme/Oplus) skip the global ro.boot.* spoof so vendor TEE services such as ultrasonic fingerprint calibration keep working. AndroidDeviceUtils routes the bootKey/bootHash resetprop writes through a setBootProperty() gate honoring the same mode; the forged value is still persisted and returned, so attestation is unaffected. Tradeoff: in auto, skipping ro.boot.* leaves direct system-property boot-state checks truthful on Oplus devices (compatibility over stealth). Latent, not a reported issue.
This commit is contained in:
@@ -114,6 +114,12 @@ boot=no
|
||||
system=2025-10-01
|
||||
```
|
||||
|
||||
### boot_props_mode
|
||||
|
||||
Controls global `ro.boot.*` property spoofing. Values: `auto` (default), `force`, or `disable`.
|
||||
|
||||
In `auto`, Oplus-family devices (OnePlus/OPPO/realme/Oplus) skip boot-state prop spoofing to avoid conflicts with vendor TEE services such as ultrasonic fingerprint calibration. Create `/data/adb/tricky_store/boot_props_mode` with `force` to restore the old behavior, or `disable` to turn it off on any device.
|
||||
|
||||
## Building from source
|
||||
|
||||
You need JDK 21, the Android SDK and NDK 29, Rust (stable) with the `aarch64-linux-android` target, and `cargo-ndk`.
|
||||
|
||||
Reference in New Issue
Block a user