Как Android обеспечивает права доступа? - PullRequest
4 голосов
/ 20 апреля 2011

Я прочитал несколько статей о «модели безопасности Android» ( 1 , 2 , 3 и более). Я понимаю теоретическую модель MAC разрешений и большую часть того, что имеет отношение к разработке приложений. Но, похоже, очень мало документации о подробностях низкого уровня:

  1. Как на самом деле применяются разрешения на системном уровне. То есть, используя JNI, что помешает мне получить прямой доступ к оборудованию, такому как GPS? (Я понимаю, что может быть запасной вариант документации Linux, не связанной с Android, отвечающей на это, или даже более общего и классического решения ОС для этой проблемы).
  2. Что на самом деле происходит со стеком выполнения и какие функции вызываются при использовании Android ICC.

Кто-нибудь может отослать меня к объяснению и / или соответствующим фрагментам кода от Android?

// EDIT: Чтобы прояснить ситуацию (поскольку кажется, что комментаторы были сбиты с толку), вопрос в названии разделен здесь на два отдельных (совершенно разных) вопроса. Первый ответ здесь действительно отвечает на первый вопрос, касающийся механизмов низкого уровня, которые существуют в процессоре ARM (спасибо). Второй вопрос, касающийся вызовов процедур ICC, остается без ответа ...

1 Ответ

2 голосов
/ 20 апреля 2011

В конце концов, именно процессор позволяет ОС устанавливать режим ядра / привилегированного режима / супервизора вместо пользовательских / непривилегированных режимов выполнения. Без перехода в привилегированный режим вы не можете включать / отключать / настраивать прерывания, получать доступ к определенным периферийным устройствам и / или нарушать границы памяти (в зависимости от архитектуры). См., Например, эту документацию для процессоров ARM A8 .

Если вам нужны более высокие привилегии, единственное, что вы можете сделать, это вызвать прерывание системного вызова с помощью инструкции SWI, передав обработчику системного вызова номер, чтобы сообщить ему, что вы хотите сделать. Именно этот обработчик решает, можете ли вы получить доступ к оборудованию напрямую или нет.

Это то, что в итоге не дает вам прямого доступа к GPS. Я не могу помочь вам с программной стороны вещей.

...