RootExplorer怎么样获取root权限的
Android系統(tǒng)上面有名的RootExplorer很強(qiáng)大,可以操作任何目錄下的文件,包括像/data/data這樣需要root權(quán)限才能訪(fǎng)問(wèn)的地方。它是怎么樣做到的呢?
?
?
這里要先提一個(gè)開(kāi)源項(xiàng)目,地址是:
http://code.google.com/p/superuser/
大家可以用SVN把源碼下載到本地,與系統(tǒng)源碼一起編譯就可以了。編譯完成后會(huì)生成兩個(gè)文件,一個(gè)是二進(jìn)制可執(zhí)行文件su,另一個(gè)是Superuser.apk。把su復(fù)制到系統(tǒng)的/system/bin目錄,再把Superuser.apk復(fù)制到系統(tǒng)的/system/app目錄。
這樣,就可以用下面的代碼執(zhí)行su命令時(shí),就會(huì)啟動(dòng)Superuser.apk中的Activity彈出標(biāo)題為“以下程序要求授予最高權(quán)限...”的對(duì)話(huà)框,用戶(hù)同意之后,APK就有ROOT權(quán)限了。
?
?
下面看看APK里面的代碼。
?
ProcessBuilder pb = new ProcessBuilder("/system/bin/sh"); pb.directory(new File("/"));//設(shè)置shell的當(dāng)前目錄。 try {Process proc = pb.start();//獲取輸入流,可以通過(guò)它獲取SHELL的輸出。BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));BufferedReader err = new BufferedReader(new InputStreamReader(proc.getErrorStream()));//獲取輸出流,可以通過(guò)它向SHELL發(fā)送命令。PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(proc.getOutputStream())), true);out.println("pwd");out.println("su root");//執(zhí)行這一句時(shí)會(huì)彈出對(duì)話(huà)框(以下程序要求授予最高權(quán)限...),要求用戶(hù)確認(rèn)。out.println("cd /data/data");//這個(gè)目錄在系統(tǒng)中要求有root權(quán)限才可以訪(fǎng)問(wèn)的。out.println("ls -l");//這個(gè)命令如果能列出當(dāng)前安裝的APK的數(shù)據(jù)文件存放目錄,就說(shuō)明我們有了ROOT權(quán)限。out.println("exit");// proc.waitFor();String line;while ((line = in.readLine()) != null) {System.out.println(line);}while ((line = err.readLine()) != null) {System.out.println(line);}in.close();out.close();proc.destroy(); } catch (Exception e) {System.out.println("exception:" + e); }?
?
有了root權(quán)限,再結(jié)合ls,cp,mv等命令,整個(gè)系統(tǒng)的所有目錄都可以操作了。
?
有一些問(wèn)題目前還沒(méi)有找到答案:
如果我用ADB從Ubuntu上面執(zhí)行su root,用戶(hù)在彈出的對(duì)話(huà)框上選同意的話(huà),命令會(huì)很快返回,接下面提示符就變成#了。
但是,我用代碼在APK里面測(cè)試的時(shí)候,只是偶爾會(huì)成功,發(fā)現(xiàn)大部分時(shí)候會(huì)卡死在out.println("su root");這一句上。即,用戶(hù)在對(duì)話(huà)框上面選同意后程序沒(méi)有響應(yīng),DDMS也看不到輸出。再等上一會(huì)兒,程序無(wú)響應(yīng)需要強(qiáng)制關(guān)閉的對(duì)話(huà)框就出來(lái)了。這個(gè)項(xiàng)目還是不完善的地方,不過(guò)思路真的不錯(cuò)。
?
?
總結(jié)
以上是生活随笔為你收集整理的RootExplorer怎么样获取root权限的的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ACE下载地址
- 下一篇: Mindjet 一打开鼠标就动不了解决方