news 2026/4/24 0:01:10

根据apk包名动态修改Android品牌与型号

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
根据apk包名动态修改Android品牌与型号

我们在做国外gms项目的过程中,经常会涉及到套MADA信息的情况,但是在套MADA信息后后出现一个问题,三方检测app中检测到的品牌等信息会跟套的一致,这就会导致我们的软件被测试打回,当然修改TextView是种方法,但是不通用,而且会有漏修改的情况 ,那么有没有一种方法实现动态修改品牌信息呢,有的,以下就是博主最近刚发现的,不是自创,纯借花献佛。

修改patch如下:

diff--git a/sys/frameworks/base/core/java/android/app/ContextImpl.java b/sys/frameworks/base/core/java/android/app/ContextImpl.java index 2ba42ecc1b2..e5ecc1cca8e100644---a/sys/frameworks/base/core/java/android/app/ContextImpl.java+++b/sys/frameworks/base/core/java/android/app/ContextImpl.java @@-113,6+113,8@@ import java.io.IOException;import java.io.InputStream;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;+import java.lang.reflect.Field;+import java.lang.reflect.Modifier;import java.nio.ByteOrder;import java.nio.file.Path;import java.util.ArrayList;@@-3479,6+3481,19@@classContextImplextendsContext{opPackageName=mBasePackageName;}}+//add by lyw+//解决微信平板手机不能同时在线问题+if("com.tencent.mm".equals(mBasePackageName)){+modifySystemPropertyField("BRAND","inspur");+modifySystemPropertyField("MODEL","PD5012");+}elseif("com.finalwire.aida64".equals(mBasePackageName)){+modifySystemPropertyField("BRAND","VIVO");+modifySystemPropertyField("MODEL","S17 Pro");+}elseif("flar2.devcheck".equals(mBasePackageName)){+modifySystemPropertyField("BRAND","HUAWEI");+modifySystemPropertyField("MODEL","P30 Pro");+}+//add endmOpPackageName=overrideOpPackageName!=null?overrideOpPackageName:opPackageName;mParams=Objects.requireNonNull(params);@@-3487,6+3502,50@@classContextImplextendsContext{mContentResolver=newApplicationContentResolver(this,mainThread);}+/** + * add by lyw + * + * @param fieldName + * @param newValue + * @return + */+privatebooleanmodifySystemPropertyField(StringfieldName,ObjectnewValue){+try{+Class<?>systemPropertiesClass=android.os.Build.class;+Fieldfield=systemPropertiesClass.getDeclaredField(fieldName);+field.setAccessible(true);+removeFinalModifier(field);+field.set(null,newValue);+ObjectactualValue=field.get(null);+returnnewValue.equals(actualValue);+}catch(Exceptione){+Log.e("Modifier","Failed to modify field",e);+returnfalse;+}+}++/** + * add by lyw + * + * @param field + * @throws Exception + */+privatevoidremoveFinalModifier(Fieldfield)throwsException{+try{+FieldmodifiersField=Field.class.getDeclaredField("modifiers");+modifiersField.setAccessible(true);+modifiersField.setInt(field,field.getModifiers()&~Modifier.FINAL);+}catch(NoSuchFieldExceptione){+try{+FieldaccessFlagsField=Field.class.getDeclaredField("accessFlags");+accessFlagsField.setAccessible(true);+accessFlagsField.setInt(field,field.getModifiers()&~Modifier.FINAL);+}catch(NoSuchFieldExceptionex){+thrownewRuntimeException("Unable to remove final modifier",ex);+}+}+}+private@NonNullAttributionSourcecreateAttributionSource(@NullableStringattributionTag,@NullableAttributionSourcenextAttributionSource,@NullableSet<String>renouncedPermissions){

实现的效果:
因为博主当前项目是接手的同事的代码,系统中已经被同事修改禁止安装AIDA64了,所以无法验证AIDA64,下面附上几款常见检测app验证结果。

DevCheck验证结果:

安兔兔验证结果:

DeviceInfoHW验证结果:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/21 3:36:18

静态网页如何国际化

test.html<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8" /><title>i18next Static</title> </head> <body><!-- 静态 DOM --> <h1 data-i18n"title"></h1>…

作者头像 李华
网站建设 2026/4/18 23:08:54

Anaconda创建环境时指定Python版本

Anaconda创建环境时指定Python版本 在深度学习项目开发中&#xff0c;一个看似简单的操作——“创建虚拟环境”——往往隐藏着影响整个项目成败的关键细节。你是否曾遇到过这样的场景&#xff1a;代码在本地运行正常&#xff0c;换到同事机器上却报错 ModuleNotFoundError&…

作者头像 李华
网站建设 2026/4/21 13:45:16

字节三面被问RAG原理,5分钟就出来了…

大型语言模型&#xff08;LLMs&#xff09;已经成为我们生活和工作的一部分&#xff0c;它们以惊人的多功能性和智能化改变了我们与信息的互动方式。 然而&#xff0c;尽管它们的能力令人印象深刻&#xff0c;但它们并非无懈可击。这些模型可能会产生误导性的 “幻觉”&#xf…

作者头像 李华
网站建设 2026/4/23 16:07:03

使用PyTorch进行金融时间序列预测实战

使用PyTorch进行金融时间序列预测实战 在量化交易与智能投研日益兴起的今天&#xff0c;如何从噪声重重的金融市场中捕捉可预测的模式&#xff0c;成为众多研究者和工程师的核心挑战。股票价格、汇率波动、大宗商品走势等金融时间序列数据&#xff0c;往往表现出高度非线性、强…

作者头像 李华
网站建设 2026/4/18 11:23:43

python 第八章 练习

# 1&#xff09;消息&#xff1a;编写一个名为display_message()的函数&#xff0c;打印一条消息&#xff0c;指出本章的主题是什么。调用这个函数&#xff0c;确认现实的信息正确无误。def display_message():print("This chapter is about functions.")display_mes…

作者头像 李华
网站建设 2026/4/18 1:23:46

Markdown换行与段落控制排版细节

Markdown换行与段落控制排版细节 在技术文档、博客文章或代码仓库的 README 文件中&#xff0c;你是否曾遇到过这样的尴尬&#xff1a;明明写好了文字和图片说明&#xff0c;发布后却发现所有内容挤成一团&#xff1f;图文之间毫无间距&#xff0c;操作步骤连成一片&#xff0c…

作者头像 李华