Compare commits
10 commits
fb7e9bada7
...
49c47fe59e
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
49c47fe59e | ||
|
|
c6a14badbc | ||
|
|
3a5ea0faf2 | ||
|
|
f37c6338e8 | ||
|
|
e4cb78116f | ||
|
|
750a8b7d71 | ||
|
|
c82d044828 | ||
|
|
9e3b852283 | ||
|
|
81934d1186 | ||
|
|
bb72489b5c |
2 changed files with 89 additions and 50 deletions
|
|
@ -634,8 +634,9 @@ int main(int argc, char* argv[]) {
|
|||
LOG(ERROR) << "Device must be userdebug build";
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
#if ALLOW_ADBD_DISABLE_VERITY == 0 // "user" build
|
||||
#if 0
|
||||
// We already use safety net hacks which spoof to green state.
|
||||
// Remove this check completely.
|
||||
if (android::base::GetProperty("ro.boot.verifiedbootstate", "") != "orange") {
|
||||
LOG(ERROR) << "Device must be bootloader unlocked";
|
||||
return EXIT_FAILURE;
|
||||
|
|
|
|||
|
|
@ -879,13 +879,19 @@ static const char *snet_prop_key[] = {
|
|||
"ro.boot.vbmeta.device_state",
|
||||
"ro.boot.verifiedbootstate",
|
||||
"ro.boot.flash.locked",
|
||||
"ro.boot.selinux",
|
||||
"ro.boot.veritymode",
|
||||
"ro.boot.warranty_bit",
|
||||
"ro.warranty_bit",
|
||||
"ro.debuggable",
|
||||
"ro.secure",
|
||||
"ro.bootimage.build.type",
|
||||
"ro.build.type",
|
||||
"ro.system.build.type",
|
||||
"ro.system_ext.build.type",
|
||||
"ro.vendor.build.type",
|
||||
"ro.vendor_dlkm.build.type",
|
||||
"ro.product.build.type",
|
||||
"ro.odm.build.type",
|
||||
"ro.build.keys",
|
||||
"ro.build.tags",
|
||||
"ro.system.build.tags",
|
||||
|
|
@ -893,6 +899,9 @@ static const char *snet_prop_key[] = {
|
|||
"ro.vendor.warranty_bit",
|
||||
"vendor.boot.vbmeta.device_state",
|
||||
"vendor.boot.verifiedbootstate",
|
||||
"sys.oem_unlock_allowed",
|
||||
"ro.adb.secure",
|
||||
"ro.force.debuggable",
|
||||
NULL
|
||||
};
|
||||
|
||||
|
|
@ -900,13 +909,19 @@ static const char *snet_prop_value[] = {
|
|||
"locked", // ro.boot.vbmeta.device_state
|
||||
"green", // ro.boot.verifiedbootstate
|
||||
"1", // ro.boot.flash.locked
|
||||
"enforcing", // ro.boot.selinux
|
||||
"enforcing", // ro.boot.veritymode
|
||||
"0", // ro.boot.warranty_bit
|
||||
"0", // ro.warranty_bit
|
||||
"0", // ro.debuggable
|
||||
"1", // ro.secure
|
||||
"user", // ro.bootimage.build.type
|
||||
"user", // ro.build.type
|
||||
"user", // ro.system.build.type
|
||||
"user", // ro.system_ext.build.type
|
||||
"user", // ro.vendor.build.type
|
||||
"user", // ro.vendor_dlkm.build.type
|
||||
"user", // ro.product.build.type
|
||||
"user", // ro.odm.build.type
|
||||
"release-keys", // ro.build.keys
|
||||
"release-keys", // ro.build.tags
|
||||
"release-keys", // ro.system.build.tags
|
||||
|
|
@ -914,17 +929,46 @@ static const char *snet_prop_value[] = {
|
|||
"0", // ro.vendor.warranty_bit
|
||||
"locked", // vendor.boot.vbmeta.device_state
|
||||
"green", // vendor.boot.verifiedbootstate
|
||||
"0", // sys.oem_unlock_allowed
|
||||
"1", // ro.adb.secure
|
||||
"0", // ro.force.debuggable
|
||||
NULL
|
||||
};
|
||||
|
||||
static void workaround_snet_properties() {
|
||||
std::string build_type = android::base::GetProperty("ro.build.type", "");
|
||||
|
||||
// Bail out if this is recovery, fastbootd, or anything other than a normal boot.
|
||||
// fastbootd, in particular, needs the real values so it can allow flashing on
|
||||
// unlocked bootloaders.
|
||||
if (IsRecoveryMode()) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Exit if eng build
|
||||
if (build_type == "eng") {
|
||||
return;
|
||||
}
|
||||
|
||||
// Weaken property override security to set safetynet props
|
||||
weaken_prop_override_security = true;
|
||||
|
||||
std::string error;
|
||||
LOG(INFO) << "snet: Hiding sensitive props";
|
||||
|
||||
// Hide all sensitive props
|
||||
LOG(INFO) << "snet: Hiding sensitive props";
|
||||
for (int i = 0; snet_prop_key[i]; ++i) {
|
||||
PropertySetNoSocket(snet_prop_key[i], snet_prop_value[i], &error);
|
||||
}
|
||||
|
||||
// Extra pops
|
||||
std::string build_flavor_key = "ro.build.flavor";
|
||||
std::string build_flavor_value = android::base::GetProperty(build_flavor_key, "");
|
||||
build_flavor_value = android::base::StringReplace(build_flavor_value, "userdebug", "user", false);
|
||||
PropertySetNoSocket(build_flavor_key, build_flavor_value, &error);
|
||||
|
||||
// Restore the normal property override security after safetynet props have been set
|
||||
weaken_prop_override_security = false;
|
||||
}
|
||||
|
||||
// If the ro.product.[brand|device|manufacturer|model|name] properties have not been explicitly
|
||||
|
|
@ -1296,9 +1340,6 @@ void PropertyLoadBootDefaults() {
|
|||
}
|
||||
}
|
||||
|
||||
// Weaken property override security during execution of the vendor init extension
|
||||
weaken_prop_override_security = true;
|
||||
|
||||
// Update with vendor-specific property runtime overrides
|
||||
vendor_load_properties();
|
||||
|
||||
|
|
@ -1313,9 +1354,6 @@ void PropertyLoadBootDefaults() {
|
|||
|
||||
// Workaround SafetyNet
|
||||
workaround_snet_properties();
|
||||
|
||||
// Restore the normal property override security after init extension is executed
|
||||
weaken_prop_override_security = false;
|
||||
}
|
||||
|
||||
void PropertyLoadDerivedDefaults() {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue