На производстве — user
сборка ПЗУ — вы не можете запускаться adbd
с правами root, если ПЗУ или хотя бы adbd
двоичный файл не пересобраны с необходимыми изменениями. Причина — ALLOW_ADBD_ROOT
флаг сборки ( 1 , 2 ) .
Именно поэтому был разработан adbd Insecure , заменивший adbd
бинарник на модифицированный.
В сборке userdebug
или eng
(или с небезопасным adbd
двоичным файлом, извлеченным из любого из этих типов сборки):
ro.secure=0
, adbd
запускается от имени пользователя root, если он включен в настройках (параметры разработчика) ( 3 ) . Однако adb root
не будет работать ( 4 ) .ro.debuggable=1
, adb root
перезапустится adbd
как root ( 5 , 6 ) .Однако adbd
можно собрать из модифицированного исходного кода, чтобы пропустить все эти проверки. Кроме того, следует позаботиться о SELinux, если он находится в enforcing
режиме. adbd
должен быть разрешен запуск в неограниченном контексте суперпользователя: u:r:su:s0
( 7 , 8 ) , что не относится к user
сборкам ( 9 , 10 , 11 ) . Смотрите этот ответ для более подробной информации.
Свойства Android могут быть перезаписаны с помощью /data/local.prop
on userdebug
/ eng
builds, т. е. если ALLOW_LOCAL_PROP_OVERRIDE
установлен флаг сборки ( 12 , 13 ) . Но это не работает для ro.*
свойств ( 14 ) и то же самое верно для setprop
инструмента командной строки. Однако файл default.prop
/ prop.default
, который может быть расположен в нескольких возможных местах в зависимости от конфигурации сборки устройства ( 15 ) , может быть изменен для изменения свойств, доступных только для чтения (если они еще не установлены из какого-либо другого файла или *.rc
файла свойств). Если файл находится в ramdisk, boot.img
его необходимо изменить.
Инструмент Magisk resetprop может сбросить свойства только для чтения, даже если они уже установлены. ro.secure
и ro.debuggable
оба, возможно, были изменены как часть политики MagiskHide ( 16 ) , которую вы можете вернуть обратно, чтобы разрешить adbd
запуск от имени пользователя root.
Другим связанным свойством является ro.adb.secure
, которое управляет аутентификацией с открытым ключом. При установке ro.adb.secure=0
на userdebug
/ eng
builds аутентификация пропускается (никаких device unauthorized
сообщений никогда) ( 17 , 18 , 19 ) ; связанный: место хранения «adb_keys» .
ro.build.type
Иззи
adb root
не работает с «производственными сборками» (например, со стандартными ПЗУ, даже если они рутированы). Поэтому, если у вас нет «ПЗУ разработчика», шансы, что это что-то сделает, довольно малы.