如何永久性开启adb 的adb root权限限

当贝市场教你如何获取adb root权限
Android 系统rom里面最主要的就3个文件:boot.img、system.img、userdata.img。其中boot.img 存放着内核以及Android系统的配置信息,比如android系统各文件夹的读写权限,adb 的权限。所以如果你要修改adb的root权限,修改boot.img对应的地方就行了。system.img中存放的是系统的各种库,系统预装的app等,userdata.img是存放用户的配置信息。本文将介绍如何解开boot.img文件,修改对应的文件,使adb 登录后为root用户。
使用工具:
bootimg.exe 常用于解包boot.img 、recovery.img等等。
简要流程:
1.解包 boot.img
命令: bootimg --unpack-bootimg
注:boot.img应和bootimg.exe在同一目录下。
2.解包 ramdisk.gz (从boot.img 解包获得)
命令: bootimg --unpack-ramdisk
注:会产生目录initrd,此目录下包含各种可执行程序和驱动程序。在此目录下修改文件default.prop。将ro.secure=0,意为关闭保护。
3.打包 ramdisk.gz
命令: bootimg --repack-ramdisk
注:当前目录必须存在cpiolist.txt 和initrd目录 ,
4.打包boot.img
命令: bootimg --repack-bootimg
5.将boot.img刷入,在PC机上测试。
ROOT有风险,需谨慎!
责任编辑:
声明:本文由入驻搜狐号的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。
当贝市场TV版是一款专为智能电视和安卓电视盒量身打造的应用市场
ZNDS智能电视网是全国极具影响力的智能电视论坛
今日搜狐热点Android 如何永久性开启adb 的root权限 M
adb 的root 权限是在system/core/adb/adb.c 中控制。主要根据ro.secure 以及 ro.debuggable 等system property 来控制。默认即档ro.secure 为0 时,即开启root 权限,为1时再根据ro.debuggable 等选项来确认是否可以用开启root 权限。为此如果要永久性开启adb 的root 权限,有两种修改的方式:
1. 修改system property ro.secure, 让ro.secure=0。
2. 修改adb.c 中开启root 权限的判断逻辑。 下面详细说明这两种修改方式:
第一种方法. 修改system property ro.secure, 让ro.secure=0。
(1)修改alps/build/core/main.mk
ifneq (,$(user_variant))
# Target is secure in user builds.
ADDITIONAL_DEFAULT_PROPERTIES += ro.secure=1 将ADDITIONAL_DEFAULT_PROPERTIES += ro.secure=1 改成 ADDITIONAL_DEFAULT_PROPERTIES += ro.secure=0 (2)在android JB 版本(4.1) 以后,google 从编译上直接去除了adbd 的user 版本root 权限, 为此您要修改system/core/adb/.mk 中的编译选项ALLOW_ADBD_ROOT, 如果没有打开这个选项,那么adb.c 中将不会根据ro.secure 去选择root 还是shell 权限,直接返回shell 权限。因此您必须需要Android.mk 中的第126行:
ifneq (,$(filter userdebug eng,$(TARGET_BUILD_VARIANT)))
===& ifneq (,$(filter userdebug user eng,$(TARGET_BUILD_VARIANT)))
第二种方法. 修改adb.c 中开启root 权限的判断逻辑。这里针对4.1 以后版本 和4.1以前版本有所区别。
(1).如果是JB 4.1 以后版本,直接修改函数should_drop_privileges() 函数, 清空这个函数,直接返回 0 即可。返回0 即开启root 权限。 (2).如果是JB 4.1 以前版本,直接修改函数adb_main 函数,在
/* don't listen on a port (default 5037) if running in secure mode */
/* don't run as root if we are running in secure mode */
if (secure) {
struct __user_cap_header_
struct __user_cap_data_ if (prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0) != 0) {
在这段代码前加一行: secure = 0; //mtk71029 add for root forever. /* don't listen on a port (default 5037) if running in secure mode */
/* don't run as root if we are running in secure mode */
if (secure) {
struct __user_cap_header_
struct __user_cap_data_ if (prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0) != 0) {
[测试与确认]
当修改完成后,只需要重新build bootimage ,然后download 即可,然后到setting 中开启debug 选项,adb 连接后,会显示 #, 即root 成功。 如果贵司没有拿到adb 的source, 而贵司又需要自己修改adb 的话, 那么就麻烦贵司提交eService。由我司进一步协助贵司处理。
JB 版本后user build + eng bootimage 无法开机
如何打开user debug选项
JB 4.2 user 版本的开发选项不见了,如何打开adb debug博客访问: 715732
博文数量: 125
博客积分: 7235
博客等级: 少将
技术积分: 2087
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: Android平台
在linux系统上,使用普通用户连接adb的时候经常出现权限问题:
[niutao@niutao] $ adb shell
adb server is out of date. killing...
* daemon started successfully *
error: insufficient permissions for device
虽然可以通过切换成root用户,然后adb kill-server & adb start-server解决,但每次切换终端或者重启之后还是要重新kill一下,比较麻烦,所以可以通过以下方法永久解决:
首先找到adb命令所在的目录:
[niutao@niutao] $ whereis adb
adb: /sbin/adb /usr/sbin/adb
而后给adb命令加上s权限:
[niutao@niutao /sbin] $ sudo chmod a+s adb
这样就永久解决权限问题啦。
阅读(12253) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。[Solution]
adb 的root 权限是在system/core/adb/adb.c 中控制。主要根据ro.secure 以及 ro.debuggable 等system property 来控制。
默认即档ro.secure 为0 时,即开启root 权限,为1时再根据ro.debuggable 等选项来确认是否可以用开启root 权限。为此如果要永久性开启adb 的root 权限,有两种修改的方式:
1. 修改system property ro.secure, 让ro.secure=0。
2. 修改adb.c 中开启root 权限的判断逻辑。
* 在L 版本上adb 会受到SELinux 的影响, 所以需要调整SELinux policy 设置.
下面详细说明这两种修改方式:
第一种方法. 修改system property ro.secure, 让ro.secure=0。
(1)修改alps/build/core/main.mk&
ifneq (,$(user_variant))
# Target is secure in user builds.
ADDITIONAL_DEFAULT_PROPERTIES += ro.secure=1
将ADDITIONAL_DEFAULT_PROPERTIES += ro.secure=1 改成 ADDITIONAL_DEFAULT_PROPERTIES += ro.secure=0 即可。
(2)在android JB 版本(4.1) 以后,google 从编译上直接去除了adbd 的user 版本root 权限, 为此您要修改system/core/adb/Android.mk 中的编译选项ALLOW_ADBD_ROOT, 如果没有打开这个选项,那么adb.c 中将不会根据ro.secure 去选择root 还是shell 权限,直接返回shell 权限。因此您必须需要Android.mk 中的第126行:
& & ifneq (,$(filter userdebug eng,$(TARGET_BUILD_VARIANT)))
& & ===& ifneq (,$(filter userdebug user eng,$(TARGET_BUILD_VARIANT)))
(3)在android L (5.0) 以后, google 默认开启SELinux enforce mode, 需要在user build 上将su label 默认build 进SEPolicy.
& &放开SELinux 的限制. 更新alps/external/sepolicy/Android.mk 116 行, &将su label 默认编译进入sepolicy.
sepolicy_policy.conf := $(intermediates)/policy.conf
$(sepolicy_policy.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
$(sepolicy_policy.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
$(sepolicy_policy.conf) : $(call build_policy, $(sepolicy_build_files))
@mkdir -p $(dir $@)
$(hide) m4 -D mls_num_sens=$(PRIVATE_MLS_SENS) -D mls_num_cats=$(PRIVATE_MLS_CATS) \
-D target_build_variant=$(TARGET_BUILD_VARIANT) \
-D force_permissive_to_unconfined=$(FORCE_PERMISSIVE_TO_UNCONFINED) \
-s $^ & $@
$(hide) sed '/dontaudit/d' $@ & $@.dontaudit
&将-D target_build_variant=$(TARGET_BUILD_VARIANT) 改成 -D target_build_variant=eng
即第一种方法在android L(5.0) 以后你需要改(1),(2),(3).&
第二种方法. 修改adb.c 中开启root 权限的判断逻辑。这里针对4.1 以后版本 和4.1以前版本有所区别。
(1).如果是JB 4.1 以后版本,直接修改函数should_drop_privileges() 函数, 清空这个函数,直接返回 0 即可。返回0 即开启root 权限。
(2).如果是JB 4.1 以前版本,直接修改函数adb_main 函数,在
/* don't listen on a port (default 5037) if running in secure mode */
/* don't run as root if we are running in secure mode */
if (secure) {
struct __user_cap_header_
struct __user_cap_data_
if (prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0) != 0) {
在这段代码前加一行:
secure = 0;
//mtk71029 add for root forever.
/* don't listen on a port (default 5037) if running in secure mode */
/* don't run as root if we are running in secure mode */
if (secure) {
struct __user_cap_header_
struct __user_cap_data_
if (prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0) != 0) {
(3)在android L (5.0) 以后, google 默认开启SELinux enforce mode, 需要在user build 上将su label 默认build 进SEPolicy.
& &放开SELinux 的限制. 更新alps/external/sepolicy/Android.mk 116 行, &将su label 默认编译进入sepolicy.
sepolicy_policy.conf := $(intermediates)/policy.conf
$(sepolicy_policy.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
$(sepolicy_policy.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
$(sepolicy_policy.conf) : $(call build_policy, $(sepolicy_build_files))
@mkdir -p $(dir $@)
$(hide) m4 -D mls_num_sens=$(PRIVATE_MLS_SENS) -D mls_num_cats=$(PRIVATE_MLS_CATS) \
-D target_build_variant=$(TARGET_BUILD_VARIANT) \
-D force_permissive_to_unconfined=$(FORCE_PERMISSIVE_TO_UNCONFINED) \
-s $^ & $@
$(hide) sed '/dontaudit/d' $@ & $@.dontaudit
&将-D target_build_variant=$(TARGET_BUILD_VARIANT) 改成 -D target_build_variant=eng &
即第二种方法在android L(5.0) 以后你需要改(1),(3). &&
[测试与确认]
当修改完成后,只需要重新build bootimage ,然后download 即可,然后到setting 中开启debug 选项,adb 连接后,会显示 #, 即root 成功。
本文已收录于以下专栏:
相关文章推荐
分类: Android MTK
18:00 427人阅读 评论(0) 收藏 举报
csdnAndroidgoogleapkframeworks
    ...
在开发中,难免在debug  release版本时碰倒adb shell权限的问题,
比如QA突然急冲冲的拿着一台出问题的机器跑过来,当你要使用adb shell做一些测试时竟然发现没有ro...
按照我的步骤来。第一步下载ileeky同学发布的4.2.2的ADB和superuser,然后把这个文件夹:adb_4.2.2解压到C盘根目录,把superuser(不用解压) 放到adb_4.2.2 ...
在Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个惟一的inode号。文件属性保存在索引结点里,在访问文件时,索引结点被复制到内存中,从而实现文件的快速访问。...
http://blog.csdn.net/tankai/article/details/
本文将从几个方面,由浅至深地讲述ROOT到底是什么东西?一. ROOT权限简...
adb 的root 权限是在system/core/adb/adb.c 中控制。主要根据ro.secure 以及 ro.debuggable 等system property 来控制。
默认即档ro...
一、root电视
1、必备文件:
adb:得到adb:得到一个adb工具(lz下载了个百度的一键root,使用主目录下的adb文件)。
su:网上下载吧,通过这个文件...
[Description]
如何永久性开启adb 的root权限
user debug root adb adbd
[Solution]
* adb 的roo...
adb shell获取root权限
因为开发需要,我经常会用到adb这个工具(Android Debug Bridge),我们都知道adbshell默认是没有root权限的,修改系统文件就很不方便了...
/blues_/p/3582097.html
永久root带文件
因为开发需要,我经常会用到adb这个工具(Android Debug Br...
他的最新文章
讲师:王哲涵
讲师:韦玮
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)发烧友教你如何获取adb root权限
我的图书馆
发烧友教你如何获取adb root权限
对安卓系统还不是很了解的亲们,这里卤煮给大家科普下Android 系统。
Android 系统rom里面最主要的就3个文件:boot.img、system.img、userdata.img。
其中用来获取adb root权限的文件就是boot.img。所以如果你要修改adb的root权限,修改boot.img对应的地方就行了。
今天卤煮这里主要是给大家讲解下如何解开boot.img文件,修改对应的文件,使adb 登录后为root用户,也就是获取adb root权限。
看教程之前,提示下大家:root是有风险的,需要谨慎。
本帖隐藏的内容使用工具:
bootimg.exe 常用于解包boot.img 、recovery.img等等。
简要流程:
1.解包 boot.img
命令: bootimg --unpack-bootimg
注:boot.img应和bootimg.exe在同一目录下。
2.解包 ramdisk.gz (从boot.img 解包获得)
命令: bootimg --unpack-ramdisk
注:会产生目录initrd,此目录下包含各种可执行程序和驱动程序。在此目录下修改文件default.prop。将ro.secure=0,意为关闭保护。
3.打包 ramdisk.gz
命令: bootimg --repack-ramdisk
注:当前目录必须存在cpiolist.txt 和initrd目录 ,
4.打包boot.img
命令: bootimg --repack-bootimg
5.将boot.img刷入,在PC机上测试。
TA的最新馆藏[转]&[转]&[转]&[转]&[转]&
喜欢该文的人也喜欢}

我要回帖

更多关于 adb 获取root权限 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信