Android ioctl - root-права и использование - PullRequest
4 голосов
/ 08 августа 2011

Я работаю над некоторыми функциями маршрутизации в приложении для Android, и мне нужен доступ к ioctls. Поскольку приложениям, использующим ioctl, для запуска требуются права доступа root, единственный способ, которым я смог их вызвать, - это связать отдельный исполняемый файл и вызвать его из Java с помощью Runtime.getRuntime().exec().

.

Есть ли способ получить права доступа root от JNI в Android без создания отдельного исполняемого файла? Является ли сборка исполняемого файла лучшим подходом для доступа к ioctl?

Ответы [ 2 ]

3 голосов
/ 08 августа 2011

Нет способа, чтобы некорневой процесс стал корневым (кроме эксплойтов), так что да, вам нужен отдельный процесс.

Это унаследовано без изменений от linux - разница в том, что нет прямого способа запустить процесс приложения для Android в качестве пользователя root из модуля запуска, поскольку он отправляет намерение zygote, который отключается и привилегия уменьшает ребенка, которыйспециализируется на процессе подачи заявки.(Может существовать обходной метод для ручного создания процесса приложения, но для этого потребуется процесс приложения, так что по определению это будет вторичный процесс. И он будет неэффективным, поскольку приложение не являетсяchild of zygote не наследовал бы общее отображение системных библиотек, и поэтому должен был бы загружать свои собственные уникальные копии в память)

ioctl () - это просто еще один системный вызов, и для него требуется только root, если права доступа к немуFD (из файла устройства) делает.Очевидно, что это тот случай, который вы хотите использовать, но другие непривилегированы.Например, большинство платформ Android IPC в конечном итоге реализованы с помощью Binder ioctl, и они обычно используются для управления сетевым сокетом.

0 голосов
/ 08 августа 2011

Для вызовов ioctl () явно не требуется разрешение root (или какое-либо конкретное разрешение).Как сказал Крис Страттон, для доступа к конкретному устройству вам потребуется разрешение.Если у вас нет разрешения, вы не получите его, кроме подвигов.

Чего вы в конечном итоге пытаетесь достичь?

...