针对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 Ono 发表于 2019-6-20 00:51
您好,我最近在研究Xposed时遇到一个问题。我只能Hook public 声明的类,不能Hook 非public声明的类。
我 ...
getDeclaredMethods获取所有方法,逐一遍历暴力反射将方法的属性设置为true,setAccessible方法了解一下 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了,如果有语法错误请见谅
(一不小心又挖坟了......) 厉害啊,大神啊 感谢分享,收藏了 强制取消模块的 你这,还让不让我好好的用模块了? @S先生 过来看看反破解 您好,我最近在研究Xposed时遇到一个问题。我只能Hook public 声明的类,不能Hook 非public声明的类。
我在这里已经困了很久了,如能看到希望您能解点一二。 66666666666 攻防一体,那楼主说的这种办法有没有别的方法可以绕过呢
页:
[1]
2