客户对产品的要求进一步升级,对产品做Andirod的root权限检测。说实话,现在很多手机基本上root权限已经回收了,特别是华为的,今天准备在/data/目录下touch一个文件都不行:

设备安全篇: Andirod的root权限检测 (一)

设备安全篇: Andirod的root权限检测 (一)

但没办法客户有需求,那么Andirod的root权限检测代码:


public class MainActivity extends Activity {

 

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

 

        doSU();

    }

    

    @Override

    protected void onResume() {

        super.onResume();

        doSU();

    }

 

    private void doSU() {

        try {

            Process process = Runtime.getRuntime().exec("su");// (这里执行是系统已经开放了root权限,而不是说通过执行这句来获得root权限)

            DataOutputStream os = new DataOutputStream(process.getOutputStream());

//            os.writeBytes("ifconfig eth0 192.168.18.122\n");

            os.writeBytes("exit\n");

            os.flush();

            /*

             * //如果已经root,但是用户选择拒绝授权,e.getMessage() = write failed: EPIPE (Broken pipe)  

 //如果没有root,,e.getMessage()= Error running exec(). Command: [su] Working Directory: null Environment: null  

             */

        } catch (IOException e) {

            e.printStackTrace();

        }

    }

 

    @Override

    public boolean onCreateOptionsMenu(Menu menu) {

        // Inflate the menu; this adds items to the action bar if it is present.

        getMenuInflater().inflate(R.menu.main, menu);

        return true;

    }

 

}

 

上面的代码放到jar工程里面,打包前运行一下,看可否结果怎么样,基本可以做到root权限的检测。

只不过是要不要给客户提供一个友好性提示,得前段要重新设置一下。。

相关文章:

  • 2021-09-13
  • 2022-12-23
  • 2021-04-16
  • 2021-11-17
  • 2021-11-20
  • 2021-10-23
  • 2021-10-29
猜你喜欢
  • 2021-12-31
  • 2021-11-26
  • 2021-09-25
  • 2022-12-23
  • 2022-01-16
  • 2021-12-03
相关资源
相似解决方案