Android如何执行权限控制?

4

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

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

有人可以向我介绍来自Android的解释和/或相关代码段吗?

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

1个回答

2
最终,处理器本身允许操作系统设置内核/特权/监管模式与用户/非特权模式的执行。如果不升级到特权模式,就无法启用/禁用/配置中断、访问某些外设和/或违反内存边界(取决于架构)。例如,请参阅ARM A8处理器的此文档
如果您想获得更高的权限,唯一可以做的就是使用SWI指令触发系统调用中断,并将系统调用处理程序传递给一个数字,以通知它您想要做什么。由该处理程序决定是否可以直接访问硬件。
这就是最终阻止您直接访问GPS的原因。我无法帮助您解决软件方面的问题。

1
我认为这不是OP问的问题。我相信他在询问诸如“USES_INTERNET”之类的权限。 - Chris Thompson
1
@Chris - OP明确提到了使用JNI和ICC。我不确定OP想要低级还是高级的东西,所以我解释了低级别的内容。 - Kevin Vermeer
是的,他在谈论系统层面,所以我认为他想要低级别的信息。 - Kevin Coppock
根据最近的编辑,似乎你是正确的!我的错! - Chris Thompson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接