检测xposed框架实现 5年前

代码工具
566
检测xposed框架实现

1.检测安装包名

private static int l(Context context) {
        int i = 0;
        PackageManager packageManager = context.getPackageManager();
        try {
            packageManager.getInstallerPackageName("de.robv.android.xposed.installer");
            i = 1;
        } catch (Exception e2) {
        }
        try {
            packageManager.getInstallerPackageName("com.saurik.substrate");
            return i | 2;
        } catch (Exception e3) {
            return i;
        }
    }

2.检测注入框架的类名和函数名称

private static int v() {
    StackTraceElement[] stackTrace;
    int i = 0;
    try {
        throw new Exception("detect hook");
    } catch (Exception e2) {
        int i2 = 0;
        for (StackTraceElement stackTraceElement : e2.getStackTrace()) {
            if (stackTraceElement.getClassName().equals("de.robv.android.xposed.XposedBridge") && stackTraceElement.getMethodName().equals("main")) {
                i2 |= 4;
            }
            if (stackTraceElement.getClassName().equals("de.robv.android.xposed.XposedBridge") && stackTraceElement.getMethodName().equals("handleHookedMethod")) {
                i2 |= 8;
            }
            if (stackTraceElement.getClassName().equals("com.saurik.substrate.MS$2") && stackTraceElement.getMethodName().equals("invoked")) {
                i2 |= 16;
            }
            if (stackTraceElement.getClassName().equals("com.android.internal.os.ZygoteInit")) {
                i++;
                if (i == 2) {
                    i2 |= 32;
                }
            }
        }
        return i2;
    }
}
image
Headwinds
什么叫忍者?学会忍耐的人就叫忍者。
5
发布数
1
关注者
10843
累计阅读

热门教程文档

Linux
51小节
Golang
23小节
CSS
33小节
Dart
35小节
Swift
54小节
广告