Android检测设备是不是有root权限
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android检测设备是不是有root权限相关的知识,希望对你有一定的参考价值。
安卓设备的root指第三方应用可以运行系统权限,即调用su来实现linux命令。单纯的eng版本的设备虽然可以通过adb修改系统但不具有root权限,因为其不包含superuser和su,第三方应用无法调用。执行如下代码获取设备是否已被root,没有root的设备会弹出"设备没有被root"的信息:package com.example.testdroid;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Toast;
public class MainActivity extends Activity
/** Called when the activity
is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if(isRooted())
Toast.makeText(this, "设备已被root", Toast.LENGTH_LONG).show();
else
Toast.makeText(this,
"设备没有被root", Toast.LENGTH_LONG).show();
public DataInputStream Terminal(String command) throws Exception
Process process = Runtime.getRuntime().exec("su");
//执行到这,Superuser会跳出来,选择是否允许获取最高权限
OutputStream outstream = process.getOutputStream();
DataOutputStream DOPS = new DataOutputStream(outstream);
InputStream instream = process.getInputStream();
DataInputStream DIPS = new DataInputStream(instream);
String temp = command
+ "\\n";
//加回车
DOPS.writeBytes(temp);
//执行
DOPS.flush();
//刷新,确保都发送到outputstream
DOPS.writeBytes("exit\\n");
//退出
DOPS.flush();
process.waitFor();
return DIPS;
public boolean isRooted()
//检测是否ROOT过
DataInputStream
stream;
boolean
flag=false;
try
stream = Terminal("ls /data/");
//目录哪都行,不一定要需要ROOT权限的
if(stream.readLine()!=null)flag=true;
//根据是否有返回来判断是否有root权限
catch (Exception e1)
// TODO Auto-generated catch block
e1.printStackTrace();
return
flag;
参考技术A 下载360优化大师,硬件检测项目有root权限状态 参考技术B 360 就行啊
[Android] [ROOT] Magisk(魔术师/面具) 设置以及必装模块的安装
🍁简介
当我们给手机刷入Magisk(面具)后,等于获得了安卓系统的最高管理员权限,也就是root权限。获取root权限后的设备相对于未root的设备,安全性会有一定的降低。也许是基于这个原因,现在大部分应用都会检测你的设备是否存在root,当检测到你的设备存在root,就会无法运行或者闪退。这些应用一般是银行类金融类游戏类应用,也有可能是什么租号类网盘类或者营业厅类应用。一般是“银行类金融类游戏类”应用(检测root)居多,毕竟一个是为了保护客户的资金安全,一个是为了维护游戏的公平公正(防止root后开科技)。除了检测到root无法运行或者闪退外,银行类金融类应用还可能会功能异常(譬如无法刷脸或者无法使用指纹);游戏类应用的话,检测到root还可能会封号。
🔗 相关资料 :
- Xposed资源相关
📁 资源包(密码:123)
[GitHub] Xposed-Modules-Repo
[GitHub] WeXposed (微X模块)
🍁 方法 / 步骤
🌿一:安装自动救砖Magisk模块
点击下载(密码:mh) Magisk模块-神仙自动救砖-支持OTA稳定.zip
🌿 二 : 隐藏ROOT
2.1 打开 “Zygisk”选项
Zygisk命名非常形象,意思是注入Zygote后的Magisk。它能为Magisk模块,提供更深入、更强悍的修改能力。它有一个排除列表,可以撤销Magisk做的所有修改。这样你就能手动划定,模块起作用的范围。
注意,该功能跟Riru Hide不同,不能避免root被检测到,没有任何隐藏作用。即使你把某些程序加入排除列表,它们依旧可以发现Zygisk。如果用户要隐藏root,只能借助其他方式,比如添加Shamiko模块。
要使用“Shamiko”模块隐藏root,需要面具开启Zygisk,因为它是一个依赖面具Zygisk才能运行的模块。下图是开启Zygisk的步骤,需要注意的是,打开“Zygisk”选项后要重启手机,Zygisk才能生效。
- Zygisk后面显示否表示未开启Zygisk
2.2 屏蔽提示 "检测到不属于Magisk的su文件 "
❗ 主要是为了屏蔽 "检测到不属于Magisk的su文件 "提示!如果打开面具没提示这个的朋友,就跳过这一部分内容吧。
去面具设置里,找到“隐藏Magisk应用”选项点开,会跳出一个对话框。这个对话框里已经有默认名称“Settings”,你可以把它删掉并输入你喜欢的名字。比如我输入MiaoHan,点确定就不用管它了,它最后会自动跳转到新生成的面具界面里。期间无论跳转什么界面,你只需要点确定或者允许就行了。面具随机包名成功后,会看到原来的面具消失,桌面出现新生成的面具“MiaoHan”。如果随机包名失败或者“隐藏Magisk应用”一直转圈圈,那么你需要使用魔法网络🚀。
2.3 安装“Shamiko”模块
SHamiko是一个面具模块,可以在面具开启Zygisk的情况下,实现类似于MagiskHide的隐藏root效果,可以对应用隐藏Magisk、Zygisk本身和二进制文件“su”。你可以把它简单理解为,就是隐藏root的模块。
- “Shamiko”笑脸表示正在工作,有隐藏root的作用
2.4 用排除列表对应用隐藏ROOT (默认黑名单模式)
“Shamiko”模块分为黑名单模式和白名单模式,安装“Shamiko”以后默认的是黑名单模式。黑名单模式的“Shamiko”,还需要用到面具的排除列表才能对(银行类金融类游戏类)应用隐藏root,也就是接下来要讲的内容。
🌿 三 : 总结
安装自动救砖模块(zip)–> 开启随机包名 --> 安装/注入zygisky依赖并开启 --> 安装“Shamiko”模块 --> 在魔术师配置排除列表里面添加黑名单
🍁 参考资料 & 致谢
[1] 隐藏root保姆级教程第(二)期之用“Shamiko”模块白名单模式隐藏root
[2] bilibili小猴玩机大圣
以上是关于Android检测设备是不是有root权限的主要内容,如果未能解决你的问题,请参考以下文章