如何使用 ADB 将文件推送到我的根 ( / ) 目录,以便我可以安装 `su` 二进制文件
How do I push files to my root ( / ) directory with ADB so I can install the `su` binary
我刚刚 adb shell
进入我设备上的根目录,我想安装 su
二进制文件。请注意,我在 macOS 上,想手动执行此操作。
当我尝试将 su
二进制文件推送到根目录(不在 SDCard 上)时,出现此错误:
$ cp /sdcard/su /system/bin
cp: /system/su: Read-only file system
如何将 su
二进制文件推送到 /system/bin
?
(我的平板电脑是 Acer Iconia Tab 10 A3-A30)
基本上,我只是想对其进行 root,但我找不到有关解锁引导加载程序或适用于此平板电脑的任何应用程序的任何详细信息。
简短版本:不幸的是,只按“su”的幼稚方法是行不通的。您可以验证(除非您的“su”二进制文件正在使用漏洞),即使是“adb push su /data/local/tmp/”然后从那里执行它也不起作用。
详细版本:
Android 5.0带来了两个根本性的变化:首先是对root和其他文件系统的密封,这样它们不仅可以挂载read-only,而且还可以通过[=54]验证=],这样,如果它们已安装 read/write,将不会接受更改。
第二个是 SE-Linux 的引入(以及另一个更改,弃用 setuid 二进制文件),作为所谓的“强制访问控制”的额外级别。这(与 chmod/chown/etc“自主访问控制”相对)意味着有一个总体“安全策略”,一旦安装就不能以任何方式覆盖。
因此有两种方法可以让您的设备获得 root 权限:
A) 上传一个“su”风格的二进制文件,它会以某种方式找到绕过 SE-Linux 的方法并授予您 root 权限。这需要利用安全漏洞来实现内核内存访问和 shell 凭据的“修补”。这些漏洞很少见,可以打折,因为这些漏洞很快就会被修补(联发科设备除外,mtk-su 运行良好)。
B) 以“引导加载程序解锁”模式(您确实提到过)启动设备,其中 pre-patched 内核具有修改后的安全策略和根文件系统(技术上,Ramdisk ) 与 pre-made su 和启用的守护程序可用于按需为您提供超级用户权限。这是由 ChainFire 的 'supersu' 启动的,现在是 Magisk 的实际方法。
因此,你的问题是非常悬而未决的。如果这是一个开发构建,您可以修改根文件系统并安装“旧”形式的 su(如“getprop ro.debuggable”或“getprop ro.build.fingerprint" 和 "eng" 它。但是,这在发布(零售)设备上不起作用。
你最好的选择是
- A) 获取相关平板电脑的 OTA 或出厂映像。
- B) 从中得到 boot.img
- C) 使用 magisk 修补 boot.img(在设备上,
通过 /sdcard/Download) 或 imjtool
- D) 启用引导加载程序解锁
(不保证可用)通过开发者选项
- E) 放
设备处于快速启动模式(“adb reboot bootloader”应该可以)
- F) 使用
因此连接设备时主机上出现“快速启动闪烁解锁”。
批准解锁
- G) 使用“fastboot boot”或者(当你
确定它有效)“fastboot flash boot”
- H) 希望一切顺利
我刚刚 adb shell
进入我设备上的根目录,我想安装 su
二进制文件。请注意,我在 macOS 上,想手动执行此操作。
当我尝试将 su
二进制文件推送到根目录(不在 SDCard 上)时,出现此错误:
$ cp /sdcard/su /system/bin
cp: /system/su: Read-only file system
如何将 su
二进制文件推送到 /system/bin
?
(我的平板电脑是 Acer Iconia Tab 10 A3-A30)
基本上,我只是想对其进行 root,但我找不到有关解锁引导加载程序或适用于此平板电脑的任何应用程序的任何详细信息。
简短版本:不幸的是,只按“su”的幼稚方法是行不通的。您可以验证(除非您的“su”二进制文件正在使用漏洞),即使是“adb push su /data/local/tmp/”然后从那里执行它也不起作用。
详细版本:
Android 5.0带来了两个根本性的变化:首先是对root和其他文件系统的密封,这样它们不仅可以挂载read-only,而且还可以通过[=54]验证=],这样,如果它们已安装 read/write,将不会接受更改。
第二个是 SE-Linux 的引入(以及另一个更改,弃用 setuid 二进制文件),作为所谓的“强制访问控制”的额外级别。这(与 chmod/chown/etc“自主访问控制”相对)意味着有一个总体“安全策略”,一旦安装就不能以任何方式覆盖。
因此有两种方法可以让您的设备获得 root 权限:
A) 上传一个“su”风格的二进制文件,它会以某种方式找到绕过 SE-Linux 的方法并授予您 root 权限。这需要利用安全漏洞来实现内核内存访问和 shell 凭据的“修补”。这些漏洞很少见,可以打折,因为这些漏洞很快就会被修补(联发科设备除外,mtk-su 运行良好)。
B) 以“引导加载程序解锁”模式(您确实提到过)启动设备,其中 pre-patched 内核具有修改后的安全策略和根文件系统(技术上,Ramdisk ) 与 pre-made su 和启用的守护程序可用于按需为您提供超级用户权限。这是由 ChainFire 的 'supersu' 启动的,现在是 Magisk 的实际方法。
因此,你的问题是非常悬而未决的。如果这是一个开发构建,您可以修改根文件系统并安装“旧”形式的 su(如“getprop ro.debuggable”或“getprop ro.build.fingerprint" 和 "eng" 它。但是,这在发布(零售)设备上不起作用。
你最好的选择是
- A) 获取相关平板电脑的 OTA 或出厂映像。
- B) 从中得到 boot.img
- C) 使用 magisk 修补 boot.img(在设备上, 通过 /sdcard/Download) 或 imjtool
- D) 启用引导加载程序解锁 (不保证可用)通过开发者选项
- E) 放 设备处于快速启动模式(“adb reboot bootloader”应该可以)
- F) 使用 因此连接设备时主机上出现“快速启动闪烁解锁”。 批准解锁
- G) 使用“fastboot boot”或者(当你 确定它有效)“fastboot flash boot”
- H) 希望一切顺利