Android adb等 获取root权限

2023-11-09

Android adb 获取root权限

       (1) 自己编译的Android 中,adb shell后 自动获取root权限(即显示#而不是$):

方法:

修改./default.prop

把ro.secure设为0,persist.service.adb.enable设为1,adbd进程就会以root用户的身份启动。原理请看以下转载文章。

       (2)其他程序要获得root权限(无GUI确认):

               需要使用完全自由的su程序,改造自Superuser的su源码– 无限制无管理功能的suhttps://github.com/wendal/android_su),这里提供的su,去掉了GUI确认等繁琐操作,任何程序都可以无提示获取root权限,自行添加的话,请确保所在分区支持suid,并设置su的权限为6777。(引用自:让你的Android彻底裸奔吧!! — 瘫痪Android的安全机制 http://wendal.net/321.html

 

以下文章为转载:

 

方法:

修改./default.prop

把ro.secure设为0,persist.service.adb.enable设为1,adbd进程就会以root用户的身份启动。

 

 

原理:

可以看一下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用户的身份启动。

转自:http://hi.baidu.com/jugege/blog/item/fae44f226b54e3e9d6cae248.html

http://blog.csdn.net/koko7958/article/details/6972239

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android adb等 获取root权限 的相关文章

随机推荐

  • python : is 和==的区别

    Python中的对象包含三要素 id type value 1 id用来唯一标识一个对象 is判断的是a对象是否就是b对象 是通过id来判断的 2 type标识对象的类型 3 value是对象的值 判断的是a对象的值是否和b对象的值相等 是
  • Android音频系统之AudioFlinger(一)

    1 1 AudioFlinger 在上面的框架图中 我们可以看到AudioFlinger 下面简称AF 是整个音频系统的核心与难点 作为Android系统中的音频中枢 它同时也是一个系统服务 启到承上 为上层提供访问接口 启下 通过HAL来
  • 数据模型建模详解

    问题导读 1 数据层次如何划分 2 如何进行数据划分及命名空间约定 3 ODS层分为几部分 数据层次的划分 ODS Operational Data Store 操作数据层 在结构上其与源系统的增量或者全量数据基本保持 一致 它相当于一个数
  • 基于MATLAB的模糊pi控制器的设计

    基于MATLAB的模糊pi控制器的设计 模糊规则隶属函数的建立 a newfis fuzzypid 添加第一个输入变量e a addvar a input e 1 1 a addmf a input 1 N zmf 1 1 3 a addm
  • 用Qt写软件系列二:QCookieViewer(浏览器Cookie查看器)

    预备 继上篇 浏览器缓存查看器QCacheViewer 之后 本篇开始QCookieViewer的编写 Cookie技术作为网站收集用户隐私信息 分析用户偏好的一种手段 广泛应用于各大网站 对于网站的精准营销 使用反馈 数据挖掘等具有不可估
  • 华为OD题目:统一限载货物数最小值

    华为OD机试 统一限载货物数最小值 题目描述 火车站附近的货物中转站负责将到站货物运往仓库 小明在中转站负责调度2K辆中转车K辆干货中转车 K辆湿货中转车 货物由不同供货商从各地发来 各地的货物是依次进站 然后小明按照卸货顺序依次装货到中转
  • 2008.06.01 读华为前执行副总裁李玉琢的《我与商业领袖的合作与冲突》有感(二)

    读华为前执行副总裁李玉琢的 我与商业领袖的合作与冲突 有感 二 关于作者的收山之作 利德华福之战 李玉琢如何收拾人心 天地虽小故事多 人生成就有几何 放杯一饮长江水 何计万里波与折 做人虽难仍须做 问心无愧是原则 人间会有公道在 种瓜种豆各
  • Centos7环境下配置IEEE 802.3ad 动态链接聚合(bond4)

    环境 Centos7 6 Vmware 添加2块网卡 查看网卡配置文件 root linux ls etc sysconfig network scripts grep ens ifcfg ens33 查看发现只有一个网卡的配置文件 因此需
  • 牛客题库—软件测试(一)

    下面几种白盒测试技术 哪种是最强的覆盖准则 D 条件组合覆盖 六种覆盖方法中 覆盖准则由弱到强依次是语句覆盖 判定覆盖 分支覆盖 条件覆盖 判定 条件覆盖 条件组合覆盖 路径覆盖 其中 语句覆盖是使得程序中每个语句至少被执行一次 判定覆盖是
  • webpack- JavaScript 应用程序的静态模块打包器

    一 概念 本质上 webpack 是一个现代 JavaScript 应用程序的静态模块打包器 module bundler 当 webpack 处理应用程序时 它会递归地构建一个依赖关系图 dependency graph 其中包含应用程序
  • DrawerLayout的openDrawer()和closeDrawer()方法

    如下代码 DrawerLayout mdrawerLayout Button btn 以上为声明组件 为简便其余过程省略 btn setOnClickListener new OnClickListener mdrawerLayout op
  • Go Web编程实战(8)----创建HTTP与HTTPS服务器端

    目录 创建一个HTTP服务端 ListenAndServe ServeHTTP 方法的使用示例 定义Refer结构体 实现ServeHTTP 方法 创建一个HTTPS服务端 创建证书与私钥 创建HTTPS服务端 创建一个HTTP服务端 其实
  • 2021-07-16

    VUE 生命周期 vm的一生 将要创建 gt 调用beforeCreate函数 创建完毕 gt 调用create函数 将要挂载 gt 调用beforeMount函数 挂在完毕 gt 调用mounted函数 将要更新 gt 调用beforeU
  • 计算机打字盲打方法,练习键盘打字方法 盲打的指法练习

    1 牢记键盘字母的排序 键要是字母键构成 二十六个字母排成了三排 因此手指要会上下灵活伸缩 最长的键是空格键 带一个横箭头标着Enter的是回车键 回车往往有确定 换行 打开的意思 2 打字的时候手势要正确 先把二十六个字母背下来 就像背古
  • docker创建vue编译环境

    docker创建vue编译环境 node的docker获取 docker pull node latest 升级node npm install g npm 8 9 0 to update 安装vue环境 npm config set re
  • cmd命令查找文本文件中的字符串

    cmd命令查找文本文件中的字符串 可以通过findstr命令实现查找文本文件当中的字符串 这样方便提高日志的检索交率 如下图 命令格式 findstr s n aaa C Users 17676 Desktop 667 txt s 在当前目
  • 亲密关系沟通-【信任感】-巩固信任感的沟通方法

    案例 老公答应做家务 同意了 但是总觉得他会忘 提醒他 结果嫌我啰嗦 我们还大吵一架 我真的是一个不会信任对方的人吗 要有信任感 你需要在沟通中成为两个人 1 能让别人信任你的人 2 有能力信任别人的人 其实你不信任ta 不是ta的原因 而
  • APP兼容性测试需要注意哪几点?-alltesting云测试

    由于终端设备的型号多样 机型的碎片化 使得APP兼容性问题在APP测试中成为一个不得不考虑的问题 因为一旦APP有兼容性方面的问题 就会影响这一类的很多用户 对业务的影响会比较大 针对这个问题的测试需要考虑覆盖多种不同的场景 严格来说 兼容
  • 【HDLbits刷题笔记 】04-verilog语法-程序部分

    Always块 组合 由于数字电路由用导线连接的逻辑门组成 因此任何电路都可以表示为模块和分配语句的某种组合 但是 有时这不是描述电路的最方便方法 过程 始终以块为例 提供了描述电路的替代语法 对于合成硬件 synthesizing har
  • Android adb等 获取root权限

    Android adb 获取root权限 1 自己编译的Android 中 adb shell后 自动获取root权限 即显示 而不是 方法 修改 default prop 把ro secure设为0 persist service adb