Android 模拟器 Root 和 SuperSU 安装

文章目录

  • Android 模拟器 Root 和 SuperSU 安装
  • 前言
  • 环境说明
  • 安装步骤概述
  • 1. 创建模拟器并获取 root 权限
  • 2. 设置 SuperSU 所需环境
  • 3. 安装 SuperSU App
  • 测试
  • SuperSU 工作原理
  • 参考

前言

有时需要在 Android 模拟器上测试特定功能,需要使用到 Root 权限,例如访问某些系统配置、修改系统文件等。通常情况下在 adb shell 的环境下使用 su 命令以 Root 身份执行相关命令即可满足需求,但是还有命令行难以满足的情况,例如给一个第三方应用授予 Root 权限(赋予应用使用 su 命令的权限),如果直接使用命令修改 su 文件权限,使特定应用可以访问,不仅难以控制,而且可能造成滥用 Root 权限的安全风险。所以需要一个统一管理 Root 权限授予的工具,那么可以使用 SuperSU 工具。

SuperSU 是 Android 系统上著名的 Root 权限管理工具,安装此软件后,可以方便的对 Root 权限进行管理,那么后面安装 Xposed 等依赖 Root 的工具时就很容易了。

在 Android 真机上安装 SuperSU 的方比较容易,只需要获得 Root 权限即可快速安装,在 Android 模拟器上安装略有不同。

下面是在 Android 官方模拟器上获取 Root 权限和安装 SuperSU 的方法。

环境说明

使用了如下环境进行操作:

  • Android Studio 4.0.1。Android 开发集成环境,方便打开 AVD(Android Virtual Device),创建模拟器

  • 官方模拟器镜像 API 27(Android 8.1)。使用 Android 8.1 是为了安装 Xposed 最新版本

  • Ubuntu 20.04.1 LTS。使用的操作系统版本

  • SuperSU 2.8.2。最新的 SuperSU 软件的版本

安装 SuperSU 时首先需要获得 root 权限,如果直接创建默认模拟器虚拟设备,并且直接安装 Supersuer.apk 是不行的,可参考如下详细步骤来进行安装。

安装步骤概述

  1. 创建模拟器并获取 root 权限;
  2. 设置 SuperSU 所需环境;
  3. 安装 Superuser.apk。

1. 创建模拟器并获取 root 权限

首先从 Android Studio 右上角,点击一个手机右下角有 Android 机器人图标的按钮(AVD Manager),打开 AVD 管理界面。

然后选择 [+ Create Virtual Device] 创建一个 Android 模拟器。

[Hardware] 可随意选择,这里选择 [Pixel 2],[System Image] 这里选择了 [X86 Images] 中的 Oreo-27-x86-Android 8.1 (Google APIS)(注意:这里一要选择后面有 Google APIS 的镜像,否则不能获取 Root 权限)。

名称这里设置为 suavd。创建后,此时 avd 列表中出现一个名为 suavd 的模拟器。

接下来获取 Root 权限,非常简单,模拟器已经提供了 Root。

在 Shell(Unix、Linux)或 DOS(Windows)中输入如下命令,即可使用 Root 身份进入 Shell:

$ adb shell
generic_x86:/ $ su
generic_x86:/ #

或者:

$ adb root
$ adb shell
generic_x86:/ #

提示:如果使用了非 Google APIs 的镜像,进入 adb shell 后将不支持 su 命令;如果输入 adb root 将会出现如下错误提示:

adb root:
adbd cannot run as root in production builds

2. 设置 SuperSU 所需环境

有了 Root 权限,接下来为安装 SuperSU 做准备,SuperSU 本身是一个 Root 权限管理软件,但本身并不具有 Root 权限,要安装它,需要授予它 Root 权限。

SuperSU 包含一个 su 可执行文件和一个 Superuser.apk,只需要把 SuperSU 提供的 su 可执行文件替换系统的 su 文件,并且给予权限 -rwsr-sr-x (6755) 即可。

一般在实际设备上有两种方式替换文件:

  1. 手动将 SuperSU 的 su 文件替换系统文件,需要 Root 权限;
  2. 通过 Recovery 模式直接将 su 文件已补丁包的形式刷入。

对于模拟器来说,它没有 Recovery 模式,是直接使用 img 镜像启动的,所以只能使用第一种方法。

首先下载 SuperSU 的相关文件:

在这里下载:https://supersuroot.org/download/

选择 Recovery V2.82 Flashable.zip 进行下载,里面包含各个架构所需的 su 文件,以及 Superuser.apk 安装包。

现在查看模拟器原始的 su 文件位置:

generic_x86:/ # which su
generic_x86:/ # /system/xbin/su

根据模拟器架构(这里是 x86),取出压缩包中的 su.piesu 文件,

