如何在Android模拟器上获得root权限?

我有所有的Android SDK版本(从1.5到2.3.3),我尝试了很多方法来获取Android模拟器的根。 我不使用任何Android设备,并在模拟器(AVD)上testing一切。

我需要在任何一个Android模拟器中使用root权限来使用“iptables”和“busybox”function。 而要使用iptables,我必须有root权限。 至less'su'命令应该在terminal仿真器中执行。

我也安装了z4root应用程序,

但需要很长时间,并没有完成生根,卡住了。 有人说如果我们把系统降到RC30以下,这样我们就可以获得root权限。 如果这是真的,那么该怎么做呢? 我使用Linux和Windows操作系统。

请有人告诉我任何方法来根源我的模拟器。

这些答案都是不必要的复杂:)

 $ > adb shell generic_x86:/ $ generic_x86:/ $ exit $ > adb root restarting adbd as root $ > adb shell generic_x86:/ # 

这里是模拟器运行时必须运行的命令列表,我在Android 2.2上testing了这个avd的解决scheme:

 adb shell mount -o rw,remount -t yaffs2 /dev/block/mtdblock03 /system adb push su /system/xbin/su adb shell chmod 06755 /system adb shell chmod 06755 /system/xbin/su 

它假定su二进制文件位于工作目录中。 你可以在这里findsu和superuser: http : //forum.xda-developers.com/showthread.php?t=682828 。 每次启动模拟器时都需要运行这些命令。 你可以编写一个启动模拟器的脚本并对其进行根目录。

如何根Android模拟器(在Android 7.1.1 /牛轧糖testing)

要求

  • SuperSU应用程序(chainfire)最新版本2.82

  • 恢复flashable.zip(包含su二进制)

