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

Adb shell su работает, но adb root не

Я укоротил свою разблокированную Galaxy S3 (SGH-T999)

Теперь я пытаюсь запустить adb root из командной строки Windows, однако, я получаю ошибку adbd cannot run as root in production builds. Итак, самое первое, что я проверил, был ли мой телефон действительно укоренен?

Итак, я попробовал следующее:

Откройте командную строку

$adb devices // lists my device
$adb shell //goes to shell
$su // opens a 'SuperSu' prompt on my phone and I 'Grant' permission
# // Before following the rooting instructions, I was getting 'no su command found' in the previous step. So, I believe my phone is ROOTED. **Correct me if I'm wrong.**

Однако, когда я делаю adb root, я получаю ошибку adbd cannot run as root in production builds. Поэтому, подумал я, мне, возможно, придется сделать некоторые дополнительные вещи, кроме того, что я сделал выше. Я пробовал все решения в следующих SO-вопросах:

Ничто из этого не помогло мне. Все, что они делают, - это доступ к ROOT INSIDE от SHELL. Я хочу, чтобы adb root работал, чтобы я мог выполнять различные команды adb БЕЗ вставки в оболочку.

4b9b3361

Ответ 1

В некоторых дружественных к программированию ПЗУ вы можете просто включить Root Access в Settings > Developer option > Root access. После этого становится доступным adb root. К сожалению, это не работает для большинства биржевых дисков на рынке.

Ответ 2

По замыслу команда adb root работает только в сборках разработки (т.е. eng и userdebug, которые имеют ro.debuggable=1 по умолчанию). Поэтому, чтобы включить команду adb root на вашем устройстве с правами root, просто добавьте строку ro.debuggable=1 в один из следующих файлов:

/system/build.prop
/system/default.prop
/data/local.prop

Если вы хотите, чтобы adb shell по умолчанию начинался как root, то добавьте также ro.secure=0.

В качестве альтернативы вы можете использовать модифицированный двоичный файл adbd (который не проверяет наличие ro.debuggable)

С https://android.googlesource.com/platform/system/core/+/master/adb/daemon/main.cpp

#if defined(ALLOW_ADBD_ROOT)
// The properties that affect 'adb root' and 'adb unroot' are ro.secure and
// ro.debuggable. In this context the names don't make the expected behavior
// particularly obvious.
//
// ro.debuggable:
//   Allowed to become root, but not necessarily the default. Set to 1 on
//   eng and userdebug builds.
//
// ro.secure:
//   Drop privileges by default. Set to 1 on userdebug and user builds.

Ответ 3

У меня есть встроенный Samsung Galaxy Trend Plus (GT-S7580).

Запуск "adb root" дает мне то же самое, что "adbd не может выполняться с ошибкой root in production".

Для устройств, имеющих параметры разработчика → Root access, выберите "Только ADB", чтобы обеспечить доступ к устройству с помощью adb root (как предложено NgaNguyenDuy).

Затем попробуйте запустить команду в соответствии с решением запустите script как root через ADB. В моем случае я просто хотел запустить команду netcfg rndis0 dhcp, и я сделал это следующим образом:

adb shell "su -c netcfg rndis0 dhcp"

Пожалуйста, проверьте, выполняете ли вы какие-либо ошибки во время работы таким образом.

Если он все еще не работает, проверьте правильность установки устройства. Если вам все еще не повезло, попробуйте установить пользовательский диск, например Cyanogen Mod, чтобы работать с "adb root".

Ответ 4

Вам нужно заменить двоичный файл adbd в файле boot.img/sbin/на тот, который способен su. Вам также придется внести некоторые изменения по умолчанию.prop тоже.

Samsung, похоже, делает это более сложным, чем другие продавцы. У меня есть некоторые двоичные файлы adbd, которые вы можете попробовать, но для этого потребуется знание о -c ompiling и re -c, оспаривающее boot.img с новым двоичным кодом. Кроме того, если у вас заблокированный загрузчик... это не произойдет.

Кроме того, Chainfire имеет приложение, которое предоставит разрешение root для adbd в магазине воспроизведения: https://play.google.com/store/apps/details?id=eu.chainfire.adbd&hl=en

Наконец, если вы пытаетесь написать сценарий Windows с разрешениями SU, вы можете сделать это, используя следующий командный стиль... Тем не менее, вам, по крайней мере, нужно предоставить (по телефону) разрешения SU, чтобы время его запуска...,

adb shell "su -c ls" <-list рабочий каталог с правами su. adb shell "su -c echo anytext>/data/test.file"

Это лишь некоторые примеры. Если вы конкретно заявляете, что вы пытаетесь выполнить, я могу дать более конкретные советы

-scosler

Ответ 5

Я использую для режима su su в оболочке abd

adb shell "su"

Ответ 6

Я столкнулся с этой проблемой при попытке запустить эмулятор, я узнал, что это потому, что я запускал эмулятор Nexus 5x, на котором был Google Play. Создал другой эмулятор, у которого не было google play и adb root, запустит устройство для вас. Надеюсь, это поможет кому-то.

Ответ 7

Если вам действительно нужно, чтобы ADB работает как root, самым быстрым и простым способом является установка пользовательских ПЗУ Android, а наиболее популярным является CyanogenMod, поскольку в меню параметров разработчика есть опции Root Access, где вы можете указать root-доступ к apps and ADB. Раньше я использовал CM, но поскольку он больше не был разработан, я попытался найти некоторые решения там. Хотя CyanogenMod по-прежнему является хорошей альтернативой, потому что у него нет вирусов.

Одна из альтернатив, которую я узнал от друга, использует приложение adbd insecure, которое вы можете попробовать здесь: https://forum.xda-developers.com/showthread.php?t=1687590. В моем случае он работает perferct с пользовательским ядром Android, но не с Android-плейером Android (только с ванильным андроидом). Вы также можете попробовать другие альтернативы, например, изменить boot.img на Android-ROM.

Ответ 8

adbd имеет флаг/опцию компиляции для включения корневого доступа: ALLOW_ADBD_ROOT=1.

До Android 9: если adbd на вашем устройстве скомпилирован без этого флага, он всегда будет сбрасывать привилегии при запуске, и, таким образом, "adb root" вообще не поможет. Мне пришлось пропатчить вызовы setuid(), setgid(), setgroups(), и я сам выпал из двоичного файла, чтобы получить постоянный рутированный adbd на моем устройстве для чтения электронных книг.

С Android 10 это изменилось; когда телефон/планшет разблокирован (ro.boot.verifiedbootstate == "orange"), тогда в любом случае возможен режим root adb.