首页
社区
课程
招聘
[求助] 请问,我想修改android.os.Build.BRAND这个属性,在不重启,不hook的情况有什么方法?直接改android系统源码.
发表于: 2017-11-18 17:56 7948

[求助] 请问,我想修改android.os.Build.BRAND这个属性,在不重启,不hook的情况有什么方法?直接改android系统源码.

2017-11-18 17:56
7948
我现在有android5.1的源码.我现在改android.os.Build.BRAND这个属性,要么是要重启,要么要用xposed等框架.
要么就是用反射方式改掉.但是只是针对本应用.别的应用,获取这个属性,还是原来的值.
这些都不能满足我的要求. 
我希望从源码层改这个属性. 我试过开启一个线程,循环改. 但是在Build这个类开启线程的话,刷完机会开不了机的.
其实不一定真的要改掉,只要外部应用获取Build.BRAND这个值是我指定的值就可以了.
我现在唯一能想到的就是,从jvm改,当用户访问Build.BRAND这个静态变量的时候,应该会提供给jvm Build和BRAND这2个字符串.
然后我就从JVM判断,如果某应用要获取Build的BRAND变量的时候,我就给他返回我指定的值.
但是我不知道具体应该在哪里改,网上资料没有查到,所以只能来论坛求助了.  欢迎各位道友提供方法或相关文章或者其他思路,不胜感激.

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (12)
雪    币: 241
活跃值: (231)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
用全局注入的方式  在每个进程内修改
2017-11-19 08:28
0
雪    币: 161
活跃值: (797)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
ckis 用全局注入的方式 在每个进程内修改
谢谢你提供思路
2017-11-19 10:15
0
雪    币: 9479
活跃值: (757)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
你的想法不现实,android.os.Build是启动时初始化的,以后除了反射(xposed也是反射),没其他办法。
2017-11-19 11:18
0
雪    币: 161
活跃值: (797)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
无边 你的想法不现实,android.os.Build是启动时初始化的,以后除了反射(xposed也是反射),没其他办法。
有没有这种可能,不启动,直接调用初始化代码.这样就不用重启了
2017-11-20 17:43
0
雪    币: 9479
活跃值: (757)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
启动时初始化,就是只能在启动的有效果,以后再调用也没用了,因为类已经生成了。
2017-11-21 20:10
0
雪    币: 6825
活跃值: (1570)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
直接修改

frameworks/base/core/java/android/os/Build.java

原来的代码是

public static final String BRAND= getString("ro.product.brand");


修改成下面的代码

public static final String BRAND= getStringFromFile();


private static String getStringFromFile() {

    String brand = getString("ro.product.brand");

    File file = new File("/data/system/brand.txt");

    if (file.exists()) {

        try {

            FileInputStream fileInputStream = new FileInputStream(file);

            byte[] buffer = new byte[128];

            int ret = fileInputStream.read(buffer);

            if (ret > 0) {

                brand = new String(Arrays.copyOf(buffer, ret));

            }

        } catch (FileNotFoundException e) {

            e.printStackTrace();

        } catch (IOException e) {

            e.printStackTrace();

        }

    }

    return brand;

}

编译生成framework.jar,替换掉系统原来的,需要改Build.BRAND的值就修改/data/system/brand.txt的内容,然后重启
2017-11-21 20:58
0
雪    币: 161
活跃值: (797)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
hiccup 直接修改 frameworks/base/core/java/android/os/Build.java原来的代码是 public static final String BRAND= getS ...
谢谢你,我就是重启这么改的.  主要是想不重启就好了...
2017-11-22 21:14
0
雪    币: 1570
活跃值: (2905)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
9
https://bbs.pediy.com/thread-222293.htm
看下这个是否满足,有root情况下,修改属性是全局性的,有个缺点是重启之后,需要重新修改
2017-11-23 20:55
0
雪    币: 161
活跃值: (797)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
liwugang https://bbs.pediy.com/thread-222293.htm 看下这个是否满足,有root情况下,修改属性是全局性的,有个缺点是重启之后,需要重新修改
这个和https://bbs.pediy.com/thread-215311.htm这篇文章工具,原理是不是都差不多,只能修改getprop返回的内容和利用反射读取SystemProperties的内容,并不能改Build.BRAND这种最终变量的值.
2017-11-26 09:41
0
雪    币: 4
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
改prop就好了呀:
2017-12-11 15:29
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
楼主解决了吗不重启,不用xposed,实现修改手机信息?????https://bbs.pediy.com/thread-215311.htm看了这篇文章试了一下,修改源码后刷入手机,反射调用SystemProperties.set(“ro.product.device”,“Huawei”)  后  需再执行命令  stop;start;   会重启手机(重启时间很短)  ,java层Build.DEVICE就改了!
最后于 2018-6-23 16:09 被blackholes_788325编辑 ,原因:
2018-6-23 15:48
0
雪    币: 197
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
楼主解决了吗不重启,不用xposed,实现修改手机信息?????
2018-11-28 17:17
0
游客
登录 | 注册 方可回帖
返回
//