吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 11487|回复: 14
收起左侧

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

[复制链接]
LivedForward 发表于 2019-6-19 19:52
CM是什么?Crackme是什么?这是什么东西?楼主发的什么?
他们都是一些公开给别人尝试破解的小程序,制作 Crackme 的人可能是程序员,想测试一下自己的软件保护技术,也可能是一位 Cracker,想挑战一下其它 Cracker 的破解实力,也可能是一些正在学习破解的人,自己编一些小程序给自己破解,KeyGenMe是要求别人做出它的 keygen (序号产生器), ReverseMe 要求别人把它的算法做出逆向分析, UnpackMe 是要求别人把它成功脱壳,本版块禁止回复非技术无关水贴。

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

免费评分

参与人数 2吾爱币 +2 热心值 +2 收起 理由
wujinhuangye + 1 + 1 我很赞同!
lsrteam70 + 1 + 1 谢谢@Thanks!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 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
攻防一体,那楼主说的这种办法有没有别的方法可以绕过呢

提供一个不太好的方法
[Java] 纯文本查看 复制代码
Method m = Field.class.getMethod("set", Object.class, Object.class);
XposedBridge.hookMethod(
    ... // 省略一些代码
        // 这个回调函数是 beforeHookedMethod
    Class<?> c = param.args[0].getClass();
    if (c.isAssignableFrom(Dialog.class) 
        && ((Field)param.thisObject).getName().equals("mShowing")
        && ((bool)param.args[0]) == 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先生 过来看看反破解

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
lrv + 1 + 1 这才是对症下药!

查看全部评分

Ono 发表于 2019-6-20 00:51
您好,我最近在研究Xposed时遇到一个问题。我只能Hook public 声明的类,不能Hook 非public声明的类。
我在这里已经困了很久了,如能看到希望您能解点一二。
a897868168 发表于 2019-6-20 09:11
66666666666
ertcm 发表于 2019-6-20 10:10
攻防一体,那楼主说的这种办法有没有别的方法可以绕过呢
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-26 20:40

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表