LivedForward 发表于 2019-6-19 19:52

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

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


   这里介绍一种通过java反射的方法暴力修改Dialog父类的一个存储Dialog show状态的属性来对抗这个模块,简要思路如下:
   
   我们在Dialogshow之后,利用反射强行将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

LivedForward 发表于 2019-6-20 09:28

Ono 发表于 2019-6-20 00:51
您好,我最近在研究Xposed时遇到一个问题。我只能Hook public 声明的类,不能Hook 非public声明的类。
我 ...

getDeclaredMethods获取所有方法,逐一遍历暴力反射将方法的属性设置为true,setAccessible方法了解一下

Tsihen 发表于 2021-10-10 22:01

ertcm 发表于 2019-6-20 10:10
攻防一体,那楼主说的这种办法有没有别的方法可以绕过呢
提供一个不太好的方法

Method m = Field.class.getMethod("set", Object.class, Object.class);
XposedBridge.hookMethod(
    ... // 省略一些代码
      // 这个回调函数是 beforeHookedMethod
    Class<?> c = param.args.getClass();
    if (c.isAssignableFrom(Dialog.class)
      && ((Field)param.thisObject).getName().equals("mShowing")
      && ((bool)param.args) == false) {
      param.setResult(void.class);
    }
    ...
);

很久没写JAVA了,如果有语法错误请见谅
(一不小心又挖坟了......)

美国佬啊 发表于 2019-6-19 20:51

厉害啊,大神啊

zmy793 发表于 2019-6-19 22:28

感谢分享,收藏了

runfog 发表于 2019-6-19 22:37

强制取消模块的

gzsklsskszngc 发表于 2019-6-19 23:54

你这,还让不让我好好的用模块了?

莜琴丶AOA 发表于 2019-6-20 00:09

@S先生 过来看看反破解

Ono 发表于 2019-6-20 00:51

您好,我最近在研究Xposed时遇到一个问题。我只能Hook public 声明的类,不能Hook 非public声明的类。
我在这里已经困了很久了,如能看到希望您能解点一二。

a897868168 发表于 2019-6-20 09:11

66666666666

ertcm 发表于 2019-6-20 10:10

攻防一体,那楼主说的这种办法有没有别的方法可以绕过呢
页: [1] 2
查看完整版本: 针对Xposed的对话框强制取消模块的反Hook方法