2015-10-14 46 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可执行文件,但如果它通过权限过程,那么我同意风险被用户和程序员接受。谢谢! –

相关问题