Xposed那些事儿 — xposed框架的检测和反制

本文深入探讨了抖音如何检测Xposed模块的存在,通过尝试加载Xposed的特定类,检查其静态成员fieldCache、methodCache和constructorCache是否含有hook信息。文章提供了具体的代码示例,展示了如何遍历这些Map来发现可能的Xposed改动。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前看到有人发了关于使用xposed屏蔽抖音检测xposed的思路(https://www.52pojie.cn/thread-684757-1-1.html),贴出了部分伪代码,
但觉抖音写的蛮有意思的,自己对这方面也不是很清楚,毕竟Android我没怎么学习。借这个机会,了解一下。写的不是很清楚,大家多多抱哈啊!~~
整理了一下文档,我发现抖音主要使用了以下的手段检测xposed。


环境:      win10 x64
使用的工具:apkdb & jeb 2.2.7

1.尝试加载xposed的类,如果能加载则表示已经安装了。

XposedHelpers类中存在fieldCache methodCache constructorCache 这三个静态成员,都是hashmap类型,凡是需要被hook的且已经被找到的对象都会被缓存到这三个map里面。
我们通过便利这三个map来找到相关hook信息。
备注:方法a是检测xposed到底改了什么东西存放到a中。抖音似乎会收集相关信息并上报。

    public void b()
    {
        try
        {
            Object localObject = ClassLoader.getSystemClassLoader()
                    .loadClass("de.robv.android.xposed.XposedHelpers").newInstance();
            // 如果加载类失败 则表示当前环境没有xposed 
            if (localObject != null)
            {
                a(localObject, "fieldCache");
                a(localObject, "methodCache");
                a(localObject, "constructorCache");
            }
            return;
        }
        catch (Throwable localThrowable) {}
    }

    private void a(Object arg5, String arg6) {
        try {
            // 从XposedHelpers中读取相关的hook信息
            Field v0_1 = arg5.getClass().getDeclaredField(arg6);
            v0_1.setAccessible(true);
            Set v0_2 = v0_1.get(arg5).keySet();
            if(v0_2 == null) {
                return;
            }
            if(v0_2.isEmpty()) {
                return;
            }
            Iterator v1 = v0_2.iterator();
            // 排除无关紧要的类
            while(v1.hasNext()) {
                Object v0_3 = v1.next();
                if(v0_3 == null) {
                    continue;
                }
                if(((String)v0_3).length() <= 0) {
                    continue;
                }
                if(((String)v0_3).toLowerCase().startsWith("android.support")) {
                    continue;
                }
                

转载于:https://www.cnblogs.com/coffee520/p/9639488.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值