说明

  1. 安装SuperSu.apk

    • 首先安装SuperSu应用程序,只需拖放(如果通过adb运行最新的模拟器版本或sideload,即adb –e install supersu.apk

    • 安装完成后,运行时会显示如下所示的屏幕显示“没有安装SU二进制文件..”。 这个错误只是确认设备还没有根植。

在这里输入图像描述


  1. 使模拟器的系统分区可写

    • 正如它所暗示的那样,我们需要赋予模拟器写入系统文件的权限。

    • 键入以下代码来完成此操作: emulator.exe –avd {emulator_name} –writable-system

注意:导航到安装了Android SDK的工具文件夹,然后按Shift并右键单击打开命令提示符。


  1. 在系统目录中推入su二进制文件

    • 提取恢复flashable.zip(包含不同体系结构的su二进制文件)

重要! 只能使用与您的avd体系结构相匹配的su二进制文件,例如x86,arm等。并记下您提取这些二进制文件的path。

  • 确保你以root身份运行adb,并且你需要重新安装。 只需input这些代码

adb root

adb remount

现在推出su二进制的时候了:

这是我成功使用的代码adb -e push C:\Users\User1\Desktop\rootemu\x86\su.pie /system/bin/su

(从来没有关于我的具体位置苏二进制,任何位置是好的,只要没有空格)

注意:要找出binxbin请在控制台之前:> adb shell ,> ls /system/xbin/su

如果失败,请尝试将这个目录改为/system/xbin/su 。 另外运行Android 5.1及以下版本的模拟器使用su而不是su.pie


  1. 更改su二进制文件的权限

    • 接下来让我们来修改一下su的权限。 我们必须通过adb在模拟器中做到这一点:

    adb –e shell su root cd /system/bin chmod 06755 su

重要!! 记下su二进制path(我的是/ system / bin)


  1. 在su二进制文件中设置install指令并设置一个daemon

input代码:

su --install

并设置守护进程:

su --daemon&

重要!! 注意间距


  1. 将SELinux设置为Permissive(即closuresSE Linux)

    • 最后通过这个代码closuresselinux:

setenforce 0


  1. 打开SuperSU应用程序,它可能会要求更新二进制文件,您可以使用Normal方法。

注意:如果您遇到bootloops,请不要更新二进制文件,只需按照原样使用即可。


这几乎是它!

打开任何需要SU权限的应用程序只是为了仔细检查,确实SuperSU询问您是否希望授予它权限。

在这里输入图像描述

为了使root持久更新su二进制(使用Normal方法),然后从临时目录( Users\AppData\Local\Temp\Android Emulator复制system.img文件通常被随机命名,例如大尺寸的1359g.tmp ),并replace默认system.img

更新

我注意到在Linux中比在Windows中更容易获得临时系统映像。 你可以尝试使用快照图像。

我希望发布一个简单的解决scheme来保存在Windows根目前,我目前正在处理这个问题。

另外对于bootloop问题,请参阅其他post: Android模拟器:如何避免生根后引导循环? 并对其进行更新。

备注

引用中的大部分内容是针对较老的android版本,因此我修改了不同的命令和path的原因。

致谢;

Irvin H:在Android Studio 2.3((Android 4.4))上安装Android模拟器

对于使用5.1.1和6.0的AVD,我在Windows中使用了下一个脚本:

 set adb=adb -s emulator-5558 set arch=x64 set pie= adb start-server %adb% root %adb% remount rem %adb% shell mount -o remount,rw /system %adb% shell setenforce 0 %adb% install common/Superuser.apk %adb% push %arch%/su%pie% /system/bin/su %adb% shell chmod 0755 /system/bin/su %adb% push %arch%/su%pie% /system/xbin/su %adb% shell chmod 0755 /system/xbin/su %adb% shell su --install %adb% shell "su --daemon&" rem %adb% shell mount -o remount,ro /system exit /b 

需要SuperSU的UPDATE.zip。 解压到任何文件夹。 用上面的内容创buildbat文件。 不要忘记指定必要的体系结构和设备: set adb=adb -s emulator-5558set arch=x64 。 如果您运行Android 5.0或更高版本,请更改set pie=set pie=.pie 。 运行。 您获得当前运行的临时根目录。

如果在重新安装系统分区时出现错误,则需要从命令行启动AVD。 请参阅下面的Android 7的第一步。

如果你想让它持久化 – 在SuperSU中更新二进制文件,并将临时文件夹中的system.img文件保存为默认的system.img文件。

如何将生成的临时根目录转换为永久的

首先是SuperSu。 它提供了一个二进制升级。 以正常方式更新。 重新启动拒绝。

其次 – 只与模拟器相关。 相同的AVD。 底线是系统映像中的更改不会被保存。 你需要保持他们自己。

对于不同的模拟器已经有不同的说明。

对于AVD,您可以尝试find一个临时文件system.img,将其保存在某处并在启动模拟器时使用。

在Windows中,它位于%LOCALAPPDATA%\Temp\AndroidEmulator ,名称与TMP4980.tmp类似。

您将其复制到文件夹avd设备( %HOMEPATH%\.android\avd\%AVD_NAME%.avd\ ), %HOMEPATH%\.android\avd\%AVD_NAME%.avd\命名为system.img

现在它将在开始时使用,而不是通常的。 如果SDK中的图像更新,则为真,则为真。

在这种情况下,你将需要删除这个system.img ,并重新创build它的操作。

更详细的俄语手册:http: //4pda.ru/forum/index.php?showtopic=318487&view=findpost&p=45421931


对于android 7,您需要运行其他步骤:1.需要手动运行模拟器。 转到sdk文件夹sdk\tools\lib64\qt\lib 。 从这个文件夹模拟器运行选项-writable-system -selinux disabled像这样:

 F:\android\sdk\tools\lib64\qt\lib>F:\android\sdk\tools\emulator.exe -avd 7.0_x86 -verbose -writable-system -selinux disabled 
  1. 您需要从根重新启动adbd

    adb -s emulator -5554 root

并重新安装系统:

 adb -s emulator-5554 remount 

每次运行模拟器只能使用一次。 而任何另一个重新安装可以打破写入模式。 因此,您不需要运行任何其他重新mount -o remount,rw /system命令,如mount -o remount,rw /system

另一个步骤保持不变 – 上传二进制文件,运行二进制文件等等。

来自AVD Android 7 x86的图片: AVD的Android 7 x86与根


如果在执行su binary时看到有关PIE的错误,那么你上传到仿真器错误的二进制文件。 您必须在档案中上传名为su.pie二进制文件,但在仿真器上它必须命名为su ,而不是su.pie

我相信最简单的方法是为命令sh创build一个别名,例如

 adb shell mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system cd /system/bin cat sh > su && chmod 4775 su 

testingAndroid模拟器3.0及更高版本。

我从上面的解决scheme中使用了部分方法; 然而,他们没有完全工作。 在最新版本的安迪,这对我工作:

在Andy(Root Shell)上[右键单击HandyAndy图标并selectTerm Shell]

在shell内部,运行这些命令:

 mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system cd /system/bin cat sh > su && chmod 4775 su 

然后,安装SuperSU并安装SU二进制文件。 这将取代我们刚刚创build的SU二进制文件。 (可选)通过CWM删除SuperSU并安装超级用户。 再次安装su二进制文件。 现在,根作品!

我尝试了许多以上的build议,包括SuperSU,并没有得到任何工作,但发现了一些简单的工作,为我的目的。 在我的情况下,我只想在命令提示符下运行sqlite。 我简单地使用旧版Android(Lollipop)创build了一个模拟器,并立即获得root权限。