针对Xposed的对话框强制取消模块的反Hook方法

Xposed框架有一个模块:对话框强制取消
     这个模块主要就是对Dialog对象的setCanceledOnTouchOutside(boolean b)和setCancelable(boolean b)这两个方法进行Hook,
使其失效.


   这里介绍一种通过java反射的方法暴力修改Dialog父类的一个存储Dialog show状态的属性来对抗这个模块,简要思路如下:
   
   我们在Dialog  show之后,利用反射强行将dialog的父类的mShowing(对话框展示状态)
                        属性强行设置为false,这样模块Hook上述两种方法也无济于事了.
                try
               {
                java.lang.reflect.Field field = dialog
                        .getClass().getSuperclass()
                        .getDeclaredField("mShowing");
                field.setAccessible(true);
                field.set(dialog, false);
            } catch (Exception e)
                        {
                e.printStackTrace();
            }


   需要dismiss对话框的时候调用: field.set(dialog, true);再dismiss即可


   Demo下载地址:链接:https://pan.baidu.com/s/16XL9uyLAl06TpNkuEkDvSA 提取码:o049

THE END
喜欢就支持以下吧
点赞0
分享
评论 抢沙发
管埋员的头像-小北的自留地

昵称

取消
昵称