Xposed检测与自定义Xposed
前言:
Xposed检测
1、遍历App安装列表检测
2、自造异常检测堆栈信息。
3、检查关键Java方法是否变为native方法
4、反射XposedHelper类和XposedBridge类
5、检测Xposed相关文件
6、Root检测
7、安全建议
自定义Xposed
一、修改XposedBridge.jar包名
二、修改Xposed相关文件名
三、修改installer包名
前言:
Xposed已经诞生很多年了,用的人多自然检测Xposed的app也多,同样的从Xposed衍生出去的一些自定义的框架也多。
Xposed检测
先对一些常见的检测手段做个概述,这方面的帖子很多,请自行查找资料。
1、遍历App安装列表检测
调用PackageManager的系统API来遍历App安装列表,辨别是否有安装Xposed Installer相关的软件包,比如de.robv.android.xposed.installer
这是最简单的检测,要过这个检测修改installer包名即可,后续内容中给出自定义方案。
2、自造异常检测堆栈信息。
Android系统启动过程中,init进程会去解析init.rc文件启动一系列的服务,其中就有app_process进程,在app_process执行过程中,会设置自身进程名为Zygote,启动com.android.internal.os.ZygoteInit.Main方法
Xposed修改了app_process,会先启动de.robv.android.xposed.XposedBridge.Main方法,再由它去启动com.android.internal.os.ZygoteInit.Main方法,因此堆栈信息中会多出一些内容。
这里分两种堆栈,第一种函数没有被Hook(进程依然是被注入的)情况下
可以看到多了一个de.robv.android.xposed.XposedBridge.Main,要过这个检测就像上图一样,修改XposedBridge.jar包名和类名即可,后续内容中给出自定义方