我已经阅读了几篇关于“
Android安全模型”(
1,
2,
3及更多)的文章.我理解权限的理论MAC模型,以及与应用程序开发相关的大部分内容.但似乎很少有关于以下广泛的低级细节的文档:
>如何在系统级强制执行权限.也就是说,使用JNI会阻止我直接访问GPS等硬件吗? (我意识到Linux文档可能会出现回落,与Android无关,回答这个问题,或者是针对这个问题的更通用和经典的OS解决方案).
>在使用Android ICC时,执行堆栈上实际发生了什么以及调用了哪些函数.
任何人都可以向我推荐Android的解释和/或相关代码段吗?
//编辑:
为了澄清事情(因为看起来评论者很困惑),标题中的问题在两个单独的(完全不同的)问题中分开.
这里的第一个答案确实回答了第一个问题,关于ARM处理器中存在的低级机制(谢谢).
关于ICC程序调用的第二个问题仍然没有答案……
最佳答案 最后,处理器本身允许操作系统设置内核/特权/管理员模式与用户/非特权执行模式.在不升级到特权模式的情况下,您无法启用/禁用/配置中断,访问某些外围设备和/或违反内存边界(取决于体系结构).例如,参见
this documentation for the ARM A8 processors.
如果您需要更高的权限,您唯一能做的就是使用SWI指令触发系统调用中断,向系统调用处理程序传递一个数字,以通知它您想要执行的操作.由该处理程序决定您是否可以直接访问硬件.
这就是阻止你最终直接访问GPS的原因.我无法帮助你解决软件方面的问题.