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

Unn*_*nan 7 android command root

我创建了一个检查Android手机是否已植根的方法.这样做如下

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
}
Run Code Online (Sandbox Code Playgroud)

但问题是方法checkrootcommand()首先执行完美,但是当再次调用相同的方法时,超级用户会话仍在运行.有没有办法在执行方法后结束超级用户会话?

Chr*_*ton 5

在通过利用软件漏洞已克服了硬件保护的设备上,没有可靠的方法来检测发生故障的情况。

充其量,您可以检测到特定工具集的存在或扫描本来不应该存在的东西或文件中存在的更改-但这需要了解给定安装的外观,并假定您所拥有的OS功能用于进行检查的代码尚未进行修改以隐藏更改。

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