Shizuku和Dhizuku:矛与盾
前言
似乎好久没有更新文章了,事实上我在做优化((((
我一直有一些近乎偏执,总是希望能够把所有的东西都建造好才开始投入使用,就像这个站点一样。
不管怎么说,现在先写一篇文章吧。
以及最近我喜欢上了粉色,所以图片可能有一点点粉。(〃>皿<)
设备权限的探究
先问一个问题:
从厂商买回来的设备真的属于自己吗?
显然,在法律范围内,这台设备的所有权已经到了自己手中,但是设备的控制权却大部分掌握在厂家,例如各种臭名昭著的OTA、云控强制换机,上传应用列表,内置反诈中心,限制应用后台进和对FCM的阉割,以及种种莫名其妙的限制,让人不禁怀疑国产设备否还是那个开放的安卓。
事实上,由于中国大陆地区环境的特殊性,中国大陆地区的系统往往对各项策略都控制甚严,那么,我们如何提升自己的权限,来真正掌控自己的设备?
各等级用户权限分析
在介绍Shizuku和Dhizuku之前,我习惯先进行理论分析(很有中国特色),如果您不关心这一部分的内容,可以直接向下滑到有关于它们的介绍。
在安卓系统中,用户权限等级主要分为普通用户权限、ADB权限、设备管理器权限和Root(超级用户)权限。这些权限决定了用户或开发者对设备控制的范围。
1. 普通用户权限
普通用户权限是指普通用户通过设备界面和已安装应用能执行的操作,权限范围受限于安卓系统的沙盒机制和权限模型。
功能范围:
- 应用使用:普通用户可以安装、运行和卸载来自应用商店(如Google Play)的应用,访问应用请求的权限(如相机、存储、定位等)。
- 设置修改:调整系统设置(如Wi-Fi、蓝牙、屏幕亮度、通知等),但无法更改核心系统配置。
- 数据管理:管理应用数据(如清除缓存)或个人文件(如照片、文档),但仅限于用户可访问的存储区域(如/sdcard)。
- 限制:
- 无法访问系统分区(如/system)或修改系统文件。
- 无法执行需要管理员权限的操作,如卸载系统预装应用或更改系统级配置。
- 权限受运行时权限模型限制(Android 6.0及以上引入),用户需手动授权敏感权限。
版本变化:
- Android 4.0-5.x:权限模型较为宽松,用户在安装应用时需一次性同意所有权限,普通用户对系统控制较少。
- Android 6.0(Marshmallow):引入运行时权限,用户可动态管理应用权限(如拒绝相机访问)。
- Android 10:引入分区存储(Scoped Storage),限制应用对存储的访问,普通用户对文件系统的控制进一步受限。
- Android 11-15:进一步收紧权限,如限制后台定位、强制分区存储、限制第三方应用访问其他应用数据。
2. ADB权限
ADB(Android Debug Bridge)是安卓开发者工具,允许通过USB或Wi-Fi与设备通信,提供比普通用户更高的权限,但仍受限于系统安全机制。
功能范围:
- 调试与日志:获取设备日志(logcat)、调试应用、查看系统进程。
- 安装与卸载:通过
adb install
安装应用,或通过adb uninstall
卸载非系统应用。 - 文件操作:通过
adb push/pull
在用户可访问的存储区域(如/sdcard)传输文件,但无法直接访问系统分区。 - Shell访问:通过
adb shell
进入设备命令行,执行有限的Linux命令(如ls
、cat
),但无法执行需要Root权限的命令。 - 高级操作(需设备解锁):
- 若设备Bootloader解锁,可通过
adb sideload
刷入OTA更新包。 - 部分设备允许通过ADB启用开发者选项中的隐藏功能(如模拟定位)。
- 若设备Bootloader解锁,可通过
- 限制:
- 无法修改系统分区或执行需要Root权限的操作。
- 部分操作需要设备启用“USB调试”并授权。
版本变化:
- Android 4.0-4.4:ADB权限较为宽松,可通过Shell访问部分系统信息。
- Android 5.0-7.x:引入SELinux(安全增强型Linux),ADB的Shell权限受限,非Root用户无法访问敏感系统区域。
- Android 9-10:加强了SELinux策略,ADB无法直接访问某些系统进程或数据。
- Android 11-15:ADB权限进一步受限,如无法直接访问应用的私有数据目录(/data/data),需通过特定API或授权。
3. 设备管理器权限
设备管理器(Device Administrator)权限是为企业或管理类应用设计的特殊权限,允许应用执行高级管理操作。通常通过MDM(移动设备管理)或特定应用(如Find My Device)启用。
功能范围:
- 设备锁定:远程锁定设备或强制设置密码。
- 数据擦除:远程擦除设备数据(如通过Google的Find My Device)。
- 策略强制:强制执行安全策略,如要求复杂密码、禁用相机或限制应用安装。
- 应用管理:限制某些应用的运行或卸载。
- 限制:
- 设备管理器权限由用户手动授予,范围受限于安卓API定义。
- 无法修改系统文件或访问系统分区。
- 不具备Root级别的完全控制权。
版本变化:
- Android 4.0-8.x:设备管理器API较为强大,广泛用于企业管理和防盗应用。
- Android 9:部分设备管理器功能被弃用(如禁用相机),转而推荐更安全的Work Profile(工作配置文件)。
- Android 10-15:设备管理器API逐步弱化,更多功能迁移到企业管理(Android Enterprise)或系统级安全机制,普通用户难以通过设备管理器获得高权限。
4. Root(超级用户)权限
Root权限是通过破解设备(如通过Magisk或自定义Recovery)获得的对安卓系统的完全控制权,相当于Linux系统的Root用户。Root权限绕过了安卓的安全限制,允许用户或应用直接操作系统核心。
功能范围:
- 系统文件访问:读写系统分区(如/system、/vendor),修改系统配置文件(如build.prop)。
- 预装应用管理:卸载或冻结系统预装应用(Bloatware)。
- 高级定制:
- 修改内核参数、调整CPU/GPU频率(如超频或降频)。
- 安装自定义ROM或模块(如通过Magisk)。
- 更改系统UI、主题或启动动画。
- 权限管理:通过Root管理器(如Magisk或SuperSU)为应用授予Root权限,允许应用执行高级操作(如备份应用数据、修改系统设置)。
- 完全控制:执行任意Linux命令,访问所有文件系统(如/data、/root)。
- 限制:
- Root会破坏设备安全,可能导致保修失效。
- 触发安全机制(如Google SafetyNet或Play Integrity),导致某些应用(如银行应用、Google Pay)无法运行。
- 需解锁Bootloader,擦除设备数据。
版本变化:
- Android 4.0-5.x:Root较为容易,常用工具如KingRoot、TowelRoot等可一键Root,系统安全机制较弱。
- Android 6.0-7.x:引入SELinux和更严格的权限模型,Root需要更复杂的操作(如刷入SuperSU或Magisk)。
- Android 8.0-10:引入系统分区保护(如A/B分区、AVB验证),Root难度增加,需解锁Bootloader并刷入Magisk。
- Android 11-15:进一步加强安全:
- 系统分区变为只读(Dynamic Partitions),修改系统文件需通过Magisk模块或其他复杂方式。
- Google强制硬件验证(如Verified Boot),Root可能导致设备无法启动。
- Android 15引入更严格的内核保护和文件系统加密,Root难度进一步提高,需依赖最新Magisk版本或定制工具。
版本对比与演变趋势
- 早期(Android 4.0-5.x):权限模型简单,普通用户和ADB权限有限,Root较为容易,系统安全性较低。
- 中期(Android 6.0-10):引入运行时权限、SELinux和分区存储,ADB和设备管理器权限受限,Root难度增加但仍可实现。
- 近期(Android 11-15):安全机制大幅增强,普通用户和ADB权限被严格限制,设备管理器功能弱化,Root需复杂操作且可能影响设备功能。
事实上,权限分配大概可以有如下等级:ROOT>设备管理器>ADB调试>普通用户>应用权限,这一个风格和WINDOWS操作系统是非常相似的,不同的是,WINDOWS对于用户,默认给予的是设备管理器即管理员权限,而安卓给予的是普通用户权限,由于普通用户权限较低,很多系统设置是无法绕过的。因此,我们有必要提升自己的权限,来更好的控制自己的设备。
ROOT权限
下面来看一段维基百科的精彩解说:
在Unix与类Unix系统中,root是在所有模式(单/多用户)下对所有文件与程序拥有一切权限的用户(也即超级用户)的约定俗成的通名。但也有例外,如在BeOS中超级用户的实名是baron,在其他一些Unix派生版里则以avatar作为超级用户的实名,而BSD中一般也提供“toor”账户(即“root”的反写)作为root账户的副本。无论实名为何,超级用户的用户ID(UID)一般都为0。root用户可以进行许多普通用户无法做的操作,如更改文件所有者或绑定编号于1024之下的网络端口。之所以将“root”设定为超级用户之名,可能是因为root是唯一拥有修改UNIX系统根目录(root directory)权限的用户,而根目录最初就被认为是root的家目录。
总而言之,超级用户便是所有权限的掌控者,但由于其权限过高,中国大陆地区厂商出于种种目的会禁止你使用root用户,防止用户启用root的方法也很简单:由于在root之前一定要解开Bootloader锁(以下简称BL锁),因此,即可以设置长密码来防止这道保护锁被解开,进而用户就无法使用任何root权限。
截止目前,仍然支持能解除BL锁获取ROOT的权限的品牌有:
一加(OnePlus):策略在中国大陆地区厂家中是最松的,没有设置任何BL锁,因此仅需要输入解锁命令即可完成。
小米(MI):策略在近来逐渐收紧,需要小米社区等级达到五级,通过小米高考且小米账号绑定在该手机上,超过七天后方能解锁,并且这一解锁并非真正的解锁,需要配合面具Magisk以及recover分区修改来使用。
三星(SAMSUNG):策略相对宽松,也可一键解锁,但是解锁后会直接物理熔断NFC支付相关物理组件导致无法使用NFC支付。
谷歌(Pixel):策略同一加,非常宽松,但是在中国大陆地区兼容性差。
由于中国大陆地区基本上无法获取root权限,而且如果能拿到root权限,也不会来看这篇文章了,所以本文对ROOT的介绍到此为止,更多详细内容请自行探索。
设备管理器权限
这里我找不到维基百科精彩解说了,所以我们来叫AI生成一段吧。
安卓设备管理器(Device Administrator)是安卓系统提供的一种权限机制,旨在为特定应用(如企业管理工具或防盗应用)授予高级设备控制功能。用户需手动授予设备管理器权限,应用可通过API执行如远程锁定设备、强制设置密码、擦除数据或限制某些功能(如禁用相机、限制应用安装)等操作。主要用于企业设备管理(MDM)或防盗场景,如Google的“查找我的设备”。设备管理器权限高于普通用户,但低于Root权限,无法修改系统文件或访问系统分区。随着安卓版本迭代(如Android 9及以上),设备管理器API功能逐渐被弃用,部分功能迁移至更安全的企业管理模式(如Android Enterprise)。在Android 11-15中,权限进一步受限,强调用户隐私和系统安全。设备管理器需用户明确授权,且可随时在设置中撤销,适合需要设备控制但不希望Root的场景。
事实上,这个权限更多用在的是监管机群中,用来在企业等环境下来控制不同类型的终端设备,而且由于谷歌的限制操作起来非常的麻烦,并且由于本质上是受到监管,所以在锁屏界面和控制中心会显示出部分字样,略微影响美观。
Dhizuku:保护
比起Shizuku,Dhizuku更像是一个盾牌,它不能提供太多对设备的操控方式,但是能够很好的保护你的设备。这是由于它的监管的属性决定的,只是我们用于了保护自己的设备。
启用Dhizuku的方法并不复杂,因为这是一个受支持的行为^[受支持],但是由于Android的策略限制,只能有一个账户才能激活Dhizuku。
如果你的设备已经使用了一段时间,那么可以使用Shizuku和Hail与Account的组合来冻结某一些应用,而不用卸载后重新安装。但是,有一些系统的系统账号以及平行空间,隐私空降等系统级应用是无法禁用的,因此,你可能需要暂时停用这些功能。
由于本文不是教程,因此在这里不具体讲述如何激活Dhizuku,更希望的是浏览本站的人能够更好的掌握自己的设备,因此方法请自行搜索。
负面影响
比起Shizuku,Dhizuku对系统的影响会更多,但是基本上是保护方面,操作不当会导致一些莫名其妙的功能禁用,但是操作基本可逆。
监管字样
由于Dhizuku使用的是设别管理器的权限,因此会在锁屏界面和控制中心显示监管字样,且无法删除。
仅能够更改监管单位的信息,其他字样不能更改。
这种原来系统的签名格言调用的是应用管理器的信息展示,但是监管字样在信息前面。
莫名的限制
如果并非必要,请不要把Dhizuku当做设置,这会导致不大方便。并且,Dhizuku的权限是高于系统普通设置的。
如果误操作Dhizuku,会导致许多功能被限制。在这种情况下,请详细检查你的设置。
功效
正如前面所言,Dhizuku更大的用途是用来保护自己的设备。其有为数不多的两个功能:
installX授权器
期初我决定激活Dhizuku是为了保活应用包安装程序installX(因为懒得每次重启都启用ADB)。
成功启用installX授权器后,便可作为安装器的授权器,无需每次都重启(对于学生特别友好)。
始终保持VPN连接
嗯,这个功能更有意思。
出于对隐私安全的保护,我已经习惯使用虚拟私人网络连接互联网了。
但是,在安卓设备上无法像Windows一样自启动,因此每一次都得手动点击按钮连接。
由于VPN本来是用于工作等安全场合,故Dhizuku也支持始终连接VPN。
不过,如果手动关闭VPN,会提示连接已经关闭,这一点也很好,在需要使用纯净住宅IP或者遭到代理歧视的情况下可以选择关闭。
需要注意的是,如果没有必要,请不要勾选“”。
应用保护
一般来说,我们不会随意卸载应用,可以启用Dhizuku保护。
有一些比较重要的应用,例如微信,QQ,世界计划,原神应用,如果被错误删除,应用数据(例如聊天记录和游戏资源)就会灰飞烟灭,因此有必要对这些应用进行保护。
单个应用控制:
上面展示的功能只是冰山一角。
ADB调试
下面我们来看看谷歌官方对ADB的解释:
Android调试桥(英语:Android Debug Bridge,简称:ADB),是一种拥有众多功能的、用于调试Android设备的命令行工具。开发者可以通过它与Android设备进行通信。ADB可以执行各种设备操作(例如安装和调试应用,传输文件),并提供对Unix shell(用于在设备上运行各种命令)的访问权限。它是一种客户端 - 服务器程序,包括客户端(adb)、守护进程(adbd)、服务器三个组件。
ADB调试将是我们本次提升权限的重点。由于ADB调试作为调试工具,能执行很多普通用户无法触及到的权限,但是通常ADB需要在计算机的辅助下进行,也就是说,如果要进行ADB调试,身旁必须要携带着计算机,这显然是不太现实的。
不过好在咕噜咕噜为我们贴心的提出了无限调试这个选项,看看它是怎么说的:
Android 11(API 级别 30)及更高版本支持使用 Android 调试桥 (adb) 从工作站以无线方式部署和调试应用。例如,您可以将可调试应用部署到多台远程设备,而无需通过 USB 实际连接设备。这样就可以避免常见的 USB 连接问题,例如驱动程序安装方面的问题。
这样一来,我们就可以通过某一个应用来进行无线调试,而不需要携带笨重的计算机。
因此,可以使用shizuku来进行模拟无线配对调试。
由于用户手册 | Shizuku和各大平台都对shizuku,因此我本着不重复造轮子的原则在这里就不重复叙述。
警告:未完成的页面,将在未来完成。
^[受支持]: 有一些功能是Android开发时就有计划的功能。