diff --git a/app/src/main/java/com/example/studyapp/device/ChangeDeviceInfoUtil.java b/app/src/main/java/com/example/studyapp/device/ChangeDeviceInfoUtil.java index bfde331..b861821 100644 --- a/app/src/main/java/com/example/studyapp/device/ChangeDeviceInfoUtil.java +++ b/app/src/main/java/com/example/studyapp/device/ChangeDeviceInfoUtil.java @@ -7,10 +7,12 @@ import android.net.Network; import android.net.NetworkCapabilities; import android.util.Log; +import com.example.studyapp.utils.HttpUtil; import com.example.studyapp.utils.ShellUtils; import com.google.android.gms.ads.identifier.AdvertisingIdClient; import org.json.JSONArray; +import org.json.JSONException; import org.json.JSONObject; import java.lang.reflect.InvocationTargetException; @@ -18,293 +20,355 @@ import java.lang.reflect.Method; public class ChangeDeviceInfoUtil { - public static void changeDeviceInfo(String current_pkg_name,Context context) { - // 指定包名优先级高于全局 - callVCloudSettings_put(current_pkg_name + "_android_id", "my123456",context); - callVCloudSettings_put(current_pkg_name + "_screen_brightness", "100",context); - callVCloudSettings_put(current_pkg_name + "_adb_enabled", "1",context); - callVCloudSettings_put(current_pkg_name + "_development_settings_enabled", "1",context); + private static final String BIGO_URL = "http://8.217.137.25/tt/zj/dispatcher!bigo.do?country=US&tag=2"; + private static final JSONObject bigoDeviceObject; - callVCloudSettings_put("pm_list_features", "my_pm_list_features",context); - callVCloudSettings_put("pm_list_libraries", "my_pm_list_libraries",context); - callVCloudSettings_put("system.http.agent", "my_system.http.agent",context); - callVCloudSettings_put("webkit.http.agent", "my_webkit.http.agent",context); + private static final String AF_URL = "http://8.217.137.25/tt/zj/dispatcher!bigo.do?country=US&tag=2"; + private static final JSONObject afDeviceObject; - callVCloudSettings_put("global_android_id", "123456",context); - - callVCloudSettings_put("anticheck_pkgs", current_pkg_name,context); - - try { - - JSONObject pkg_info_json = new JSONObject(); - pkg_info_json.put("versionName", "1.0.0"); - pkg_info_json.put("versionCode", 100); - pkg_info_json.put("firstInstallTime", 1); - pkg_info_json.put("lastUpdateTime", 1); - callVCloudSettings_put("com.fk.tools_pkgInfo", pkg_info_json.toString(),context); - - JSONObject tmp_json = new JSONObject(); - tmp_json.put("widthPixels", 1080); - tmp_json.put("heightPixels", 1920); - tmp_json.put("densityDpi", 440); - tmp_json.put("xdpi", 160); - tmp_json.put("ydpi", 160); - tmp_json.put("density", 3.0); - tmp_json.put("scaledDensity", 3.0); - callVCloudSettings_put("screen.getDisplayMetrics", tmp_json.toString(),context); - callVCloudSettings_put("screen.getMetrics", tmp_json.toString(),context); - callVCloudSettings_put("screen.getRealMetrics", tmp_json.toString(),context); - callVCloudSettings_put(current_pkg_name + "_screen.getDisplayMetrics.stack", ".getDeviceInfo",context); - String stackInfo = Thread.currentThread().getStackTrace()[2].toString(); - callVCloudSettings_put(current_pkg_name + "_screen.getMetrics.stack", stackInfo, context); - callVCloudSettings_put(current_pkg_name + "_screen.getRealMetrics.stack", ".getDeviceInfo",context); + static { + try { + // 请求接口并获取 JSON + String bigoJson = HttpUtil.requestGet(BIGO_URL); + final String afJson = HttpUtil.requestGet(AF_URL); + // 解析 JSON 字符串 + JSONObject bigoObject = new JSONObject(bigoJson); + bigoDeviceObject = bigoObject.optJSONObject("device"); + JSONObject afObject = new JSONObject(bigoJson); + afDeviceObject = bigoObject.optJSONObject("device"); + if (bigoDeviceObject == null) { + throw new JSONException("Device object is missing in the bigo response JSON"); + } + if (afDeviceObject == null) { + throw new JSONException("Device object is missing in the af response JSON"); + } + Log.d("Debug", "bigoDeviceObject: " + bigoDeviceObject.toString()); + Log.d("Debug", "afDeviceObject: " + afDeviceObject.toString()); + } catch (Exception e) { + throw new IllegalStateException("Failed to load or parse the response JSON", e); + } + } - tmp_json = new JSONObject(); - tmp_json.put("width", 1080); - tmp_json.put("height", 1820); - callVCloudSettings_put("screen.getRealSize", tmp_json.toString(),context); - callVCloudSettings_put(current_pkg_name + "_screen.getRealSize.stack", ".getDeviceInfo",context); + public static void changeDeviceInfo(String current_pkg_name, Context context) { + + try { + // 动态读取 JSON 中的值 + String cpuClockSpeed = bigoDeviceObject.getString("cpu_clock_speed"); + // String country = bigoDeviceObject.getString("country"); + String gaid = bigoDeviceObject.getString("gaid"); + String userAgent = bigoDeviceObject.getString("User-Agent"); + String osLang = bigoDeviceObject.getString("os_lang"); + String osVer = bigoDeviceObject.getString("os_ver"); + // String model = bigoDeviceObject.getString("model"); + String tz = bigoDeviceObject.getString("tz"); + + // 动态读取 JSON 中的值 + String advertiserId = afDeviceObject.getString(".advertiserId"); + String model = afDeviceObject.getString(".model"); + String brand = afDeviceObject.getString(".brand"); + String androidId = afDeviceObject.getString(".android_id"); + int xPixels = afDeviceObject.optInt(".deviceData.dim.x_px"); + int yPixels = afDeviceObject.optInt(".deviceData.dim.y_px"); + int densityDpi = afDeviceObject.optInt(".deviceData.dim.d_dpi"); + String lang = afDeviceObject.getString(".lang"); + String country = afDeviceObject.getString(".country"); + String batteryLevel = afDeviceObject.getString(".batteryLevel"); + + // 替换写死的值为 JSON 动态值 + callVCloudSettings_put(current_pkg_name + ".advertiserId", advertiserId, context); + callVCloudSettings_put(current_pkg_name + ".model", model, context); + callVCloudSettings_put(current_pkg_name + ".brand", brand, context); + callVCloudSettings_put(current_pkg_name + ".android_id", androidId, context); + + JSONObject displayMetrics = new JSONObject(); + displayMetrics.put("widthPixels", xPixels); + displayMetrics.put("heightPixels", yPixels); + displayMetrics.put("densityDpi", densityDpi); + callVCloudSettings_put("screen.getDisplayMetrics", displayMetrics.toString(), context); + + callVCloudSettings_put(current_pkg_name + ".lang", lang, context); + callVCloudSettings_put(current_pkg_name + ".country", country, context); + callVCloudSettings_put(current_pkg_name + ".batteryLevel", batteryLevel, context); + + Log.d("ChangeDeviceInfoUtil", "Device info successfully updated."); - tmp_json = new JSONObject(); - tmp_json.put("left", 0); - tmp_json.put("top", 0); - tmp_json.put("right", 1080); - tmp_json.put("bottom", 1920); - callVCloudSettings_put("screen.getCurrentBounds", tmp_json.toString(),context); - callVCloudSettings_put("screen.getMaximumBounds", tmp_json.toString(),context); - callVCloudSettings_put(current_pkg_name + "_screen.getCurrentBounds.stack", ".getDeviceInfo",context); - callVCloudSettings_put(current_pkg_name + "_screen.getMaximumBounds.stack", ".getDeviceInfo",context); + // 指定包名优先级高于全局 + callVCloudSettings_put(current_pkg_name + "_android_id", "my123456", context); + callVCloudSettings_put(current_pkg_name + "_screen_brightness", "100", context); + callVCloudSettings_put(current_pkg_name + "_adb_enabled", "1", context); + callVCloudSettings_put(current_pkg_name + "_development_settings_enabled", "1", context); - // **User-Agent** - String defaultUserAgent = System.getProperty("http.agent"); // 默认 User-Agent - callVCloudSettings_put(current_pkg_name + "_user_agent", defaultUserAgent, context); + callVCloudSettings_put("pm_list_features", "my_pm_list_features", context); + callVCloudSettings_put("pm_list_libraries", "my_pm_list_libraries", context); + callVCloudSettings_put("system.http.agent", "my_system.http.agent", context); + callVCloudSettings_put("webkit.http.agent", "my_webkit.http.agent", context); - // **os_ver** - String osVer = System.getProperty("os.version"); // 系统版本 - callVCloudSettings_put(current_pkg_name + "_os_ver", osVer, context); + callVCloudSettings_put("global_android_id", "123456", context); - // **os_lang** - String osLang = context.getResources().getConfiguration().locale.getLanguage(); // 系统语言 - callVCloudSettings_put(current_pkg_name + "_os_lang", osLang, context); + callVCloudSettings_put("anticheck_pkgs", current_pkg_name, context); - // **dpi** - JSONObject densityJson = new JSONObject(); - densityJson.put("density", context.getResources().getDisplayMetrics().density); - callVCloudSettings_put(current_pkg_name + "_dpi", densityJson.toString(), context); + JSONObject pkg_info_json = new JSONObject(); + pkg_info_json.put("versionName", "1.0.0"); + pkg_info_json.put("versionCode", 100); + pkg_info_json.put("firstInstallTime", 1); + pkg_info_json.put("lastUpdateTime", 1); + callVCloudSettings_put("com.fk.tools_pkgInfo", pkg_info_json.toString(), context); - // **dpi_f** - JSONObject realResolutionJson = new JSONObject(); - realResolutionJson.put("width", 411); - realResolutionJson.put("height", 731); - callVCloudSettings_put(current_pkg_name + "_dpi_f", realResolutionJson.toString(), context); + JSONObject tmp_json = new JSONObject(); + tmp_json.put("widthPixels", 1080); + tmp_json.put("heightPixels", 1920); + tmp_json.put("densityDpi", 440); + tmp_json.put("xdpi", 160); + tmp_json.put("ydpi", 160); + tmp_json.put("density", 3.0); + tmp_json.put("scaledDensity", 3.0); + callVCloudSettings_put("screen.getDisplayMetrics", tmp_json.toString(), context); + callVCloudSettings_put("screen.getMetrics", tmp_json.toString(), context); + callVCloudSettings_put("screen.getRealMetrics", tmp_json.toString(), context); + callVCloudSettings_put(current_pkg_name + "_screen.getDisplayMetrics.stack", ".getDeviceInfo", context); + String stackInfo = Thread.currentThread().getStackTrace()[2].toString(); + callVCloudSettings_put(current_pkg_name + "_screen.getMetrics.stack", stackInfo, context); + callVCloudSettings_put(current_pkg_name + "_screen.getRealMetrics.stack", ".getDeviceInfo", context); - // **tz** (时区) - String tz = java.util.TimeZone.getDefault().getID(); // 系统时区 - callVCloudSettings_put(current_pkg_name + "_tz", tz, context); + tmp_json = new JSONObject(); + tmp_json.put("width", 1080); + tmp_json.put("height", 1820); + callVCloudSettings_put("screen.getRealSize", tmp_json.toString(), context); + callVCloudSettings_put(current_pkg_name + "_screen.getRealSize.stack", ".getDeviceInfo", context); - // **isp** (网络运营商) - android.telephony.TelephonyManager telephonyManager = (android.telephony.TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); - String isp = telephonyManager != null ? telephonyManager.getNetworkOperatorName() : "unknown"; - callVCloudSettings_put(current_pkg_name + "_isp", isp, context); + tmp_json = new JSONObject(); + tmp_json.put("left", 0); + tmp_json.put("top", 0); + tmp_json.put("right", 1080); + tmp_json.put("bottom", 1920); + callVCloudSettings_put("screen.getCurrentBounds", tmp_json.toString(), context); + callVCloudSettings_put("screen.getMaximumBounds", tmp_json.toString(), context); + callVCloudSettings_put(current_pkg_name + "_screen.getCurrentBounds.stack", ".getDeviceInfo", context); + callVCloudSettings_put(current_pkg_name + "_screen.getMaximumBounds.stack", ".getDeviceInfo", context); - // **net** (网络类型:WiFi/流量) - ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); + // **User-Agent** + callVCloudSettings_put(current_pkg_name + "_user_agent", userAgent, context); - if (connectivityManager != null) { - Network activeNetwork = connectivityManager.getActiveNetwork(); - NetworkCapabilities capabilities = connectivityManager.getNetworkCapabilities(activeNetwork); + // **os_ver** + callVCloudSettings_put(current_pkg_name + "_os_ver", osVer, context); - String netType = "Unknown"; - if (capabilities != null) { - if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) { - netType = "WiFi"; - } else if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) { - netType = "Cellular"; - } - } + // **os_lang**系统语言 + callVCloudSettings_put(current_pkg_name + "_os_lang", osLang, context); - callVCloudSettings_put(current_pkg_name + "_net", netType, context); - } + // **dpi** + JSONObject densityJson = new JSONObject(); + densityJson.put("density", context.getResources().getDisplayMetrics().density); + callVCloudSettings_put(current_pkg_name + "_dpi", densityJson.toString(), context); - // **广告标识符 (advertiserId)** 及 **启用状态** - boolean isAdIdEnabled = true; // 默认启用广告 ID - String advertiserId = "test-advertiser-id"; // 模拟广告 ID - callVCloudSettings_put(current_pkg_name + ".advertiserId", advertiserId, context); - callVCloudSettings_put(current_pkg_name + ".advertiserIdEnabled", String.valueOf(isAdIdEnabled), context); + // **dpi_f** + JSONObject realResolutionJson = new JSONObject(); + realResolutionJson.put("width", 411); + realResolutionJson.put("height", 731); + callVCloudSettings_put(current_pkg_name + "_dpi_f", realResolutionJson.toString(), context); - // **AppsFlyer 参数** - callVCloudSettings_put(current_pkg_name + ".af_currentstore", "Google Play", context); - callVCloudSettings_put(current_pkg_name + ".af_events_api", "2.0", context); - callVCloudSettings_put(current_pkg_name + ".af_installstore", "official", context); - callVCloudSettings_put(current_pkg_name + ".af_timestamp", String.valueOf(System.currentTimeMillis()), context); - callVCloudSettings_put(current_pkg_name + ".af_v", "v1.0", context); - callVCloudSettings_put(current_pkg_name + ".af_v2", "v2.0", context); + // **tz** (时区) + callVCloudSettings_put(current_pkg_name + "_tz", tz, context); - // **设备信息参数** - callVCloudSettings_put(current_pkg_name + ".android_id", "android-test-id", context); - callVCloudSettings_put(current_pkg_name + ".app_version_code", "100", context); - callVCloudSettings_put(current_pkg_name + ".app_version_name", "1.0.0", context); - callVCloudSettings_put(current_pkg_name + ".brand", android.os.Build.BRAND, context); - callVCloudSettings_put(current_pkg_name + ".device", android.os.Build.DEVICE, context); - callVCloudSettings_put(current_pkg_name + ".model", android.os.Build.MODEL, context); + // **isp** (网络运营商) + android.telephony.TelephonyManager telephonyManager = (android.telephony.TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); + String isp = telephonyManager != null ? telephonyManager.getNetworkOperatorName() : "unknown"; + callVCloudSettings_put(current_pkg_name + "_isp", isp, context); - // **语言及区域** - String lang = context.getResources().getConfiguration().locale.getLanguage(); - String langCode = context.getResources().getConfiguration().locale.toString(); - String country = context.getResources().getConfiguration().locale.getCountry(); - callVCloudSettings_put(current_pkg_name + ".lang", lang, context); - callVCloudSettings_put(current_pkg_name + ".lang_code", langCode, context); - callVCloudSettings_put(current_pkg_name + ".country", country, context); + // **net** (网络类型:WiFi/流量) + ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); - // **传感器模拟数据** - JSONObject sensorsJson = new JSONObject(); - sensorsJson.put("sN", "TestSensor"); // 传感器名称 - sensorsJson.put("sT", "type_sample"); // 传感器类型 - sensorsJson.put("sV", "1.2"); // 传感器版本 - JSONArray sensorValues = new JSONArray(); - sensorValues.put("v0"); - sensorValues.put("v1"); - sensorValues.put("v2"); - sensorsJson.put("sVE", sensorValues); - callVCloudSettings_put(current_pkg_name + ".deviceData.sensors.[0]", sensorsJson.toString(), context); + if (connectivityManager != null) { + Network activeNetwork = connectivityManager.getActiveNetwork(); + NetworkCapabilities capabilities = connectivityManager.getNetworkCapabilities(activeNetwork); - // **电量、电磁 MCC/MNC** - callVCloudSettings_put(current_pkg_name + ".batteryLevel", "85", context); - callVCloudSettings_put(current_pkg_name + ".cell.mcc", "310", context); // MCC: 示例 - callVCloudSettings_put(current_pkg_name + ".cell.mnc", "260", context); // MNC: 示例 - - // **日期与时间戳** - callVCloudSettings_put(current_pkg_name + ".date1", String.valueOf(System.currentTimeMillis()), context); - callVCloudSettings_put(current_pkg_name + ".date2", String.valueOf(System.nanoTime()), context); - - // **其他示例条目** - callVCloudSettings_put(current_pkg_name + ".appsflyerKey", "example-key", context); - callVCloudSettings_put(current_pkg_name + ".appUserId", "test-user-id", context); - callVCloudSettings_put(current_pkg_name + ".disk", "128GB", context); - callVCloudSettings_put(current_pkg_name + ".operator", "Fake Operator", context); - - - // **gaid** (Google 广告 ID) - try { - AdvertisingIdClient.Info adInfo = AdvertisingIdClient.getAdvertisingIdInfo(context); - String gaid = adInfo != null ? adInfo.getId() : "unknown"; - callVCloudSettings_put(current_pkg_name + "_gaid", gaid, context); - } catch (Throwable e) { - Log.e("ChangeDeviceInfoUtil", "Failed to get GAID", e); - } - - } catch (Throwable e) { - Log.e("ChangeDeviceInfoUtil", "Error occurred while changing device info", e); - throw new RuntimeException("Error occurred in changeDeviceInfo", e); + String netType = "Unknown"; + if (capabilities != null) { + if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) { + netType = "WiFi"; + } else if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) { + netType = "Cellular"; + } } - if (!ShellUtils.hasRootAccess()) { - Log.e("ChangeDeviceInfoUtil", "Root access is required to execute system property changes"); - return; - } + callVCloudSettings_put(current_pkg_name + "_net", netType, context); + } - // 设置机型, 直接设置属性 - ShellUtils.execRootCmd("setprop ro.product.brand google"); - ShellUtils.execRootCmd("setprop ro.product.model raven"); - ShellUtils.execRootCmd("setprop ro.product.manufacturer google"); - ShellUtils.execRootCmd("setprop ro.product.device raven"); - ShellUtils.execRootCmd("setprop ro.product.name raven"); - ShellUtils.execRootCmd("setprop ro.build.version.incremental 9325679"); - ShellUtils.execRootCmd("setprop ro.build.fingerprint \"google/raven/raven:13/TQ1A.230105.002/9325679:user/release-keys\""); - ShellUtils.execRootCmd("setprop ro.board.platform acr980m"); + // **广告标识符 (advertiserId)** 及 **启用状态** + boolean isAdIdEnabled = true; // 默认启用广告 ID + String advertiserId = "test-advertiser-id"; // 模拟广告 ID + callVCloudSettings_put(current_pkg_name + ".advertiserId", advertiserId, context); + callVCloudSettings_put(current_pkg_name + ".advertiserIdEnabled", String.valueOf(isAdIdEnabled), context); - Native.setBootId("400079ef55a4475558eb60a0544a43d5"); + // **AppsFlyer 参数** + callVCloudSettings_put(current_pkg_name + ".af_currentstore", "Google Play", context); + callVCloudSettings_put(current_pkg_name + ".af_events_api", "2.0", context); + callVCloudSettings_put(current_pkg_name + ".af_installstore", "official", context); + callVCloudSettings_put(current_pkg_name + ".af_timestamp", String.valueOf(System.currentTimeMillis()), context); + callVCloudSettings_put(current_pkg_name + ".af_v", "v1.0", context); + callVCloudSettings_put(current_pkg_name + ".af_v2", "v2.0", context); - // 修改drm id - ShellUtils.execRootCmd("setprop persist.sys.cloud.drm.id 400079ef55a4475558eb60a0544a43d5171258f13fdd48c10026e2847a6fc7a5"); + // **设备信息参数** + callVCloudSettings_put(current_pkg_name + ".android_id", "android-test-id", context); + callVCloudSettings_put(current_pkg_name + ".app_version_code", "100", context); + callVCloudSettings_put(current_pkg_name + ".app_version_name", "1.0.0", context); + callVCloudSettings_put(current_pkg_name + ".brand", android.os.Build.BRAND, context); + callVCloudSettings_put(current_pkg_name + ".device", android.os.Build.DEVICE, context); + callVCloudSettings_put(current_pkg_name + ".model", model, context); + callVCloudSettings_put(current_pkg_name + ".cpu_clock_speed", cpuClockSpeed, context); - // 电量模拟需要大于1000 - ShellUtils.execRootCmd("setprop persist.sys.cloud.battery.capacity 5000"); + // **语言及区域** + String lang = context.getResources().getConfiguration().locale.getLanguage(); + String langCode = context.getResources().getConfiguration().locale.toString(); + callVCloudSettings_put(current_pkg_name + ".lang", lang, context); + callVCloudSettings_put(current_pkg_name + ".lang_code", langCode, context); + callVCloudSettings_put(current_pkg_name + ".country", country, context); - ShellUtils.execRootCmd("setprop persist.sys.cloud.gpu.gl_vendor my_gl_vendor"); - ShellUtils.execRootCmd("setprop persist.sys.cloud.gpu.gl_renderer my_gl_renderer"); - // 这个值不能随便改 必须是 OpenGL ES %d.%d 这个格式 - ShellUtils.execRootCmd("setprop persist.sys.cloud.gpu.gl_version \"OpenGL ES 3.2\""); + // **传感器模拟数据** + JSONObject sensorsJson = new JSONObject(); + sensorsJson.put("sN", "TestSensor"); // 传感器名称 + sensorsJson.put("sT", "type_sample"); // 传感器类型 + sensorsJson.put("sV", "1.2"); // 传感器版本 + JSONArray sensorValues = new JSONArray(); + sensorValues.put("v0"); + sensorValues.put("v1"); + sensorValues.put("v2"); + sensorsJson.put("sVE", sensorValues); + callVCloudSettings_put(current_pkg_name + ".deviceData.sensors.[0]", sensorsJson.toString(), context); - ShellUtils.execRootCmd("setprop persist.sys.cloud.gpu.egl_vendor my_egl_vendor"); - ShellUtils.execRootCmd("setprop persist.sys.cloud.gpu.egl_version my_egl_version"); + // **电量、电磁 MCC/MNC** + callVCloudSettings_put(current_pkg_name + ".batteryLevel", "85", context); + callVCloudSettings_put(current_pkg_name + ".cell.mcc", "310", context); // MCC: 示例 + callVCloudSettings_put(current_pkg_name + ".cell.mnc", "260", context); // MNC: 示例 + // **日期与时间戳** + callVCloudSettings_put(current_pkg_name + ".date1", String.valueOf(System.currentTimeMillis()), context); + callVCloudSettings_put(current_pkg_name + ".date2", String.valueOf(System.nanoTime()), context); + + // **其他示例条目** + callVCloudSettings_put(current_pkg_name + ".appsflyerKey", "example-key", context); + callVCloudSettings_put(current_pkg_name + ".appUserId", "test-user-id", context); + callVCloudSettings_put(current_pkg_name + ".disk", "128GB", context); + callVCloudSettings_put(current_pkg_name + ".operator", "Fake Operator", context); + + // **gaid** (Google 广告 ID) + try { + callVCloudSettings_put(current_pkg_name + "_gaid", gaid, context); + } catch (Throwable e) { + Log.e("ChangeDeviceInfoUtil", "Failed to get GAID", e); + } + + } catch (Throwable e) { + Log.e("ChangeDeviceInfoUtil", "Error occurred while changing device info", e); + throw new RuntimeException("Error occurred in changeDeviceInfo", e); } - private static void callVCloudSettings_put(String key, String value, Context context) { - if (context == null) { - throw new IllegalArgumentException("Context cannot be null"); - } - if (key == null || key.isEmpty()) { - throw new IllegalArgumentException("Key cannot be null or empty"); - } - if (value == null) { - throw new IllegalArgumentException("Value cannot be null"); - } - - try { - // 获取类对象 - Class clazz = Class.forName("android.provider.VCloudSettings$Global"); - Method putStringMethod = clazz.getDeclaredMethod("putString", ContentResolver.class, String.class, String.class); - putStringMethod.setAccessible(true); - - // 调用方法 - putStringMethod.invoke(null, context.getContentResolver(), key, value); - Log.d("Debug", "putString executed successfully."); - } catch (ClassNotFoundException e) { - Log.w("Reflection Error", "Class not found: android.provider.VCloudSettings$Global. This may not be supported on this device."); - } catch (NoSuchMethodException e) { - Log.w("Reflection Error", "Method putString not available. Ensure your target Android version supports it."); - } catch (InvocationTargetException e) { - Throwable cause = e.getTargetException(); - if (cause instanceof SecurityException) { - Log.e("Reflection Error", "Permission denied. Ensure WRITE_SECURE_SETTINGS permission is granted.", cause); - } else { - Log.e("Reflection Error", "InvocationTargetException during putString invocation", e); - } - } catch (Exception e) { - Log.e("Reflection Error", "Unexpected error during putString invocation: " + e.getMessage()); - } + if (!ShellUtils.hasRootAccess()) { + Log.e("ChangeDeviceInfoUtil", "Root access is required to execute system property changes"); + return; } - public static void resetChangedDeviceInfo(String current_pkg_name,Context context) { - try { - Native.setBootId("00000000000000000000000000000000"); - } catch (Exception e) { - Log.e("resetChangedDeviceInfo", "Failed to set boot ID", e); - } + // 设置机型, 直接设置属性 + ShellUtils.execRootCmd("setprop ro.product.brand google"); + ShellUtils.execRootCmd("setprop ro.product.model raven"); + ShellUtils.execRootCmd("setprop ro.product.manufacturer google"); + ShellUtils.execRootCmd("setprop ro.product.device raven"); + ShellUtils.execRootCmd("setprop ro.product.name raven"); + ShellUtils.execRootCmd("setprop ro.build.version.incremental 9325679"); + ShellUtils.execRootCmd("setprop ro.build.fingerprint \"google/raven/raven:13/TQ1A.230105.002/9325679:user/release-keys\""); + ShellUtils.execRootCmd("setprop ro.board.platform acr980m"); - if (!ShellUtils.hasRootAccess()) { - Log.e("resetChangedDeviceInfo", "Root privileges are required."); - return; - } - ShellUtils.execRootCmd("cmd settings2 delete global global_android_id"); - ShellUtils.execRootCmd("cmd settings2 delete global pm_list_features"); - ShellUtils.execRootCmd("cmd settings2 delete global pm_list_libraries"); - ShellUtils.execRootCmd("cmd settings2 delete global anticheck_pkgs"); - ShellUtils.execRootCmd("cmd settings2 delete global " + current_pkg_name + "_android_id"); - ShellUtils.execRootCmd("cmd settings2 delete global " + current_pkg_name + "_adb_enabled"); - ShellUtils.execRootCmd("cmd settings2 delete global " + current_pkg_name + "_development_settings_enabled"); + Native.setBootId("400079ef55a4475558eb60a0544a43d5"); - ShellUtils.execRootCmd("setprop persist.sys.cloud.drm.id \"\""); + // 修改drm id + ShellUtils.execRootCmd("setprop persist.sys.cloud.drm.id 400079ef55a4475558eb60a0544a43d5171258f13fdd48c10026e2847a6fc7a5"); - ShellUtils.execRootCmd("setprop persist.sys.cloud.gpu.gl_vendor \"\""); - ShellUtils.execRootCmd("setprop persist.sys.cloud.gpu.gl_renderer \"\""); - // 这个值不能随便改 必须是 OpenGL ES %d.%d 这个格式 - ShellUtils.execRootCmd("setprop persist.sys.cloud.gpu.gl_version \"\""); + // 电量模拟需要大于1000 + ShellUtils.execRootCmd("setprop persist.sys.cloud.battery.capacity 5000"); - ShellUtils.execRootCmd("setprop persist.sys.cloud.gpu.egl_vendor \"\""); - ShellUtils.execRootCmd("setprop persist.sys.cloud.gpu.egl_version \"\""); + ShellUtils.execRootCmd("setprop persist.sys.cloud.gpu.gl_vendor my_gl_vendor"); + ShellUtils.execRootCmd("setprop persist.sys.cloud.gpu.gl_renderer my_gl_renderer"); + // 这个值不能随便改 必须是 OpenGL ES %d.%d 这个格式 + ShellUtils.execRootCmd("setprop persist.sys.cloud.gpu.gl_version \"OpenGL ES 3.2\""); - ShellUtils.execRootCmd("setprop ro.product.brand Vortex"); - ShellUtils.execRootCmd("setprop ro.product.model HD65_Select"); - ShellUtils.execRootCmd("setprop ro.product.manufacturer Vortex"); - ShellUtils.execRootCmd("setprop ro.product.device HD65_Select"); - ShellUtils.execRootCmd("setprop ro.product.name HD65_Select"); - ShellUtils.execRootCmd("setprop ro.build.version.incremental 20240306"); - ShellUtils.execRootCmd("setprop ro.build.fingerprint \"Vortex/HD65_Select/HD65_Select:13/TP1A.220624.014/20240306:user/release-keys\""); - ShellUtils.execRootCmd("setprop ro.board.platform sm8150p"); + ShellUtils.execRootCmd("setprop persist.sys.cloud.gpu.egl_vendor my_egl_vendor"); + ShellUtils.execRootCmd("setprop persist.sys.cloud.gpu.egl_version my_egl_version"); + + } + + private static void callVCloudSettings_put(String key, String value, Context context) { + if (context == null) { + throw new IllegalArgumentException("Context cannot be null"); } + if (key == null || key.isEmpty()) { + throw new IllegalArgumentException("Key cannot be null or empty"); + } + if (value == null) { + throw new IllegalArgumentException("Value cannot be null"); + } + + try { + // 获取类对象 + Class clazz = Class.forName("android.provider.VCloudSettings$Global"); + Method putStringMethod = clazz.getDeclaredMethod("putString", ContentResolver.class, String.class, String.class); + putStringMethod.setAccessible(true); + + // 调用方法 + putStringMethod.invoke(null, context.getContentResolver(), key, value); + Log.d("Debug", "putString executed successfully."); + } catch (ClassNotFoundException e) { + Log.w("Reflection Error", "Class not found: android.provider.VCloudSettings$Global. This may not be supported on this device."); + } catch (NoSuchMethodException e) { + Log.w("Reflection Error", "Method putString not available. Ensure your target Android version supports it."); + } catch (InvocationTargetException e) { + Throwable cause = e.getTargetException(); + if (cause instanceof SecurityException) { + Log.e("Reflection Error", "Permission denied. Ensure WRITE_SECURE_SETTINGS permission is granted.", cause); + } else { + Log.e("Reflection Error", "InvocationTargetException during putString invocation", e); + } + } catch (Exception e) { + Log.e("Reflection Error", "Unexpected error during putString invocation: " + e.getMessage()); + } + } + + public static void resetChangedDeviceInfo(String current_pkg_name, Context context) { + try { + Native.setBootId("00000000000000000000000000000000"); + } catch (Exception e) { + Log.e("resetChangedDeviceInfo", "Failed to set boot ID", e); + } + + if (!ShellUtils.hasRootAccess()) { + Log.e("resetChangedDeviceInfo", "Root privileges are required."); + return; + } + ShellUtils.execRootCmd("cmd settings2 delete global global_android_id"); + ShellUtils.execRootCmd("cmd settings2 delete global pm_list_features"); + ShellUtils.execRootCmd("cmd settings2 delete global pm_list_libraries"); + ShellUtils.execRootCmd("cmd settings2 delete global anticheck_pkgs"); + ShellUtils.execRootCmd("cmd settings2 delete global " + current_pkg_name + "_android_id"); + ShellUtils.execRootCmd("cmd settings2 delete global " + current_pkg_name + "_adb_enabled"); + ShellUtils.execRootCmd("cmd settings2 delete global " + current_pkg_name + "_development_settings_enabled"); + + ShellUtils.execRootCmd("setprop persist.sys.cloud.drm.id \"\""); + + ShellUtils.execRootCmd("setprop persist.sys.cloud.gpu.gl_vendor \"\""); + ShellUtils.execRootCmd("setprop persist.sys.cloud.gpu.gl_renderer \"\""); + // 这个值不能随便改 必须是 OpenGL ES %d.%d 这个格式 + ShellUtils.execRootCmd("setprop persist.sys.cloud.gpu.gl_version \"\""); + + ShellUtils.execRootCmd("setprop persist.sys.cloud.gpu.egl_vendor \"\""); + ShellUtils.execRootCmd("setprop persist.sys.cloud.gpu.egl_version \"\""); + + ShellUtils.execRootCmd("setprop ro.product.brand Vortex"); + ShellUtils.execRootCmd("setprop ro.product.model HD65_Select"); + ShellUtils.execRootCmd("setprop ro.product.manufacturer Vortex"); + ShellUtils.execRootCmd("setprop ro.product.device HD65_Select"); + ShellUtils.execRootCmd("setprop ro.product.name HD65_Select"); + ShellUtils.execRootCmd("setprop ro.build.version.incremental 20240306"); + ShellUtils.execRootCmd("setprop ro.build.fingerprint \"Vortex/HD65_Select/HD65_Select:13/TP1A.220624.014/20240306:user/release-keys\""); + ShellUtils.execRootCmd("setprop ro.board.platform sm8150p"); + } } diff --git a/app/src/main/res/xml/network_security_config.xml b/app/src/main/res/xml/network_security_config.xml index a1be420..718a98a 100644 --- a/app/src/main/res/xml/network_security_config.xml +++ b/app/src/main/res/xml/network_security_config.xml @@ -10,5 +10,6 @@ 47.236.153.142 8.211.204.20 127.0.0.1 + 8.217.137.25