首页
社区
课程
招聘
[求助]xposed HOOK 系统android.os.Build的问题
发表于: 2017-2-9 15:15 10872

[求助]xposed HOOK 系统android.os.Build的问题

2017-2-9 15:15
10872
想要修改android.os.Build类下面的静态变量,但是 不知道怎么hook,试过反射,但是好像不行.代码如下:知道的大大 麻烦说一下.
                findAndHookConstructor(clazz, new Object[] { new XC_MethodHook() {
                        protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                                Log("++++++++> HookMethod_FINGERPRINT");
                                Field FINGERPRINT = Build.class.getDeclaredField("FINGERPRINT");
                                FINGERPRINT.setAccessible(true);
                                FINGERPRINT.set(Build.class, "000");
                        }
                } });

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 3
支持
分享
最新回复 (12)
雪    币: 878
活跃值: (496)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
final
2017-2-9 18:07
0
雪    币: 35
活跃值: (139)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
3
Hook生效时间要晚于Build类的加载,可以修改源码编译或者解压system.img,然后修改build.prop
2017-2-9 18:58
0
雪    币: 12
活跃值: (55)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
这样的话 就不用使用xposed 更改Build的值了?
2017-2-13 09:31
0
雪    币: 12
活跃值: (55)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
Class<?> classBuild = XposedHelpers.findClass("android.os.Build", _classLoader);

                XposedHelpers.setStaticObjectField(classBuild, "类名", "修改的返回值");
2017-2-16 16:50
0
雪    币: 241
活跃值: (231)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
6
XposedHelpers.setStaticObjectField(android.os.Build.class,  "FINGERPRINT",  "your  value");
2017-2-19 16:42
0
雪    币: 105
活跃值: (549)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
  以上都可行的
  XposedHelpers.findField(Build.class,  &quot;BOARD&quot;).set(null,  &quot;your    value&quot;);   
 
  附录:xposed  API
  http://api.xposed.info/reference/packages.html
2017-5-20 14:44
0
雪    币: 754
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
8
上面的方法好像都不行,是更新了吗?
2022-5-3 21:31
0
雪    币: 4
活跃值: (499)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
Field FINGERPRINT = Build.class.getDeclaredField("FINGERPRINT");
FINGERPRINT.setAccessible(true);
modifiers = FINGERPRINT.getClass().getDeclaredField("modifiers");
modifiers.setAccessible(true);
modifiers.setInt(objXField, objXField.getModifiers() & ~Modifier.FINAL);
FINGERPRINT.setAccessible(true);
FINGERPRINT.set(Build.class, "000");
试试这种方法呢
2022-5-3 21:48
0
雪    币: 32
活跃值: (68)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
应该是可以的,但是子进程应该不会生效,估计application每个进程都要执行一遍
2022-7-14 17:06
0
雪    币: 2420
活跃值: (2872)
能力值: ( LV5,RANK:61 )
在线值:
发帖
回帖
粉丝
11
三点水的湫 应该是可以的,但是子进程应该不会生效,估计application每个进程都要执行一遍
不需要,楼上的代码就可以修改了
2022-7-14 19:28
0
雪    币: 32
活跃值: (68)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
斯文这个禽兽 不需要,楼上的代码就可以修改了
我说的子进程有歧义,共同uid级别的,比如单独的service进程,这个应该不能。
2022-7-15 18:01
0
雪    币: 2420
活跃值: (2872)
能力值: ( LV5,RANK:61 )
在线值:
发帖
回帖
粉丝
13
三点水的湫 我说的子进程有歧义,共同uid级别的,比如单独的service进程,这个应该不能。
这个是时机的问题,如果放到activitythread就可以了,在他没创建service之前修改即可
2022-7-15 22:22
0
游客
登录 | 注册 方可回帖
返回
//