如何在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二进制)
说明
-
安装SuperSu.apk
-
首先安装SuperSu应用程序,只需拖放(如果通过adb运行最新的模拟器版本或sideload,即
adb –e install supersu.apk
) -
安装完成后,运行时会显示如下所示的屏幕显示“没有安装SU二进制文件..”。 这个错误只是确认设备还没有根植。
-
-
使模拟器的系统分区可写
-
正如它所暗示的那样,我们需要赋予模拟器写入系统文件的权限。
-
键入以下代码来完成此操作:
emulator.exe –avd {emulator_name} –writable-system
-
注意:导航到安装了Android SDK的工具文件夹,然后按Shift并右键单击打开命令提示符。
-
在系统目录中推入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
(从来没有关于我的具体位置苏二进制,任何位置是好的,只要没有空格)
注意:要找出bin
或xbin
请在控制台之前:> adb shell
,> ls /system/xbin/su
如果失败,请尝试将这个目录改为/system/xbin/su
。 另外运行Android 5.1及以下版本的模拟器使用su
而不是su.pie
-
更改su二进制文件的权限
- 接下来让我们来修改一下su的权限。 我们必须通过adb在模拟器中做到这一点:
adb –e shell su root cd /system/bin chmod 06755 su
重要!! 记下su二进制path(我的是/ system / bin)
- 在su二进制文件中设置
install
指令并设置一个daemon
input代码:
su --install
并设置守护进程:
su --daemon&
重要!! 注意间距
-
将SELinux设置为Permissive(即closuresSE Linux)
- 最后通过这个代码closuresselinux:
setenforce 0
-
打开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-5558
并set 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
-
您需要从根重新启动
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的图片:
如果在执行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权限。