【问题标题】:Can I start an executable in an approved application?我可以在批准的应用程序中启动可执行文件吗?
【发布时间】:2015-10-14 06:25:34
【问题描述】:

我注意到Android 可以使用chmod 更改文件的权限,这意味着我们可以轻松地从应用程序执行任何操作:

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

Google Play 商店会接受利用此缺陷的应用程序吗?我找不到任何关于它的文档,但我确认它有效。

实际上,对于太慢而无法使用MediaCodec 执行的任务,我想包含ffmpeg

(我也注意到Android 框架有时会直接访问本机版本的ffmpeg,所以也许我可以直接从手机访问它?)

【问题讨论】:

  • 您在哪个版本的 android 上进行了这些观察?
  • 观察:在 API 18 上。我不在家,所以不能在这里粘贴,但如果我没记错的话,我在 Xperia Z 上使用 MediaCodec 时看到了对 FFmpeg 的调用。这不是我在 Xamarin 的应用程序输出窗口中看到的一些晦涩冗长的 logcat 内容。我会试着找到它并粘贴到这里。
  • 在 G+ Android 社​​区中,有人告诉我他过去曾这样做过,但应用程序没有被拒绝。这就是我目前得到的所有信息。能够从应用程序运行任何进程是一个很大的安全问题,所以我很惊讶我在 interwebz 上找不到关于这些类型情况的任何信息。

标签: android google-play processbuilder


【解决方案1】:

我不确定 Google Play 是否可以。

但是我不认为这是安全问题。您将通过应用程序的自动化执行流程。 我希望以下示例对您有所帮助。 您可以尝试使用以下命令行连接您的设备。

adb shell 

在您的设备上安装外壳 然后您可以尝试查看应用程序文件中的内容(将 com.your.package 替换为可调试 apk 的名称)

ls /data/data/com.your.package

此命令将失败,因为您没有良好的权限。 现在运行以下命令。

run-as com.your.package

您现在将以与您的应用相同的权限执行命令行。 您现在可以重试之前的ls 命令。它会起作用的。但是它不适用于其他软件包。

所以,我认为您将使用您的代码执行的命令将使用您的应用程序的权限执行。所以我不认为你可以用这种方法提升你的应用程序对文件的权限。

【讨论】:

  • 有趣!如果提供代码是强制性的,那就太好了,因为他们可以看到这只是一个干净的 ffmpeg 可执行文件,但如果它通过许可过程,那么我同意用户和程序员接受风险。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-09-23
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-24
  • 1970-01-01
相关资源
最近更新 更多