Получаване на „root“ разрешение за Android App

Бих искал да знам как можем да получим root разрешение от приложението за Android? Има ли някакви приложения в android market?

Опитах реда от код по-долу, за да изброя файловете, но нищо не се случи

Process process = Runtime.getRuntime().exec(new String[] { "su", "-", "root"});

Опитах се да дам разрешение на TEST_FACTORY в моя манифестен файл, но получих грешка „разрешено за системно приложение“

Как мога да направя моето приложение системно приложение?

Искам помощ, за да започна с тези неща (направете приложение, ако е възможно, за да получите root разрешение) всяка помощ за това е много ценена. Благодаря предварително :)


person ik024    schedule 06.02.2014    source източник
comment
Има голяма разлика между приложение с root права и системно приложение. Кое ви трябва?   -  person Simon    schedule 06.02.2014
comment
хм препрочитайки въпроса ви, изглежда, че се опитвате да програмирате своя собствена суперсу-алтернатива? Ако е така: не можете да направите това в Java. Ще ви е необходим C, за да програмирате и компилирате изпълним файл, който може да работи естествено в ядрото на Android. Този, разбира се, може да се включи във всеки Java APK, който обработва взаимодействието на потребителя, но все пак ви е необходим su-изпълним файл, за да извикате вашето java приложение.   -  person Johannes H.    schedule 06.02.2014
comment
@Simaon По принцип искам да променя ядрото на Android от моето приложение. И нямам идея как да го направя. Моля, помогнете ми тук. Какъв е правилният начин да започнете за тази цел?   -  person ik024    schedule 06.02.2014
comment
@Johannes По принцип искам да променя ядрото на Android от моето приложение. И нямам идея как да го направя. Моля, помогнете ми тук. Какъв е правилният начин да започнете за тази цел?   -  person ik024    schedule 06.02.2014
comment
Извикването на команди на обвивката чрез su е правилният начин да стигнете до там. Просто трябва да разберете какви команди да извикате - и какви команди са налични. Първото нещо, което трябва да направите: научете как да използвате обвивката на Linux. Android разполага с bourne-shell, така че можете да използвате специфичен за bourne-shell синтаксис.   -  person Johannes H.    schedule 06.02.2014
comment
@JohannesH. така че можем ли да изпълняваме команди на shell, използвайки su от приложението за android?   -  person ik024    schedule 06.02.2014
comment
да вижте моя отговор как да направите това. Можете също така да разгледате страхотния код, свързан от @NirHartmann   -  person Johannes H.    schedule 06.02.2014
comment
@JohannesH. добре, какво не е наред с кода, който публикувах във въпроса си по-горе? Не работеше защо?   -  person ik024    schedule 06.02.2014
comment
Трябва да работи, просто отбелязвайте - su без друга команда за изпълнение няма да направи много. Също така имайте предвид, че телефонът трябва да бъде руутнат, разбира се, в противен случай su двоичният файл не е наличен.   -  person Johannes H.    schedule 06.02.2014
comment
@JohannesH. така че ако искам да тествам приложението на друго устройство, което също трябва да бъде руутнато, нали?   -  person ik024    schedule 06.02.2014
comment
и също така възможно ли е да го тествате в емулатор?   -  person ik024    schedule 06.02.2014
comment
ВСЯКО устройство, което трябва да работи suтрябва да ИМА suofr разбира се, така че да. Не знам за емулатора, предполагам, че не включва su binary, освен ако не инжектирате такъв. Самият аз не съм направил нищо, което изисква su, така че наистина не знам.   -  person Johannes H.    schedule 06.02.2014
comment
@JohannesH. Виждам, че благодаря много за помощта ви :) наистина го оценявам :)   -  person ik024    schedule 06.02.2014


Отговори (2)


Първо: имайте предвид, че можете да изпълнявате команди на shell само с помощта на su (= можете да използвате команди на shell само като root, не и java код).

Второ: Не съм сигурен дали това се отнася за всички приложения на su, но това е помощното съобщение на su на моя телефон:

Usage: su [options] [--] [-] [LOGIN] [--] [args...]

Options:  
  --daemon                      start the su daemon agent  
  -c, --command COMMAND         pass COMMAND to the invoked shell  
  -h, --help                    display this help message and exit  
  -, -l, --login                pretend the shell to be a login shell  
  -m, -p,  
  --preserve-environment        do not change environment variables  
  -s, --shell SHELL             use SHELL instead of the default /system/bin/sh  
  -u                            display the multiuser mode and exit  
  -v, --version                 display version number and exit  
  -V                            display version code and exit,  
                                this is used almost exclusively by Superuser.apk  

Това означава: трябва да стартирате su -c something (или su -c something - root, но root все пак е по подразбиране). по същество това е равно на su на повечето Linux системи, с изключение на daemon-thing, тъй като няма демон, управляващ su извиквания на обикновени Linux системи.

Ако други su команди се държат по различен начин (което е възможно), по-сигурно е да отворите поток към обвивка, да изпълните su, да оцените неговия код за връщане, след това да продължите да изпълнявате други команди, накрая да изпълните exit.

person Johannes H.    schedule 06.02.2014

Тук има добър отговор - ANDROID: Как да получите root достъп в приложение за Android?

„Доколкото знам, можете да изпълнявате команди от командния ред само с права на root. Можете да използвате този общ клас, който направих, който обгръща root достъпа във вашия код: http://muzikant-android.blogspot.com/2011/02/how-to-get-root-access-and-execute.html"

person Nir Hartmann    schedule 06.02.2014