hiphi: Introduce device and model spoofing

Co-authored-by: Zinadin Zidan <zidan44@pixelexperience.org>
Co-authored-by: TTTT555 <albukerko@gmail.com>
Co-authored-by: Sebastiano Barezzi <barezzisebastiano@gmail.com>
Co-authored-by: luk1337 <priv.luk@gmail.com>
Co-authored-by: sekaiacg <sekaiacg@gmail.com>
Signed-off-by: 7Soldier <reg.fm4@gmail.com>
This commit is contained in:
7Soldier 2022-10-31 01:11:36 +03:00
parent 074c7804b5
commit ecce8592ee
3 changed files with 122 additions and 0 deletions

View file

@ -45,6 +45,10 @@ TARGET_NO_BOOTLOADER := true
# Display # Display
TARGET_SCREEN_DENSITY := 400 TARGET_SCREEN_DENSITY := 400
# Init
TARGET_INIT_VENDOR_LIB := //$(DEVICE_PATH):libinit_hiphi
TARGET_RECOVERY_DEVICE_MODULES := libinit_hiphi
# Kernel # Kernel
BOARD_BOOTIMG_HEADER_VERSION := 4 BOARD_BOOTIMG_HEADER_VERSION := 4
BOARD_MKBOOTIMG_ARGS += --header_version $(BOARD_BOOTIMG_HEADER_VERSION) BOARD_MKBOOTIMG_ARGS += --header_version $(BOARD_BOOTIMG_HEADER_VERSION)

19
libinit/Android.bp Normal file
View file

@ -0,0 +1,19 @@
//
// Copyright (C) 2022 Team Win Recovery Project
//
// SPDX-License-Identifier: Apache-2.0
//
cc_library_static {
name: "libinit_hiphi",
recovery_available: true,
srcs: ["init_hiphi.cpp"],
whole_static_libs: ["libbase"],
include_dirs: [
"system/core/init",
"system/libbase/include"
],
shared_libs: [
"libbase",
],
}

99
libinit/init_hiphi.cpp Normal file
View file

@ -0,0 +1,99 @@
//
// Copyright (C) 2022 Team Win Recovery Project
//
// SPDX-License-Identifier: Apache-2.0
//
#define _REALLY_INCLUDE_SYS__SYSTEM_PROPERTIES_H_
#include <sys/_system_properties.h>
#include <sys/resource.h>
#include <android-base/properties.h>
#include <android-base/logging.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#include "property_service.h"
#include "vendor_init.h"
using android::base::GetProperty;
void property_override(const std::string& name, const std::string& value)
{
size_t valuelen = value.size();
prop_info* pi = (prop_info*) __system_property_find(name.c_str());
if (pi != nullptr) {
__system_property_update(pi, value.c_str(), valuelen);
}
else {
int rc = __system_property_add(name.c_str(), name.size(), value.c_str(), valuelen);
if (rc < 0) {
LOG(ERROR) << "property_set(\"" << name << "\", \"" << value << "\") failed: "
<< "__system_property_add failed";
}
}
}
void load_device_properties(const std::string& description, const std::string& fingerprint, const std::string& device, const std::string& model) {
property_override("ro.build.description", description);
property_override("ro.build.fingerprint", fingerprint);
property_override("ro.build.product", device);
property_override("ro.product.build.fingerprint", fingerprint);
property_override("ro.product.device", device);
property_override("ro.product.name", device);
property_override("ro.product.model", model);
property_override("ro.product.odm.build.fingerprint", fingerprint);
property_override("ro.product.odm.device", device);
property_override("ro.product.odm.name", device);
property_override("ro.product.odm.model", model);
property_override("ro.product.odm_dlkm.build.fingerprint", fingerprint);
property_override("ro.product.odm_dlkm.device", device);
property_override("ro.product.odm_dlkm.name", device);
property_override("ro.product.odm_dlkm.model", model);
property_override("ro.product.system.build.fingerprint", fingerprint);
property_override("ro.product.system.device", device);
property_override("ro.product.system.name", device);
property_override("ro.product.system.model", model);
property_override("ro.product.vendor.build.fingerprint", fingerprint);
property_override("ro.product.vendor.device", device);
property_override("ro.product.vendor.name", device);
property_override("ro.product.vendor.model", model);
property_override("ro.product.vendor_dlkm.build.fingerprint", fingerprint);
property_override("ro.product.vendor_dlkm.device", device);
property_override("ro.product.vendor_dlkm.name", device);
property_override("ro.product.vendor_dlkm.model", model);
property_override("ro.product.product.build.fingerprint", fingerprint);
property_override("ro.product.product.device", device);
property_override("ro.product.product.name", device);
property_override("ro.product.product.model", model);
property_override("ro.product.system_ext.build.fingerprint", fingerprint);
property_override("ro.product.system_ext.device", device);
property_override("ro.product.system_ext.name", device);
property_override("ro.product.system_ext.model", model);
}
void vendor_load_properties() {
const std::string sku = GetProperty("ro.boot.hardware.sku", "");
if (sku == "XT2201-1") {
load_device_properties("hiphi-user 12 S3SHS32.12-42-11-5 bf0951", "motorola/hiphi/hiphi:12/S3SHS32.12-42-11-5/bf0951:user/release-keys", "hiphi", "Motorola Edge 30 Pro");
}
else if (sku == "XT2201-3") {
load_device_properties("hiphi-user 12 S3SHS32.12-42-11-5 bf0951", "motorola/hiphi/hiphi:12/S3SHS32.12-42-11-5/bf0951:user/release-keys", "hiphi", "Motorola Edge Plus (2022)");
}
else if (sku == "XT2201-4") {
load_device_properties("hiphi-user 12 S3SHS32.12-41-4-1 66f58d", "motorola/hiphi/hiphi:12/S3SHS32.12-41-4-1/66f58d:user/release-keys", "hiphi", "Motorola Edge Plus 5G UW");
}
else if (sku == "XT2201-2") {
load_device_properties("hiphic-user 12 S3SC32.7-42-20 02af5", "motorola/hiphic/hiphic:12/S3SC32.7-42-20/02af5:user/release-keys", "hiphic", "Motorola Edge X30");
}
else if (sku == "XT2201-6") {
load_device_properties("hiphid-user 12 S3SF32.35-5-9 37351", "motorola/hiphid/hiphid:12/S3SF32.35-5-9/37351:user/release-keys", "hiphid", "Motorola Edge X30");
}
else {
load_device_properties("hiphic-user 12 S3SC32.7-42-20 02af5", "motorola/hiphic/hiphic:12/S3SC32.7-42-20/02af5:user/release-keys", "hiphic", "Motorola Edge X30");
}
}