作者CaliforCat (Cal)
看板AndroidDev
標題[問題] root裝置 仍無法透過app下shell command
時間Tue Jun 16 23:46:45 2020
已經把手機root成功
透過模擬終端app可以su之後$變#
在自己寫的測試app,用按鍵下指令 su
https://imgur.com/PcvBycN.jpg
裝置的螢幕會跳出詢問是否要授予權限,確認後會顯示獲得權限的訊息
https://imgur.com/xwUEcI1.jpg
但後續一樣透過app的按鍵下 已經用adb跟模擬終端測試過可用的改亮度指令
https://imgur.com/VJxSbsR.jpg
卻都沒反應
要修改的檔案權限是744
照理來說,已經跳出app被授予超級使用者權限,應該是要可以用了才對
我還是只能透過adb先去把檔案chmod成777,才能在app成功下指令 達到功能
1. 想請問是哪裡出問題了呢?
另外想請問,我在開發板可以透過adb shell下指令su $變成#
但從開發板的模擬終端app 下su卻顯示沒權限
/system/bin/sh: su: can't execute: Permission denied
2. 請問開發板應該已經是root的狀態,該如何在app獲得超級使用者權限?
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 218.166.118.215 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/AndroidDev/M.1592322407.A.D45.html
1F:→ ssccg: su是讓執行su的Process (Runtime.exec回傳的那個Process) 06/17 04:26
2F:→ ssccg: 變root,不是讓app本身變root,你必須用同一個Process繼續 06/17 04:27
3F:→ ssccg: 執行要用root權限的指令 (Process.getOutputStream.write) 06/17 04:30
4F:→ ssccg: 不是另外再跑一次exec,那是再起一個沒su過的Process 06/17 04:31
感謝s大的回覆
我實測 將用Runtime.exec執行su指令的按鍵新增getOutputStream()
結果還是不行 orz||| 試過這兩種
https://imgur.com/jdc8T6M.jpg
https://imgur.com/BVBoq43.jpg
按下按鍵同樣會跳出SuperSU詢問授予權限的對話框
選擇確認,再用adb查看檔案權限有無被修改,還是原本的744
※ 編輯: CaliforCat (218.166.118.215 臺灣), 06/17/2020 15:49:30
5F:→ kobe8112: 少送一個Enter? 06/17 19:24
6F:→ kobe8112: 另一個疑惑是,你還沒按確認前,都沒有取得root權限吧? 06/17 19:28
7F:→ kobe8112: 那是否該改在onActivityResult後才執行需要root的指令? 06/17 19:29
8F:→ kobe8112: 第二個疑惑應該有誤,我自己在寫的時候也沒印象需要這樣 06/17 19:37
是缺一個enter沒錯^^" 補上在手機跑就可以了 謝謝k大
但在開發板還是無法,原本只Runtime.exec執行su是會停在原畫面,像都沒事
現在加了getOutputStream()是會閃退說已停止運作 orz|||
※ 編輯: CaliforCat (218.166.118.215 臺灣), 06/17/2020 23:41:38
9F:→ kobe8112: 直接CATCH全部例外看是啥錯吧 06/18 01:27
10F:→ kobe8112: 不過我後來都直接用別人寫好的靜態類執行這類指令了 06/18 01:27
11F:→ tsaiminghan: 把sepolicy關掉試試? 06/18 16:20
12F:→ tsaiminghan: 另一個問題,su和命令分兩次下,你確定第二次時,還 06/18 16:29
13F:→ tsaiminghan: 還是root嗎? 06/18 16:29
14F:→ tsaiminghan: 你如果每次按su, 都會出現取得root的話,我覺得只有s 06/18 16:31
15F:→ tsaiminghan: 只有su那次才是root 06/18 16:31
16F:→ tsaiminghan: su執行結束後,root就結束了 (可能) 06/18 16:34
17F:→ tsaiminghan: 因為你呼叫的是另一個runtime 06/18 16:35