2015-10-14 48 views
1

我注意到,它有可能在Android更改權限上的文件與chmod,這意味着我們可以很容易地從一個應用程序中執行任何東西:我可以在批准的應用程序中啓動可執行文件嗎?

var runtime = Runtime.GetRuntime(); 
runtime.Exec("chmod 0755 /my/file").WaitFor(); 
// Then ProcessBuilder to execute it. 

請問谷歌Play商店接受一個應用程序,利用這個缺陷?我找不到任何關於它的文檔,但我確認它可行。

實際上,我想包含ffmpeg,因爲任務太慢而無法使用MediaCodec執行。

(我也注意到,Android框架有時直接訪問的ffmpeg原生版本,所以也許我可以從手機上直接訪問它?)

+1

你在哪個版本的Android上做了這些觀察? –

+0

觀察:在API 18上。我不在家,所以不能粘貼在這裏,但如果我沒有記錯的話,在我的Xperia Z上使用MediaCodec時,我看到FFmpeg的調用。這不是一些隱晦的細節logcat的東西,因爲我在Xamarin的Application Output窗口中看到了這個。我會盡力找到它並粘貼在這裏。 –

+0

在G + Android社區中,有人告訴我他過去沒做過應用程序拒絕。這就是我迄今爲止得到的所有信息。能夠從應用程序運行任何進程是一個很大的安全問題,所以我很驚訝我無法在interwebz上找到關於這些類型情況的任何內容。 –

回答

2

我不知道,如果它是確定Google Play。

但我不認爲這是安全問題。您將執行您的應用程序的自動化處理。 我希望下面的例子能幫到你。 您可以使用設備連接嘗試以下命令行。

adb shell 

要對你的設備 殼那麼你可以嘗試一下什麼是裏面的文件一個應用程序(由debbugable的apk的名稱替換com.your.package)

ls /data/data/com.your.package 

這個命令會失敗,因爲你沒有很好的權限。 現在運行以下命令。

run-as com.your.package 

您現在將使用與您的應用相同的權限來執行命令行。 您現在可以重試之前的ls命令。它會工作。但它不適用於另一個包。

所以,我認爲你將使用你的代碼執行的命令將會以你的應用程序的特權執行。所以我不認爲你可以用這種方法在文件上提升你的應用程序的特權。

+0

有趣!如果提供代碼是強制性的,那將是非常好的,因爲他們可以看到這只是一個乾淨的ffmpeg可執行文件,但如果它通過權限過程,那麼我同意風險被用戶和程序員接受。謝謝! –

相關問題