首页
社区
课程
招聘
未解决 [求助]xposed 配置动态改变hook行为如何免重启实现?
发表于: 2024-1-25 09:55 2958

未解决 [求助]xposed 配置动态改变hook行为如何免重启实现?

2024-1-25 09:55
2958

通过xsharedpreference进行配置读写,在hook时根据配置来判断某些功能是否开启,但是在我的模块里面修改完配置,hook行为没有变更,在宿主app中读到的还是原来的值,用xsharedpreference的监听回调中调用了reload重新加载也不好使,是这个本来就不支持还是我用法有问题呢?看到有模块是支持随时改不用重启宿主app的,wxposed就是

贴下代码

public void setOnSharedPreferenceChangeListener() {    if (null == listener) {
        listener new XSharedPreferences.OnSharedPreferenceChangeListener() {
            @Override
            public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
                LogUtil.PrintLog("onSharedPreferenceChanged"TAG);
                xSharedPreferences.reload();
            }
        };
    }
    if (xSharedPreferences != null) {
        LogUtil.PrintLog("setOnSharedPreferenceChangeListener"TAG);
        xSharedPreferences.registerOnSharedPreferenceChangeListener(listener);
    }
}public ConfigObject getConfigInApp() {
    ConfigObject configObject null;
    try {
        configObject new ConfigObject(
                xSharedPreferences.getBoolean("xxx"false),
                xSharedPreferences.getBoolean("xxxx"false),
                xSharedPreferences.getBoolean("xxxxx"false),
                xSharedPreferences.getFloat("xxxxxx"0f),
                xSharedPreferences.getFloat("xxxxxxx"0f),
                xSharedPreferences.getString("xxxxxxxx"""),
                xSharedPreferences.getBoolean("xxxxxxxx"false)
        );
    } catch (Exception e) {
        Log.i(TAG"getConfigInApp: " + e.getMessage());
    }
    return configObject;
}


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2024-1-30 15:13 被nullpointer1编辑 ,原因: 已解决
收藏
免费 1
支持
分享
最新回复 (14)
雪    币: 163
活跃值: (584)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
xposed没更新了,还能用吗?
2024-1-26 02:40
0
雪    币: 228
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
haseex xposed没更新了,还能用吗?
有lsposed
2024-1-29 11:01
0
雪    币: 1152
活跃值: (1771)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
xsharedpreference我也用不太来,我是直接用宿主app的context new 一个 preference 来读写
2024-1-29 15:31
0
雪    币: 1152
活跃值: (1771)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
ChrQwQ xsharedpreference我也用不太来,我是直接用宿主app的context new 一个 preference 来读写
缺点就是只能在宿主app上下文中访问配置,不能在插件里修改了
2024-1-29 15:31
0
雪    币: 228
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
6
ChrQwQ 缺点就是只能在宿主app上下文中访问配置,不能在插件里修改了
这种实现是不是就是想微x那样的,把自己模块的设置页面也寄生到app的布局上,用app的环境来存取?但是这个不太会,刚学,费了老大劲才搞完,现在就想着怎么优化一下
2024-1-29 16:08
0
雪    币: 1152
活跃值: (1771)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
https://github.com/chr233/PureNGA/blob/main/app/src/main/java/com/chrxw/purenga/hook/PreferencesHook.kt

源码在这里,总之就是用宿主context弹出一个dialog,然后在上面画配置项,跟wx有点一点点像,但是是简化版
2024-1-29 22:48
1
雪    币: 228
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
8
感谢 我去看看
2024-1-30 09:11
0
雪    币: 228
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
9
ChrQwQ https://github.com/chr233/PureNGA/blob/main/app/src/main/java/com/chrxw/purenga/hook/PreferencesHook ...
感谢 我去看看
2024-1-30 09:11
0
雪    币: 228
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
10
我看了下,根据作者自己写的注释,其实是还需要重启配置才能生效的
2024-1-30 09:36
0
雪    币: 228
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
11
ChrQwQ https://github.com/chr233/PureNGA/blob/main/app/src/main/java/com/chrxw/purenga/hook/PreferencesHook ...
好像是跟方式无关的,要调用xposed的某些api实现
2024-1-30 09:41
0
雪    币: 1152
活跃值: (1771)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
nullpointer1 好像是跟方式无关的,要调用xposed的某些api实现
要用XposedAPI的话得在启动的时候保存需要Hook的class,然后根据配置创建hook或者移除hook,比较麻烦,所以就直接重启app了,要做也是可以的,就是应用新的hook前记得移除旧的hook
2024-1-30 13:31
0
雪    币: 228
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
13
ChrQwQ 要用XposedAPI的话得在启动的时候保存需要Hook的class,然后根据配置创建hook或者移除hook,比较麻烦,所以就直接重启app了,要做也是可以的,就是应用新的hook前记得移除旧的ho ...
看了下,chatgpt说让这么搞,保存所有的methodhook,调用unhook再重新hook,感觉是配置是注入的时候就确定了,即使它是可变的,运行时执行的就是注入时的配置,但是不理解
2024-1-30 14:04
0
雪    币: 228
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
14
放弃了
2024-1-30 14:04
0
雪    币: 228
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
15
ChrQwQ 要用XposedAPI的话得在启动的时候保存需要Hook的class,然后根据配置创建hook或者移除hook,比较麻烦,所以就直接重启app了,要做也是可以的,就是应用新的hook前记得移除旧的ho ...
我搞定了,思路没问题的,之前有问题是xsharedpreference无法监听修改,我现在改成每次读都reload,不过不推荐,说是消耗性能很大,在hook方法的回调中读取配置根据配置选择执行不执行就ok了,而不是在loadpackage里面选择hook还是不hook这样只能重启才生效
2024-1-30 15:00
0
游客
登录 | 注册 方可回帖
返回
//