SIM信息清理查看工具(重点在ROOT权限的利用)
2015-10-04(日) by chenjia.me原理
通过查看/data/data/com.android.providers.telephony/databases/telephony.db
这个数据库的信息来获取,需要ROOT权限,当然可以不需要ROOT权限进行内容查看,通过内容提供者来实现。
ROOT权限的利用
原以为网络上会有很多ROOT权限的利用代码,结果发现就那么几个,而且并不是很适用,因此做了一些总结。
通过调用su命令来获取ROOT权限
参考了一下网络上的代码进行改进的,并且対输出流的数据进行字符串编码。
public boolean RootCommand(String command)
{
Process process = null;
DataOutputStream os = null;
//DataInputStream is = null;
int result=-1;
try
{
process = Runtime.getRuntime().exec("su");
os = new DataOutputStream(process.getOutputStream());
//is = new DataInputStream(process.getInputStream());
BufferedReader is = new BufferedReader(new InputStreamReader(process.getInputStream()));
os.writeBytes(command);
os.flush();
os.writeBytes("exit\n");
os.flush();
String line="";
string="";
while((line=is.readLine())!=null){
Log.i("is out---","2134"+line);
string+=line+"\n";
}
process.waitFor();
result = process.exitValue();
Log.i("is out---",result+"");
} catch (Exception e)
{
Log.d("*** DEBUG ***", "ROOT REE" + e.getMessage());
return false;
} finally
{
try
{
if (os != null)
{
os.close();
}
process.destroy();
} catch (Exception e)
{
Log.d("*** DEBUG ***", "Root SUC-e ");
}
}
if(result==0){
//tv_out.setText(string);
//tv_out.append("Success!/执行成功!");
return true;
}else{
//tv_out.setText("Faild,No ROOT?/失败,请先给root权限? ");
return false;
}
}
这里说一些坑,希望大家可以注意到:
- 注意input流和output流的顺序,和我们平时使用的是相反的
- input流可以用
BufferedReader
来处理,这样可以解决中文乱码的错误- process的处理目前我测试的只有在终端窗口的input功能,例如进入sqlite后可以执行一条select语句,但是并不能继续输入指令,比如
.exit
这样的指令让他退出,有更好的方法可以进行交流,建议大家都用单行指令进行。比如"sqlite3 /data/data/com.android.providers.telephony/databases/telephony.db 'select * from siminfo;' " + "\n"
这样的命令。- 每行结束都要有
"\n"
进行输入回车- 大坑:请注意try,catch的路径以及process的返回值,这里涉及到很多部分,比如 用户没有root走的路线,用户有root权限但是没有给程序授权走的路线等等
- 返回值处理要得当,以及输入部分要多次测试,不然很有可能会导致自己程序FC。
重启命令ROOT执行
Runtime.getRuntime().exec(new String[]{"/system/bin/su","-c","reboot now"});
同样这块通过这样的runtime直接执行命令,这里一般是单行命令的执行,数组是用来输入空格的0.0~
程序部分
程序源代码:https://github.com/fashioncj/SimClearTool/
程序下载地址:https://github.com/fashioncj/SimClearTool/blob/master/app-release-unaligned.apk?raw=true