月度归档:2014年06月

一种Android沙盒中监控root命令执行的方法 (Enable command logging in Android)

author: hqdvista a.k.a flanker017

原创,转载请注明出处

0x01 Root下命令记录的情况

在Android应用中,有各种各样的应用都会去执行命令,很多灰色应用则是调用su去执行一些见不得人的勾当。一般来说执行root命令在framework层会这么做:

  
public static String execSuCommand(String cmd) throws IOException
    {
        Process process = Runtime.getRuntime().exec("su");  
        DataOutputStream os = new DataOutputStream(process.getOutputStream());  
        os.writeBytes(cmd+"n");
        os.flush();
        os.writeBytes("exitn");
        os.flush();
        
        BufferedReader reader = new BufferedReader(new InputStreamReader(  
                process.getInputStream()));  
        int read;  
        char[] buffer = new char[4096];  
        StringBuffer output = new StringBuffer();  
        while ((read = reader.read(buffer)) > 0) {  
            output.append(buffer, 0, read);  
        }  
        reader.close();
        os.close();
        return output.toString();
    }

当然,在native层直接调用su也可以。那沙盒监控中的需求就来了:如何监控到app执行了什么样的shell命令?
继续阅读