什么是root
拥有最高权限的账户就叫root。
获取root的方式
- 提权
利用Linux漏洞:adbd提权
全root: 有权限修改系统文件
半root(需解锁systemloac):没有权限修改系统文件
半root直接刷magisk可实现全root
- 将su文件放到/system/bin或者/system/xbin目录
执行su命令时,系统会去判断当前的uid、pid是否是管理员用户,如果是的话直接给true。 - 执行
检测root
检测su文件是否在/system/bin 或者 /system/xbin目录下存在
检测设备是否启动debugger模式
1
2
3
4
5
6
7public static boolean checkDeviceDebugger(){
String buildTags = android.os.Build.TAGS;
if(buildTest != null && buildTags.contains("test-keys")){
return true;
}
return false;
}通过读取特征文件来判断是否存在root
比如下面这段代码是用来判断是否安装了supersu的,因为该app会获取root权限,获取完成之后会把其自身变成系统级的apk,故可以检测出来相应的特征文件1
2
3
4
5
6
7
8
9
10
11public static boolean checkSuperuserApk(){
try{
File file = new File("/system/app/Superuser.apk");
if(file.exists()){
return true;
}
}catch(Exeception e){
}
return false;
}检测data的读写权限
1
对抗检测root
- 把su文件进行编译,编译成其他文件比如msu等,执行时执行msu。
Stra1234