为 Sonim XP3800 提供 Root 权限。提供了两种方法——可根据情况选择。
Root 管理器应用利用 CVE-2019-2215(一个 binder 释放后使用内核漏洞)直接在设备上获取 Root 权限。无需电脑、无需解锁引导加载程序、无需刷写。该漏洞利用二进制文件是一个针对 XP3800 的 3.18.71 内核进行地面移植的 ARM32 移植版——每个内核结构体偏移量均通过逆向工程分析设备内核二进制文件获得。
通过 ADB 安装 APK(XP3800 会阻止从设备本身安装 APK),点击安装,Root 将永久写入 /system/bin/su。重启后 Root 仍然保留,无需启动服务或后台进程——该二进制文件就像其他系统命令一样存在于系统中。
adb install RootManager.apk
每次启动后首次调用 su 时,它会运行内核漏洞利用(约 1.2 秒)并生成一个持久的 Root 守护进程。之后每次调用 su 都会瞬间连接到该守护进程(约 0.13 秒)——无需再次运行漏洞利用,无需操作内核。守护进程通过 setns() 进入 PID 1 的挂载命名空间,因此命令拥有完整的文件系统访问权限,包括 /system。
漏洞利用通过 flock() 序列化,防止并发运行(否则会导致内核崩溃),失败时最多重试 3 次。
su 永久安装到 /system/bin。不依赖 tmpfs,无需开机广播接收器,重启和恢复出厂设置后仍然存在。/system 是普通的 ext4 文件系统,可自由重新挂载为读写模式。更改在重启后持久保留。com.verizon.mdm.basicphone 的设备所有者状态并禁用它(或恢复它)。参见 移除 Verizon MDM。致谢:@anonymousfliphonesoom_score_adj = -1000)。参见 守护进程。su。可按用户/系统/全部过滤,按名称或包名搜索。su 二进制文件内置了黑名单。默认情况下,任何应用都可以使用 su,除非它被加入黑名单。可以在应用主界面管理黑名单——勾选某个应用旁边的复选框即可阻止它。
Termux 和 ADB shell(uid 2000)始终被允许,无论黑名单如何设置。支持通配符条目,例如 com.example.*。
另一种方法是使用刷写修补过的启动镜像,通过高通的 EDL 模式和 QFIL 进行。
重要细节:
dd 命令。不要从互联网下载启动镜像——其他变体或固件版本可能与你的设备不匹配,可能导致无法启动。XP3800 没有 dm-verity —— /system 分区是一个普通的 ext4 文件系统,没有完整性检查。内核命令行中设置了 androidboot.veritymode=enforcing 标志,但完全无效:不存在 dm-verity 设备映射器设备,没有 vbmeta 分区,也没有哈希树。
su -c "mount -o remount,rw /system"
# 进行你的修改
su -c "mount -o remount,ro /system"
修改在重启后持久保留。删除内容时务必小心 —— 移除错误的系统文件可能导致设备无限重启。
需要 Termux 安装 aapt2、ecj、d8、apksigner、zip,以及 ~/.android/{android.jar,framework-res.apk,debug.keystore}。
./build.sh
输出:RootManager.apk
漏洞利用及其实现有详细文档说明:
本软件按“原样”提供,不附带任何担保。作者不对因使用本软件导致的设备变砖、损坏或任何其他问题承担责任。使用风险自负。
| 命令 | 说明 |
|---|
su | 交互式 Root shell(保留调用者的环境) |
su -c 'cmd' | 以 Root 身份运行命令(使用系统 shell 和 PATH) |
su cmd | 与 -c 相同 |
su -p -c 'cmd' | 以 Root 身份运行命令,保留调用者的完整环境 |
su --preserve-environment -c 'cmd' | 与 -p 相同 |
su -s bash -c 'cmd' | 指定 shell |
su --daemon | 手动启动 Root 守护进程(需要 Root 权限) |
su --mount-master | 为兼容性而接受(无操作——守护进程已拥有完整的挂载命名空间) |
su -v | 详细输出漏洞利用信息 |