这里对于 Android 5.0 版本及之上的设备来说,需要使用 su.pie 文件,它是使用 -fPIE 标记编译的位置无关的可执行文件,具有地址空间随机化特性。

上面已经有了 Root 权限,现在可以进行替换了。

首先打开创建的模拟器 suavd(点击绿色三角形),然后进入并查看模拟器的 su 命令所在的路径:

$ adb shell
generic_x86:/ # which su
/system/xbin/su

下面进行替换:

$ adb root
$ adb remount
$ adb push su.pie /system/xbin/su
adb: error: failed to copy 'su.pie' to '/system/xbin/su': remote couldn't create file: Read-only file system

adb remount 是为了将 /system 挂载为可写。

然而出现了报错,提示 /system 是只读文件系统,无法写入文件。解决办法如下:

关闭模拟器,使用命令行重新启动模拟器,并指定 -writable-system 选项(emulator 程序在 Android SDK 的 emulator 路径中,如果配置了环境变量,可以直接使用 emulator 命令,这里使用了绝对路径):

$ ~/Android/Sdk/emulator/emulator -avd suavd -writable-system

此时模拟器的 /system 就具备可写属性了,查看模拟器的文件路径(在 ~/.android/avd/suavd.avd),会发现一个 system.img.qcow2 文件,它是模拟器的虚拟文件系统,目的是将只读镜像 system.img 具备可写的特性,修改 /system 的内容将被保存在 system.img.qcow2 中。

如果不使用 -writeable-system 选项将不会创建这个文件,那么 /system 也就不可写。

现在重新执行上面的命令即可完成替换:

$ adb root
$ adb remount
$ adb push su.pie /system/xbin/su
su.pie: 1 file pushed. 14.1 MB/s (104012 bytes in 0.007s)

可以了,接下来按部就班设置 SuperUS:

$ adb shell
generic_x86:/ # chmod 6755 /system/xbin/sugeneric_x86:/ # ls -al /system/xbin/su
-rwsr-sr-x 1 root shell 104012 2008-02-29 03:33 /system/xbin/sugeneric_x86:/ # su --installgeneric_x86:/ # su --daemon&
[1] 3844generic_x86:/ # setenforce 0
[1] + Done                 \su --daemon

上面命令解释如下:

  1. 设置权限,使 SuperSU 提供的 su 可执行文件能够被所有应用执行;
  2. 初始化安装 su
  3. 设置 su 守护进程;
  4. 关闭 SELinux 安全策略,解除 Root 权限的限制。

这样就完成了 SuperSU 环境的设置。

提示:如果高于 Android 5.0 版本使用了 su 文件替换,而不是 su.pie ,将会出现如下情况:

generic_x86:/ # su --install
"su": error: Android 5.0 and later only support position-independent executables (-fPIE).

3. 安装 SuperSU App

在环境设置完毕后,直接安装 Supersuer.apk 即可,在压缩包中 common/Superuser.apk 中。

$ adb install Superuser.apk
Success

安装后打开在模拟器中打开,显示如下,则安装成功,如果显示 Root undetected,则安装失败,按照上面步骤进行检查。

这里选择 CANCEL 就可以,如果选择 CONTINUE 更新文件,可能会卡在开机界面导致无法启动系统。

为了保证模拟器下次启动能够正常运行 SuperSU 保证 Root 状态,可以创建一个 Snapshot(快照),点击模拟器右下角的溢出菜单,点击 [TAKE SNAPSHOT],创建一个快照,重命名为 root

下次启动模拟器,从这里直接运行快照,将恢复到 Root 时的状态。

注意:再次启动模拟器时,不能从 Android Studio 中的 AVD Manager 直接启动,依然需要使用命令行加 -writable-system 选项启动,因为默认的启动不具备 /system 写权限。

测试

为了测试 SuperSU 是否可用,这里选择安装 Xposed 框架进行测试。

$ adb install XposedInstaller_3.1.5.apk
Success

进入主界面,点击 INSTALL/UPDATE 安装 Xposed 将会出现 Root 授权界面,点击授权后,重启,成功激活 Xposed 框架。


SuperSU 工作原理

根据开源版本的 superuser 了解 SuperSU 工作原理:

  1. daemonsu 为 su 启动的守护进程;
  2. 现在第三方应用开始调用 su 命令,请求申请 Root 权限;
  3. su 是一个可执行文件,内部与 daemonsu 进行通信,发送执行命令请求;
  4. daemonsu 创建 sush 子进程,sush 进程使用 am(Activity Manager)命令启动 Superuser 应用,请求授权,出现用户授权界面;
  5. 授权通过,Superuser 应用通过 socket 返回给 sush 用户授权结果,通过授权,则 sush 选择是否执行请求的命令。

时序图如下:

