Когда я пытаюсь запустить команду су из моей программы, которая имеет права системы, я получил эту ошибку вернулся на STDERR:Получение ошибки «UID 1000 не допускается су» на Runtime.exec («су»)
UID 1000 не допускается су
Я устанавливаю общий идентификатор пользователя для android.uid.system или android.uid.shell, но это не меняет. Устройство предположительно внедрено. Я действительно не понимаю, что происходит.
Вот код:
private boolean runAsRoot(String cmd, File workdir) throws IOException {
Log.i(LOG_TAG, "Execute command as root: " + cmd);
Process p = Runtime.getRuntime().exec(new String[] {"su", "-c", cmd});
if (p == null) {
Log.e(LOG_TAG, "cannot create process for " + cmd);
return false;
}
int exit = -1;
try {
exit = p.waitFor();
InputStreamReader isr;
if (exit == 0) {
isr = new InputStreamReader(p.getInputStream());
} else {
isr = new InputStreamReader(p.getErrorStream());
}
BufferedReader br = new BufferedReader(isr);
StringBuilder sb = new StringBuilder();
String line;
while ((line = br.readLine()) != null) {
if (sb.length() > 0) {
sb.append('\n');
}
sb.append(line);
}
String string = sb.toString();
Log.l(LOG_TAG, exit == 0 ? Level.INFO : Level.SEVERE, string);
} catch (InterruptedException e) {
Log.e(LOG_TAG, e);
}
return exit == 0;
}
Хорошо, это возможно. По крайней мере, ADB является root. Вы можете получить UID SYSTEM или SHELL, установив для этого общий идентификатор пользователя и подписав APK с ключом и сертификатом производителя (не проблема для меня) – slash33
slash33, ладно, я сделал все это и сделал adb установить, но все равно не может su. Он говорит, что uid 1000 не разрешено su. Может быть, мне нужно как-то установить в системную папку, а не только adb install? – djdance
Конечно, вы не можете - ** Андроид специально разработан, чтобы позволить вам не становиться root на производственные сборки или позволять код приложения * когда-либо выполняться как таковой на * любой * сборке. Если вы хотите попытаться использовать некоторые дыры в области безопасности, вы можете попробовать посмотреть на xda-разработчиков, но это выходит за рамки * этого * веб-сайта, который касается * разработки программного обеспечения *. –