Подтвердить что ты не робот

Как создать приложения для Android с правами root?

Я узнал, что там так много приложений, которые требуют доступа root.

Как они могли создавать эти приложения? Где они нашли весь ресурс? Есть ли официальный документ о доступе root? Или понадобится какой-то хакерский способ?

А какие виды доступа требуют доступа root? Является ли прокси одним из них? Я не нашел никакой документации о доступе к прокси в любом месте.

=== UPDATE ===

Я думаю, что некоторые люди ошибаются в моем вопросе. Я знаю, что телефон должен быть внедрен, чтобы получить доступ root. но я хочу узнать, какие услуги нужны для доступа root? Некоторые я вижу беспроводную связь, а другая - очищать кеш (нужен ли даже root-доступ, чтобы очистить кеш?) И другие приложения там. есть ли какой-нибудь список преимуществ, которые я получаю от доступа root?

4b9b3361

Ответ 1

Вам нужно su, установленное в телефоне (конечно). Подробности здесь: http://forum.xda-developers.com/showthread.php?t=682828

И использовать его так же просто, как и выполнение команды su. Вот пример, который я использую для программной перезагрузки телефона (скопированный из этого ответа: Android 2.2: перезагрузите устройство программно)

try {
    Runtime.getRuntime().exec("su");
    Runtime.getRuntime().exec("reboot");
} catch (IOException e) {
} 

Ответ 2

Должен работать в большинстве версий:

try {
    Runtime.getRuntime().exec("su -c reboot");
} catch (IOException e) {
} 

Ответ 3

Многие приложения зависят от оболочки script/command с префиксом su.

Я не думаю, что есть способ запросить другой контекст или повысить привилегии в Android API.

Ответ 4

Обычно внедренные приложения просто используют команды типа "su...", которые они не могут использовать без доступа root. И при этих командных исполнениях они могут достичь всего (например, удалять системное приложение или увеличивать ваше устройство Android).

Ответ 5

Используйте эту функцию и используйте ее в любом месте вашего проекта.

 public static void sudo(String... strings) {
    try {
        Process su = Runtime.getRuntime().exec("su");
        DataOutputStream outputStream = new DataOutputStream(su.getOutputStream());

        for (String s : strings) {
            outputStream.writeBytes(s + "\n");
            outputStream.flush();
        }

        outputStream.writeBytes("exit\n");
        outputStream.flush();
        try {
            su.waitFor();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        outputStream.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

Использование вышеуказанной функции и использование ее любого типа команд оболочки с корневыми пользователями

  sudo("iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080");