Android adb外壳su工作,但adb根不工作
我在解锁的Galaxy S3(SGH-T999)上扎根 现在,我正试图从Windows命令提示符下运行Android adb外壳su工作,但adb根不工作,android,shell,adb,root,Android,Shell,Adb,Root,我在解锁的Galaxy S3(SGH-T999)上扎根 现在,我正试图从Windows命令提示符下运行adb root,但是,我发现adbd无法在生产版本中作为root运行错误。所以,我检查的第一件事是我的手机是否真的扎根了 因此,我尝试了以下方法: 打开命令提示符 $adb devices // lists my device $adb shell //goes to shell $su // opens a 'SuperSu' prompt on my phone and I 'Grant'
adb root
,但是,我发现adbd无法在生产版本中作为root运行
错误。所以,我检查的第一件事是我的手机是否真的扎根了
因此,我尝试了以下方法:
打开命令提示符
$adb devices // lists my device
$adb shell //goes to shell
$su // opens a 'SuperSu' prompt on my phone and I 'Grant' permission
# // Before following the rooting instructions, I was getting 'no su command found' in the previous step. So, I believe my phone is ROOTED. **Correct me if I'm wrong.**
但是,当我执行adb root
时,我得到了adbd不能作为root在生产构建中运行的错误。
所以,我想,我可能不得不做一些额外的事情,超出我上面所做的。我尝试了以下所有问题的解决方案:
以上这些都不适合我。它们所做的只是在SHELL内部为ROOT用户提供访问权限。我希望adb root
能够工作,这样我就可以执行各种adb命令,而无需进入shell。您需要将boot.img/sbin/文件夹中的adbd二进制文件替换为具有su功能的二进制文件。您还必须进行一些default.prop编辑
三星似乎比其他供应商更难做到这一点。我有一些adbd二进制文件,您可以尝试,但它需要使用新的二进制文件反编译和重新编译boot.img的知识。另外,如果您有一个锁定的引导加载程序。。。这不会发生的
Chainfire还有一个应用程序,可以在play store中授予adbd root权限:
最后,如果您试图使用SU权限编写windows脚本,您可以使用以下命令样式完成此操作。。。但是,您至少需要在第一次运行SU时授予(电话)SU权限
adb shell“su-c ls”按设计adb root
命令仅在开发版本中工作(即eng
和userdebug
,默认情况下具有ro.debugable=1
)。因此,要在其他根设备上启用adb root
命令,只需将ro.debuggable=1
行添加到以下文件之一:
/system/build.prop
/system/default.prop
/data/local.prop
如果希望默认情况下adb shell
以root
开头,那么也添加ro.secure=0
或者,您可以使用修改后的adbd
二进制文件(不检查ro.debugable
)
从
我拥有三星Galaxy Trend Plus(GT-S7580)
运行“adb根目录”时会出现相同的“adbd无法作为根目录在生产版本中运行”错误
对于具有开发人员选项->根访问权限的设备,请选择“仅ADB”以提供设备的ADB根访问权限(如建议的)
然后尝试按照处的解决方案运行该命令。
在我的例子中,我只想运行'netcfg rndis0 dhcp'命令,我是这样做的:
adb shell "su -c netcfg rndis0 dhcp"
请检查以这种方式运行时是否有任何错误
如果仍不工作,请检查是否已正确根目录设备。
如果仍然不走运,请尝试安装自定义ROM,例如,以便“adb根目录”正常工作。在一些开发人员友好型ROM中,您可以在“设置”>“开发人员选项”>“根目录访问”中启用根目录访问。之后,adb根目录
可用。不幸的是,它不适用于市场上的大多数股票ROM。我使用abd shell中的enter su模式
adb shell“su”如果您确实需要以root
身份运行adb
,最快、最简单的方法是安装Android定制ROM,最流行的是CyanogenMod
,因为它在开发者选项菜单中有根访问权
选项,您可以在其中选择为应用程序和ADB授予根访问权。我以前用过CM,但由于它不再被开发,我试着寻找一些解决方案。虽然CyanogenMod仍然是一个很好的替代品,因为它没有膨胀软件
我从一位朋友那里发现的另一种选择是使用adbd unsecure
应用程序,您可以在这里尝试:。在我的例子中,它与Android定制内核一起工作,但与Android股票ROM(仅适用于香草Android)不兼容。您也可以尝试其他选择,比如修改Android ROM的boot.img
。我在尝试根目录仿真器时遇到了这个问题,我发现这是因为我运行的Nexus 5x仿真器上有Google Play。创建了另一个没有google play的仿真器,adb root
将为您创建设备的根目录。希望这对别人有帮助 adbd
有一个编译标志/选项来启用根访问:允许adbd\u root=1
Android 9之前:如果设备上的adbd编译时没有该标志,则启动时它将始终放弃特权,因此“adb根目录”将毫无帮助。
对setuid()
,setgid()
,setgroups()
的调用,以及在我的电子书阅读器上获取永久根目录adbd的二进制文件的功能
Android 10改变了这一点;当手机/平板电脑解锁时(ro.boot.verifiedbootstate==“orange”
),则在任何情况下都可以使用adb根模式。在我的情况下,(设备已根目录)
如果您在Magisk中安装了“adb root”模块,您仍然需要通过su root
手动切换到root
,否则,看起来您是root,但实际上您不是root。我有一个运行安卓7.0的三星Galaxy Tab S2。
以下是我今天如何为它植根的:
阅读有关编辑system\build.prop文件的此线程
下载到平板电脑:v1.3.9
运行应用程序;在“系统实用程序”下,使用“根检查”确认您的Odin根已工作
在同一个应用程序中,转到“根管理器”并使用“Build.prop编辑器”来影响system\Build.prop中的更改(由Alex p.指定)
最终确认:
C:\Android\sdk\platform-tools>adb shell
gts28vewifi:/ $ whoami
shell
gts28vewifi:/ $ su
gts28vewifi:/ # su root
gts28vewifi:/ # whoami
root
投票支持Alex P.的回答
在android>4.3中不起作用。缺少su。我在dev opt中没有看到“根访问”选项
linux$ adb shell # in linux shell
mobile$ su root #=> notice the $ will become #
mobile# whoami #=> root
C:\Android\sdk\platform-tools>adb shell
gts28vewifi:/ $ whoami
shell
gts28vewifi:/ $ su
gts28vewifi:/ # su root
gts28vewifi:/ # whoami
root