转adb Shell root 权限
永久root带文件
因为开发需要,我经常会用到adb这个工具(Android Debug Bridge),我们都知道adb shell默认是没有root权限的,修改系统文件就很不方便了,adb push一个文件就提示Permission Denied。删除system下的文件也没有权限。其实有两种方法可以获取adb shell的root权限,这两种方法的前提都是手机已经root。 1、用su可以提权,直接执行su就会看到用户命令提示符由”$”变成了”#”,如果手机没有root,会提示su: Permission Denied。这个文件不是每个手机都有的,可以百度。 解压后把su放在adb同一目录下,执行:
adb push su /system/bin/adb shell chmod4755/system/bin/su
如果提示Read-only filesystem,那么就要重新挂载一下/system,把只读挂载成可读写,只有手机root了才能运行:
mount -o remount,rw/dev/block/mtdblock0/system /
再运行su就能让adb shell获取root权限了。 2、可以修改根目录下的default.prop提权: 根目录默认是不允许修改的,执行
mount -o remount,rw rootfs/
用vi打开default.prop,找到ro.secure,修改为ro.secure=0,保存后重启,再adb shell一下,就会有root权限了。 方法:
修改./default.prop
把ro.secure设为0,persist.service.adb.enable设为1,adbd进程就会以root用户的身份启动。
其实两篇文章大体效果不同,这个是完全破除限制,下文只是部分 至于文中所提到的su文件,是指被修改过的,无任何验证的,这样安全性大大降低,推荐完整root前,先备份原su文件。
原理:
可以看一下Android系统根目录下的/init.rc的片段:
... ...
# adbd is controlled by the persist.service.adb.enable system property
service adbd /sbin/adbd
disabled
# adbd on at boot in emulator
on property:ro.kernel.qemu=1
start adbd
on property:persist.service.adb.enable=1
start adbd
on property:persist.service.adb.enable=0
stop adbd
... ...
这里定义了一个触发器,只要persist.service.adb.enable值被置为1,就会启动/sbin/adbd。
在build目录下搜索一下,发现了main.mk中有这样的代码片段
## user/userdebug ##
user_variant := $(filter userdebug user,$(TARGET_BUILD_VARIANT))
enable_target_debugging := true
ifneq (,$(user_variant))
# Target is secure in user builds.
ADDITIONAL_DEFAULT_PROPERTIES += ro.secure=1
tags_to_install := user
ifeq ($(user_variant),userdebug)
# Pick up some extra useful tools
tags_to_install += debug
else
# Disable debugging in plain user builds.
enable_target_debugging :=
endif
# TODO: Always set WITH_DEXPREOPT (for user builds) once it works on OSX.
# Also, remove the corresponding block in config/product_config.make.
ifeq ($(HOST_OS)-$(WITH_DEXPREOPT_buildbot),linux-true)
WITH_DEXPREOPT := true
endif
# Disallow mock locations by default for user builds
ADDITIONAL_DEFAULT_PROPERTIES += ro.allow.mock.location=0
else # !user_variant
# Turn on checkjni for non-user builds.
ADDITIONAL_BUILD_PROPERTIES += ro.kernel.android.checkjni=1
# Set device insecure for non-user builds.
ADDITIONAL_DEFAULT_PROPERTIES += ro.secure=0
# Allow mock locations by default for non user builds
ADDITIONAL_DEFAULT_PROPERTIES += ro.allow.mock.location=1
endif # !user_variant
ifeq (true,$(strip $(enable_target_debugging)))
# Target is more debuggable and adbd is on by default
ADDITIONAL_DEFAULT_PROPERTIES += ro.debuggable=1 persist.service.adb.enable=1
# Include the debugging/testing OTA keys in this build.
INCLUDE_TEST_OTA_KEYS := true
else # !enable_target_debugging
# Target is less debuggable and adbd is off by default
ADDITIONAL_DEFAULT_PROPERTIES += ro.debuggable=0 persist.service.adb.enable=0
endif # !enable_target_debugging
这段代码我大致解释一下:
主要通过判断当前的编译模式来给几个属性赋予不同的值,然后把属性存储在ADDITIONAL_DEFAULT_PROPERTIES这个变量中,这个变量在后面是要写到根目录下的/default.prop中去,在系统启动时被属性服务加载的。也就是说我们在/default.prop中看到的几个属性的值是在这里设置的。
只看两个属性ro.secure,persist.service.adb.enable。当前是user模式的话,编译系统会把ro.secure置为1,把persist.service.adb.enable置为0.也就是说,用user模式编译出来的系统运行在安全模式下,adbd默认关闭。即使通过设置属性的方式打开,adbd进程的用户也是shell,不具有root权限。这样,普通用户或者开发者拿到一个机器后,通过PC运行adb shell时,是以shell用户登录机器的。
好了,现在把ro.secure置为0,再重新编译,只要设置属性persist.service.adb.enable的值为1,adbd进程就会以root用户的身份启动。
转载于:https://www.cnblogs.com/blues_/p/3582097.html
转adb Shell root 权限相关推荐
- 解决adb shell root权限
adb shell默认是没有root权限的,修改系统文件就很不方便.有两种方法可以获取adb shell的root权限,这两种方法的前提都是手机已经root. 1.用su可以提权,直接执行su就会看到 ...
- android 永久root权限,安卓 实现永久性开启adb 的root权限
adb 的root 权限是在system/core/adb/adb.c 中控制.主要根据ro.secure 以及 ro.debuggable 等system property 来控制. 默认即档ro. ...
- android apk 永久root,Android 实现永久性开启adb 的root权限
adb 的root 权限是在system/core/adb/adb.c 中控制.主要根据ro.secure 以及 ro.debuggable 等system property 来控制. 默认即档ro. ...
- adb为Android的root方法,Android 实现永久性开启adb 的root权限
adb 的root 权限是在system/core/adb/adb.c 中控制.主要根据ro.secure 以及 ro.debuggable 等system property 来控制. 默认即档ro. ...
- adb授权root权限,adb能否获得root权限
adb能否获得root权限 如果你说的是用ADB指令给手机root权限,不能 如果你说的是手机已经活动root权限了给adb root权限,可以 手机root权限获取 手机root权限获取1 手机ro ...
- adb root android 6,ADB获得ROOT权限的探究——基于Android6.0
ADB概述 adb的全称是Android Debug Bridge,是对Android设备进行调试的工具.这是调试通信的方式是基于C/S构架.在Android设备,运行ADBD服务,等待Client端 ...
- android电视root权限获取,电视盒子/ 智能电视如何通过ADB获取ROOT权限?
如何通过adb获取root权限(安卓电视盒和智能电视通用)? Android 系统rom里面最主要的就3个文件:boot.img.system.img.userdata.img 其中boot.img ...
- adb shell root
因为开发需要,我经常会用到adb这个工具(Android Debug Bridge),我们都知道adb shell默认是没有root权限的,修改系统文件就很不方便了,adb push一个文件就提示Pe ...
- Android 控制台读取sqlite数据库以及adb获取root权限问题
(个人经验,仅供参考,错误之处,敬请谅解) 读取sqlite数据文件 1.命令行 adb.sqlite命令最好设置成环境变量,否则需要先进入该文件夹. adb shell 进入虚拟机shell ...
最新文章
- PHP微信公众号开发插件,基于ThinkCMF1.5.0开发的微信公众号插件
- 我们准备在网关中支持GrahpQL了
- NASA打算送机器蜜蜂去探索火星上的生命痕迹
- 模拟usb设备_高速USB数据采集卡
- Linux Mint 18.2 Sonya 将于 6 月上旬发布公测版本
- Go聊天室的思路:一个拨号 一个监听
- CF 1103B Game with modulo
- 权限管理系统之字典(代码)管理
- 简单的避免idea自动导入 *
- MVC3+EF4.1学习系列(五)----- EF查找导航属性的几种方式
- Linux没有可用软件包 p7zip、 p7zip-plugins
- 机器学习正则化线性回归(调参技巧(matlab))
- 阿里云服务器搭建ftp服务器
- win10的当前桌面壁纸保存位置
- 给定一个无重复元素的数组 candidates 和一个目标数 target .
- android mjpg格式,Camera常用格式MJPEG和jpeg-turbo库
- java实现二维码扫码下载APP
- 十大开源Web应用安全测试工具
- 在平板电脑与移动3G大爆炸的时代,昔日霸主微软的反击
- C语言 strcpy 和 strcpy_s 函数区别 - C语言零基础入门教程
热门文章
- JZOJ 1321. 灯
- android excel 筛选功能,Android实现Excel表格展示数据
- crt脚本怎么添加等待时间_secureCRT自动化脚本(之定时任务)
- python文档生成工具_pydoc --- 文档生成器和在线帮助系统 — Python 3.9.1rc1 文档
- ICCV 2017 《Unsupervised Learning from Video to Detect Foreground Objects in Single Images》论文笔记
- 体育场[带权并查集]
- 大学加权平均分计算器_英国排名前20的大学GPA要求
- linux命令速查手册_干货| 有了这个速查手册,还怕Linux命令记不住?
- mc服务器村民交易修改,【原创】【教程】MCPE自定义村民交易内容
- 通过ITypedList实现数据绑定扁平化