android - 如何检查android中的root访问权限?

标签 android command root

我创建了一个方法来检查 android 手机是否已 root。这是按如下方式完成的

public int checkrootcommand(String string) {
    // TODO Auto-generated method stub
    Process exec;
    try {

        exec = Runtime.getRuntime().exec(new String[]{"su","-c"});

        final OutputStreamWriter out = new OutputStreamWriter(exec.getOutputStream());
        out.write("exit");
        out.flush();

        Log.i(SUPER_USER_COMMAND, "su command executed successfully");
        return 0; // returns zero when the command is executed successfully
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }  
    return 1; //returns one when the command execution fails
}

但问题是方法 checkrootcommand() 首先执行它完美地工作,但是当再次调用相同的方法时, super 用户 session 仍在运行。一旦执行了方法,有什么方法可以结束 super 用户 session 吗??

最佳答案

没有可靠的方法可以检测已通过利用软件漏洞克服硬件保护的设备上的 root 情况。

充其量您可以检测特定工具集的存在或扫描不应该存在的东西或文件中的更改 - 但这需要知道给定安装应该是什么样子,并假设操作系统您用于进行检查的功能尚未被修改以隐藏更改。

要可靠地扫描,您需要确保受信任的代码在比不受信任的代码更低的级别上运行;获得 root 权限的设备是这种保证已从根本上被打破的设备,或者最终用户比开发人员更受信任的设备。

关于android - 如何检查android中的root访问权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6736411/

相关文章:

Linux - 如何更改/的 chmod

java - RxJava2 : Need help to convert java code into rx

android - 无法在 SwipeFlingAdapterView 中显示项目

ubuntu - 在 gnome-terminal/bash 中,std 输出可以作为命令直接运行(解释吗?)?

windows - 如何运行 Windows 命令并每次都返回 true?

ansible - Ansible中become和become_user的区别

ssh - Chef : deploy a server with root ssh access disabled?

android - 在 Fragment 之间共享数据的更好方法是什么?

java - 通过WiFi连接Java DatagramSocket的问题

RStudio Run 命令运行两次问题