我正在嘗試構建一個android應用程序,該程序可以訪問/ data dir(例如),而不需要分析在執行su之後在shell上運行的命令的輸出。android應用程序根目錄或系統權限
我的意思是,在研究了很多之後,並且也在一些根探索者的代碼中,他們在需要root權限時執行的操作是在執行su之後解析命令的輸出。
我要的是做這樣的事情是什麼:
File file = new File("/data");
File[] files = file.listFiles();// get the list array of file
for (int i = 0; i < files.length; i++) {
File fileItem = files[i];
System.out.println("FILE NAME: "+fileItem.getName().toString()) {
}
爲了實現這一點,我覺得申請過程中必須從執行開始時以root身份運行。
我試圖做蘇這種方式之後,從shell中運行的APP:
$su
#am start -n com.example.test/.ui.Activity
但它看着ps命令我看到應用程序作爲用戶的輸出後,同樣的「u0_a110 「而不是根。
此外,我嘗試使用參數 - 用戶0和 - 用戶1000,具有相同的結果...我認爲,達爾維克虛擬機從父進程中刪除權限。
我也試圖應用變換成一個系統的應用程序它具有相同的結果移動到/系統/ PRIV應用內,
(該應用它不是根,也沒有系統的運行的用戶)可能是搭配:
android:sharedUserId="android.uid.system"
在應用程序運行至少用戶系統的清單,我想這種方式運行應用程序,並放置在/系統/私法,應用程序,手機並沒有完成引導。
我認爲這是錯誤,因爲應用程序需要使用製造商的系統密鑰進行簽名。
它可能運行一些Android應用程序作爲根或至少系統?我知道,如果我爲ARM(或手機的體系結構)交叉編譯Linux應用程序並以root身份在shell中運行該應用程序,那麼該應用程序將具有root訪問權限,但是,這是唯一方法嗎?我想用android java應用程序來實現這一點。
如果你看看輸出:ps | grep系統,你會看到很多以系統用戶身份運行的android應用程序,其中一些我幾乎可以確定是java應用程序。像com.android.settings –
@Mario Rial:舊設備上可能會出現這種情況。但是在目前的Android 5設備上,只有deamons正在使用系統權限或root權限運行。 – Robert
我的測試設備是一個android 4.4.2,你的意思是守護進程?一個android系統服務或一個常規的linux守護進程?所以在目前的Android版本中,以root用戶或至少系統的方式運行應用程序的唯一方法是編譯android的常規linux應用程序並以root身份運行它。 –