Задать вопрос
@Chesterfield25

Как рутировать устройство?

Не получается рутировать устройство не находит файл su может кто подскажет как рутировать устройство?

package com.arturio.pan;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;

import java.io.DataOutputStream;
import java.io.File;
import java.io.IOException;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button buttonRoot = findViewById(R.id.button_root);
        Button buttonUnroot = findViewById(R.id.button_unroot);

        buttonRoot.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (rootDevice()) {
                    Toast.makeText(MainActivity.this, "Device Rooted", Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(MainActivity.this, "Root Failed", Toast.LENGTH_SHORT).show();
                }
            }
        });

        buttonUnroot.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (unrootDevice()) {
                    Toast.makeText(MainActivity.this, "Device Unrooted", Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(MainActivity.this, "Unroot Failed", Toast.LENGTH_SHORT).show();
                }
            }
        });
    }

    private boolean rootDevice() {
        if (!isSuAvailable()) {
            Toast.makeText(MainActivity.this, "su binary not found", Toast.LENGTH_SHORT).show();
            return false;
        }

        try {
            Process process = Runtime.getRuntime().exec("su");
            DataOutputStream os = new DataOutputStream(process.getOutputStream());
            os.writeBytes("mount -o remount,rw /system\n");
            os.writeBytes("cp /path/to/su /system/bin/su\n");
            os.writeBytes("chmod 6755 /system/bin/su\n");
            os.writeBytes("exit\n");
            os.flush();
            process.waitFor();
            return process.exitValue() == 0;
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
            return false;
        }
    }

    private boolean unrootDevice() {
        try {
            Process process = Runtime.getRuntime().exec("su");
            DataOutputStream os = new DataOutputStream(process.getOutputStream());
            // Удаляем бинарник su из системной директории
            os.writeBytes("rm /system/bin/su\n");
            // Восстанавливаем права доступа и монтирование в режим только для чтения
            os.writeBytes("mount -o remount,ro /system\n");
            // Завершаем процесс
            os.writeBytes("exit\n");
            os.flush();
            process.waitFor();
            return process.exitValue() == 0;
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
            return false;
        }
    }

    private boolean isSuAvailable() {
        String[] paths = {"/system/bin/", "/system/xbin/", "/sbin/", "/system/sbin/", "/vendor/bin/", "/su/bin/"};
        for (String path : paths) {
            File file = new File(path + "su");
            if (file.exists()) {
                return true;
            }
        }
        return false;
    }


}
  • Вопрос задан
  • 186 просмотров
Подписаться 1 Простой 11 комментариев
Пригласить эксперта
Ответы на вопрос 2
402d
@402d
начинал с бейсика на УКНЦ в 1988
Чешир, вот уже год Вы перебираете вещи, которые давно перестали работать из-за новых ограничений андроид.
Но в этом вопросе Вы затронули вещь, которая никогда не работала нормально.
Рутование всегда было основано на эксплуатации уязвимостей.
Атака никогда не шла из обычной программы. Это делалось все ниже (до нормальной загрузки устройства).
Подделаное системное обновление (кастомная прошивка). Компроментированный ключ поддиписи редкость.
Искали и ломали загрузчик (аналог биоса для ПК)
Ответ написан
Комментировать
Можно попробовать использовать Magisk.
Конкретно для вас будет зависеть от модели устройства.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы