返回列表 发新帖

[教学] 利用Xposed躲过Xposed检测

[复制链接]

39

主题

719

回帖

4221

积分

大学生

Rank: 5Rank: 5

金币
2065
好评
12
信誉
98

MT论坛最佳新人MT论坛帅哥考神MT论坛活跃会员

QQ
发表在  2019-3-6 16:38:12 | 显示全部楼层 | 阅读模式  来自 湖北
本帖最后由 枫少丶夜 于 2019-3-6 16:40 编辑

越来越多的app对xposed进行了检测通过分析了其中部分对xposed检查的代码,希望通过xposed的方式阻止xposed检测达到通用的目的。
一般检查手段有很多,楼主也没分析完,这里列举了几个和处理方式。
1、通过 ClassLoader 的 loadClass 加载XposedHelper 来修改一些局部变量值,阻止hook.
处理方式,通过Hook 类加载修改 加载的类名
1
2
3
4
5
6
7
8
9
10
11
12
13
// 过防止调用loadClass加载 de.robv.android.xposed.
        XposedHelpers.findAndHookMethod(ClassLoader.class, "loadClass", String.class, new XC_MethodHook() {
            @Override
            protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                if(param.args != null && param.args[0] != null && param.args[0].toString().startsWith("de.robv.android.xposed.")){

                    // 改成一个不存在的类
                    param.args[0] = "de.robv.android.xposed.ThTest";
                }

                super.beforeHookedMethod(param);
            }
        });

2、通过 代码抛出一个异常,在堆栈中,查找Xposed相关的内容,进行判定处理方式,通过Hook堆栈获取类名替换的方式进行阻止
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
XposedHelpers.findAndHookMethod(StackTraceElement.class, "getClassName", new XC_MethodHook() {
            @Override
            protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                String result = (String) param.getResult();
                if (result != null){
                    if (result.contains("de.robv.android.xposed.")) {
                        param.setResult("");
                        // Log.i(tag, "替换了,字符串名称 " + result);
                    }else if(result.contains("com.android.internal.os.ZygoteInit")){
                        param.setResult("");
                    }
                }

                super.afterHookedMethod(param);
            }
        });

3、通过读取 shell 命令 /proc/pid(应用进程id)/maps 可以拿到当前上下文的so和jar列表,查找Xposed相关

处理方式,楼主看到大部分多试通过使用 BufferedReader进行读取命令的内容,过滤掉 XposedBridge.jar就好。
1
2
3
4
5
6
7
8
9
10
11
12
13
XposedHelpers.findAndHookMethod(BufferedReader.class, "readLine", new XC_MethodHook() {
            @Override
            protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                String result = (String) param.getResult();
                if(result != null) {
                    if (result.contains("/data/data/de.robv.android.xposed.installer/bin/XposedBridge.jar")) {
                        param.setResult("");new File("").lastModified();
                    }
                }

                super.afterHookedMethod(param);
            }
        });

4、其他,由于Xposed的hook,是通过so修改被hook的方法为native来实现的,所以检测方也可以通过检测方法是否变成了native来达到检测的目的

处理方式,对指定的方法,进行返回正常的值,来达到屏蔽的效果,这里用getDeviceId举例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// 定义全局变量 modify
XposedHelpers.findAndHookMethod(Method.class, "getModifiers", new XC_MethodHook() {
            @Override
            protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                Method method = (Method)param.thisObject;
                String[] array = new String[] { "getDeviceId" };
                String method_name = method.getName();
                if(Arrays.asList(array).contains(method_name)){
                    modify = 0;
                }else{
                    modify = (int)param.getResult();
                }

                super.afterHookedMethod(param);
            }
        });

        XposedHelpers.findAndHookMethod(Modifier.class, "isNative", int.class, new XC_MethodHook() {
            @Override
            protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                param.args[0] = modify;

                super.beforeHookedMethod(param);
            }
        });




回复

使用道具 举报

49

主题

2415

回帖

2万

积分

博士后

Rank: 8Rank: 8

金币
5865
好评
8
信誉
101

MT论坛帅哥考神MT论坛活跃会员挂机大佬

发表于 2019-3-6 16:47:21 来自手机  | 显示全部楼层  来自 河北
感谢楼主还给我留着沙发
回复

使用道具 举报

175

主题

1887

回帖

9020

积分

禁止访问

想象创造无限可能

金币
2604
好评
33
信誉
53

MT论坛帅哥考神MT论坛新人MT论坛活跃会员MT论坛灌水老大MT论坛最佳新人

发表于 2019-3-8 11:38:13 来自手机  | 显示全部楼层  来自 四川
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

39

主题

719

回帖

4221

积分

大学生

Rank: 5Rank: 5

金币
2065
好评
12
信誉
98

MT论坛最佳新人MT论坛帅哥考神MT论坛活跃会员

QQ
发表于 2019-3-8 11:41:58 | 显示全部楼层  来自 湖北

哈哈,,没办法
回复

使用道具 举报

2

主题

184

回帖

744

积分

初中生

Rank: 3Rank: 3

金币
571
好评
0
信誉
100
发表于 2019-4-11 19:31:51 来自手机  | 显示全部楼层  来自 山西
上线了666
回复

使用道具 举报

85

主题

3590

回帖

1万

积分

博士生

校长

Rank: 7Rank: 7Rank: 7

金币
1756
好评
104
信誉
100

MT论坛帅哥MT论坛最佳新人考神MT论坛活跃会员MT论坛新人

发表于 2019-6-26 14:29:30 来自手机  | 显示全部楼层  来自 江西
眼瞎了
回复

使用道具 举报

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