【问题标题】:How does Android enforce permissions?Android 如何强制执行权限?
【发布时间】:2011-08-09 17:11:44
【问题描述】:

我已经阅读了几篇关于“Android 安全模型”的文章(123 等等)。我了解权限的理论 MAC 模型,以及与应用程序开发相关的大部分内容。但似乎很少有关于以下广泛低级细节的文档:

  1. 如何在系统级别实际执行权限。也就是说,使用 JNI,什么会阻止我直接访问 GPS 等硬件? (我意识到可能有 linux 文档的回退,与 Android 无关,回答这个问题,或者针对这个问题的更通用和经典的操作系统解决方案)。
  2. 执行堆栈上实际发生的情况以及使用 Android ICC 时调用了哪些函数。

任何人都可以向我推荐 Android 的解释和/或相关代码段吗?

//编辑: 为了澄清事情(因为似乎评论者感到困惑),标题中的问题在这里分为两个单独的(完全不同的)问题。 这里的第一个答案确实回答了第一个问题,关于 ARM 处理器中存在的低级机制(谢谢)。 关于 ICC 程序调用的第二个问题仍未得到解答……

【问题讨论】:

    标签: android linux security permissions linux-kernel


    【解决方案1】:

    最后,是处理器本身允许操作系统设置内核/特权/主管模式与用户/非特权执行模式。如果不升级到特权模式,您将无法启用/禁用/配置中断、访问某些外围设备和/或违反内存边界(取决于架构)。例如,参见this documentation for the ARM A8 processors

    如果您想要更高的权限,您唯一能做的就是使用SWI 指令触发系统调用中断,向系统调用处理程序传递一个数字以告知它您想要做什么。由该处理程序决定您是否可以直接访问硬件。

    这就是最终阻止您直接访问 GPS 的原因。我无法在软件方面为您提供帮助。

    【讨论】:

    • 我认为这不是 OP 所要求的。我相信他在询问诸如USES_INTERNET之类的权限
    • @Chris - OP 明确提到了 JNI 和 ICC 的使用。我不确定 OP 想要低级的东西还是高级的东西,所以我继续解释了低级。
    • 是的,他说的是系统级的,所以我假设他正在寻找低级信息。
    • 嗯,根据最近的编辑,看起来你是对的!我的错!
    猜你喜欢
    • 2014-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-27
    相关资源
    最近更新 更多