参考

  • https://www.cnblogs.com/cute/p/4095359.html

  • https://stackoverflow.com/questions/5095234/how-to-get-root-access-on-android-emulator

  • https://blog.csdn.net/qq_39131177/article/details/85060694

  • https://blog.csdn.net/xiaolli/article/details/70154998

Android 模拟器 Root 和 SuperSU 安装相关推荐

  1. Android系统Root与静默安装

    Android系统Root与静默安装 静默安装,指的是安装时无需任何用户干预,直接按默认设置安装应用.因为,它的无需用户干预,很多情况下变成了用户压根不知道,应用不知不觉就安装上了.是在推广上极为流氓 ...

  2. Android模拟器的下载与安装(Windows)

    一.工具准备 genymotion-2.11.0 https://pan.baidu.com/s/1M--WxZkm5Xh-ny4JuvywPw?pwd=6666 Samsung Galaxy S6 ...

  3. android7.1root工具,Android模拟器Root,Android7.1.1

    网上看了各类博客,最后在实验的时候老是没有权限去写入su文件.android 后面看了一个回答,终于搞定了Android7.1.1的Root.shell 首先,须要准备的东西:app 三.Androi ...

  4. Android模拟器Intel Atom下载安装配置

    https://software.intel.com 在Android x86模拟器Intel Atom x86 System Image时提示Intel execute disable bit(xd ...

  5. linux安卓模拟器root,kali linux 安装高性能安卓模拟器Genymotion

    首先务必说下 Genymotion 模拟器是基于virtualbox的, 所以务必首先安装virtualbox虚拟机. 博主不建议直接使用apt-get安装. 因为kali linux 源自带的vir ...

  6. mac下的android模拟器吗,Mac怎么安装Andriod模拟器 Mac怎么安装安卓模拟器

    Mac上怎么安装 Andriod 系统模拟器?有的朋友可能需要在自己用的 Mac 电脑上安装Andriod 系统模拟器,用于开发或测试一些安卓软件.下面PC6苹果网小编给大家简单介绍下怎么在 Mac ...

  7. Android 5 Emulator root 模拟器 root

    前言: 网上google很久一直找不到root android 5.0 emulator答案,要么是真机的root居多,要么android版本4.0的,要么是su 和 相关的superapk不是最新的 ...

  8. Mac下Android模拟器安装Xpose框架

    背景 原本安装 Xpose 框架很容易,但是我最近发现其官网已经挂了,故有本次分享内容. Android 模拟器安装 安装 Android7系统 使用 Android Studio 安装官方Andro ...

  9. 【Android】Android模拟器的安装

    目录结构: contents structure [+] 使用VMware安装Android模拟器 安装安卓(Android)系统前VMware虚拟机的配置 安装安卓(Android)系统 安装安卓( ...

  10. Android模拟器Genymotion安装

    一.简介 Genymotion是一款出色的跨平台的Android模拟器,具有容易安装和使用.运行速度快的特点,是Android开发.测试等相关人员的必备工具. 和sdk的模拟器类似,能够支持windo ...

最新文章

  1. 费米悖论的三十种解释
  2. SpringBoot中通过@Value获取自定义配置的值
  3. vue组件之轮播图的实现
  4. cairosvg在linux中的安装_直接用ISO文件在linux上安装新系统
  5. TCP/IP协议简述
  6. uml 时序图_面向对象设计与统一建模语言UML
  7. html5 css3左侧多级菜单,modernizr.custom.js制作html5 CSS3多级层叠侧边菜单导航栏
  8. Python学习笔记:集成开发环境
  9. matplotlib 设置标注方向_Matplotlib绘制带主题及聚类类标的散点图
  10. Objective-C的Runtime System
  11. 从数据库查询出来的数据集合转换成 json 类型
  12. Leetcode 242. 有效的字母异位
  13. 网页端实时音视频服务架构与实践
  14. vue学习笔记-10-常用特性之表单操作
  15. 人类按什么动物的优点发明什么
  16. 微信Android热补丁方案Tinker
  17. lpad()函数oracle,oracle 中lpad的用法
  18. Python视频制作 MoviePy框架afx音频效果示例
  19. 斯德哥尔摩的照片七:城市漫步(下)
  20. 如何申请美国大学计算机科学研究生,申请美国计算机研究生院要求

热门文章

  1. 桌面图标小箭头去掉方式
  2. 2017杭州云栖大会100位大咖视频+讲义全分享
  3. 自注意力机制(Self-Attention)
  4. kvm 虚拟机与宿主机通信
  5. java按顺序生成编号_Java生成有规则的编号
  6. CSDN Markdown 公式编号
  7. Hadoop(八)网站流量分析
  8. 邮箱格式怎么写?电子邮箱格式怎么写才是正确的?
  9. 老王的JAVA基础课:序言
  10. mysql idb恢复_MySQL 通过idb文件恢复Innodb 数据【转】