feat(spoof): fill absent vbmeta complement props

invalidate_on_error, avb_version, hash_alg, and size are sibling
props of vbmeta.device_state. When device_state is present but
its complements are missing, the partial set is itself a
detection signal. Fill with safe defaults if absent; never
overwrite when present.
This commit is contained in:
Enginex0
2026-05-19 08:03:04 +01:00
parent 58b98fd308
commit bba4a9ebfa
@@ -13,6 +13,14 @@ object BootStateManager {
"ro.boot.vbmeta.device_state" to "locked", "ro.boot.vbmeta.device_state" to "locked",
) )
private val fillIfAbsent =
linkedMapOf(
"ro.boot.vbmeta.invalidate_on_error" to "yes",
"ro.boot.vbmeta.avb_version" to "1.2",
"ro.boot.vbmeta.hash_alg" to "sha256",
"ro.boot.vbmeta.size" to "11904",
)
fun apply() { fun apply() {
for ((name, target) in targets) { for ((name, target) in targets) {
val current = SystemProperties.get(name, "") val current = SystemProperties.get(name, "")
@@ -27,5 +35,14 @@ object BootStateManager {
SystemLogger.info("BootStateManager: setting $name=$target (was: '$current')") SystemLogger.info("BootStateManager: setting $name=$target (was: '$current')")
AndroidDeviceUtils.setProperty(name, target) AndroidDeviceUtils.setProperty(name, target)
} }
for ((name, value) in fillIfAbsent) {
val current = SystemProperties.get(name, "")
if (current.isNotEmpty()) {
SystemLogger.debug("BootStateManager: $name already '$current', skip")
continue
}
SystemLogger.info("BootStateManager: filling absent $name=$value")
AndroidDeviceUtils.setProperty(name, value)
}
} }
} }