1.检测安装包名
1 private static int l(Context context) { 2 int i = 0; 3 PackageManager packageManager = context.getPackageManager(); 4 try { 5 packageManager.getInstallerPackageName("de.robv.android.xposed.installer"); 6 i = 1; 7 } catch (Exception e2) { 8 } 9 try { 10 packageManager.getInstallerPackageName("com.saurik.substrate"); 11 return i | 2; 12 } catch (Exception e3) { 13 return i; 14 } 15 }
2.检测注入框架的类名和函数名称
1private static int v() { 2 StackTraceElement[] stackTrace; 3 int i = 0; 4 try { 5 throw new Exception("detect hook"); 6 } catch (Exception e2) { 7 int i2 = 0; 8 for (StackTraceElement stackTraceElement : e2.getStackTrace()) { 9 if (stackTraceElement.getClassName().equals("de.robv.android.xposed.XposedBridge") && stackTraceElement.getMethodName().equals("main")) { 10 i2 |= 4; 11 } 12 if (stackTraceElement.getClassName().equals("de.robv.android.xposed.XposedBridge") && stackTraceElement.getMethodName().equals("handleHookedMethod")) { 13 i2 |= 8; 14 } 15 if (stackTraceElement.getClassName().equals("com.saurik.substrate.MS$2") && stackTraceElement.getMethodName().equals("invoked")) { 16 i2 |= 16; 17 } 18 if (stackTraceElement.getClassName().equals("com.android.internal.os.ZygoteInit")) { 19 i++; 20 if (i == 2) { 21 i2 |= 32; 22 } 23 } 24 } 25 return i2; 26 } 27}