转 Android adb 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/rosepotato/p/3142397.html
转 Android adb root权限相关推荐
- [置顶] Android adb root权限
永久root带文件 因为开发需要,我经常会用到adb这个工具(Android Debug Bridge),我们都知道adb shell默认是没有root权限的,修改系统文件就很不方便了,adb pus ...
- Android adb root权限
永久root带文件 因为开发需要,我经常会用到adb这个工具(Android Debug Bridge),我们都知道adb shell默认是没有root权限的,修改系统文件就很不方便了,adb pus ...
- android adb 存储权限,android adb 权限修改
1. 修改 ADB ROOT权限: system/core$ git diff adb/adb.c diff --git a/adb/adb.c b/adb/adb.c index 99bea0f.. ...
- Android获取Root权限
对于新近入手Android系统手机的机友来说,一定会接触到一个新词"ROOT",他的出现频率很高,在各个论坛上,网友的字里行间经常会出现,那么获取Root权限呢? [b]工具/原料 ...
- 如何获得Android手机Root权限(转http://www.gphans.com/forum/183)
如何获得Android手机Root权限 由 gphans 于 周一, 11/02/2009 - 15:10 提交. 使用技巧 疑问一:Root权限是什么? 疑问二:获取Root权限有什么用? 疑问三: ...
- android应用程序如何获取root权限,Android获取ROOT权限的实例代码
获取Android的ROOT权限其实很简单,只要在Runtime下执行命令"su"就可以了. // 获取ROOT权限 public void get_root(){ if (is_ ...
- android获取root权限的命令
获取Android的ROOT权限其实很简单,只要在Runtime下执行命令"su"就可以了. // 获取ROOT权限public void get_root(){if (is_ro ...
- 获取adb root权限
原文地址为: 获取adb root权限 在开发中,难免在debug release版本时碰倒adb shell权限的问题, 比如QA突然急冲冲的拿着一台出问题的机器跑过来,当你要使用adb shel ...
- Android 命令su,获取Android的ROOT权限其实很简单,只要在Runtime下执行命令su就可以了。复制代码 代码如下:// 获取ROOT权限public void...
获取Android的ROOT权限其实很简单,只要在Runtime下执行命令"su"就可以了. // 获取ROOT权限 public void get_root(){ if (is_ ...
- android 永久root权限,安卓 实现永久性开启adb 的root权限
adb 的root 权限是在system/core/adb/adb.c 中控制.主要根据ro.secure 以及 ro.debuggable 等system property 来控制. 默认即档ro. ...
最新文章
- sqlite 使用 cte 及 递归的实现示例
- 思源黑体ttf_模块模板 | 简单方法替换将TTF格式字体转换为Magisk模块
- 直播 | ICML 2021论文解读:对神经网络中层特征复杂度的解释与拆分
- 如何合理的规划jvm性能调优
- JDK(Install)
- 使用python中正则表达式匹配linux ifconifg命令中的具体信息
- 斯坦福大学的 CS231n课程
- node2vec python_Node2vec和networkx
- 鸢尾花数据集的各种玩法
- Ember项目引入js依赖
- GreenPlum ANALYZE
- 鼠标光标变成方块怎么办
- 负压式爬壁机器人_负压吸附式爬壁机器人的体重设计
- 华为往事(十一)---华为的“中南海”
- 使用宏定义写出swap(x,y)
- WRF气象数据之NECP FNL数据批量下载
- ios申请企业开发者账号的代理_2020年苹果ios企业开发者账号的申请流程攻略(最专业详细)...
- QGIS制作精美地图
- SDL解析——SDL简介
- MOOC人工智能原理学习笔记4——有信息搜索
热门文章
- 怎样通过java用web3j查询以太坊交易信息?
- 【转】php json_encode中文为空的解决办法
- OGRE: OgreOverlaySystem.h: No such file or directory
- 服务端端口状态和客户端端口状态解释-LISTENING-ESTABLISHED-TIME_WAIT
- CentOs 6.2 x64双网卡绑定
- 一起了解和成为“敏捷个人”(为参加5.29活动预热)
- 批量下载 Windows 零散系统更新的得力工具 -Windows Updates Downloader
- 4月1日标准IO和文件IO的区别(个人收藏)
- pytorch 神经网络构造
- 第四季-专题12-按键驱动程序设计