2011-04-20 74 views
4

我已閱讀了幾篇關於「Android安全模型」的文章(123以及更多)。我理解權限的理論MAC模型,以及大部分與應用程序開發相關的內容。但似乎很少有關於廣泛的底層細節的文檔:Android如何強制執行權限?

  1. 權限如何在系統級別實際執行。也就是說,使用JNI,什麼會阻止我直接訪問硬件,如GPS? (我意識到Linux文檔可能會有一個回退,與Android無關,回答這個問題,或者這個問題的更一般和經典的操作系統解決方案)。
  2. 實際堆棧上發生了什麼,以及在使用Android ICC時調用哪些函數。

任何人都可以引用我的解釋和/或從Android的相關代碼段嗎?

//編輯: 爲了澄清事情(因爲看起來評論者感到困惑),標題中的問題在這裏分成兩個單獨的(完全不同的)問題。 這裏的第一個答案確實回答了關於ARM處理器中存在的低級機制的第一個問題(謝謝)。 有關ICC程序調用的第二個問題仍未得到解答...

回答

2

最後,處理器本身允許操作系統設置內核/特權/超級用戶模式與用戶/非特權執行模式。如果沒有升級到特權模式,則無法啓用/禁用/配置中斷,訪問某些外圍設備,和/或違反內存邊界(取決於架構)。例如參見this documentation for the ARM A8 processors

如果你想要更高的權限,你可以做的唯一的事情就是用SWI指令觸發一個系統調用中斷,給系統調用處理器一個數字,告訴它你想做什麼。由處理者決定是否可以或不可以直接訪問硬件。

這是什麼阻止你直接訪問GPS到底。我無法幫助你解決事情的軟件問題。

+1

我不認爲這是OP所問的。我相信他問的是權限,比如'USES_INTERNET' – 2011-04-20 18:51:29

+1

@Chris - OP明確提到使用JNI和ICC。我不確定OP是想要低層還是高層,所以我繼續解釋低層。 – 2011-04-20 18:56:44

+0

是的,他正在談論系統級,所以我假設他想要的是低級信息。 – kcoppock 2011-04-20 19:02:22