zoukankan      html  css  js  c++  java
  • Magisk Manager

    Magisk Manager

    来源 https://zhuanlan.zhihu.com/p/61302392

    Magisk 本质上是一种文件挂载系统。我们大多数时候所接触到的那个图标为面具的应用,其实只是我们与之发生各种交互行为的「媒介」。

    今天我们就来介绍一下这个「媒介」的四大功能。

    隐藏 root 事实「无痛」玩机

    从某种角度上来说,是 Magisk Hide 让「刷入 Magisk」这件事情从可选项变成了推荐项。

    大家好,我是一名 Android 玩家,自从看了少数派的文章给手机解 BL 锁、Root 了之后,奇怪的事情便接踵而至:没办法从 Play Store 中搜索到 Netflix、心爱的宝可梦走等一些游戏没办法玩耍、朋友推荐我下载的 App 居然提示不兼容此设备、看视频的时候清晰度死活上不去……

    难道是我的手机坏了?

    许多新手玩家都有这样的疑惑。事实上,包括谷歌服务在内的许多 Android 上的应用、游戏、服务都十分重视保护自己的版权内容,当这些软件检测到你的手机遭到「魔改」后,便会拒绝认证你的设备。

    好在道高一尺魔高一仗,我们现在可以通过 Magisk Hide 来绕过这些检测。

    在我们设置 Magisk Hide 前,先进入 Magisk Manager 检测是否通过了谷歌服务中的 SafetyNet 安全性测试。想要通过 SafetyNet 测试,最好使用原厂系统,或者是值得信赖的第三方 ROM 正式版(也就是 Official Builds),以减少不必要的麻烦。

     

     

    如果是 basic integrity 这一项没有通过认证,那说明你遇到了大麻烦:试着开启「Magisk 核心功能模式」或者卸载所有模块,如果还是没有通过,那么你可能需要换一个系统或者第三方 ROM 了。

    如果是 ctsProfile 这一项没有通过,那说明你的 ROM 没有通过其兼容性测试,一些 beta 版本或者国内厂商的 ROM 可能出现这种问题。这时我们下载使用 MagiskHide Props Config 这个模块往往能够解决问题。

    确保 SafetyNet 检测无虞后,我们才能开始「蒙眼」行动,即对指定的某些 App 隐藏 Magisk 的存在。

    在 Magisk Manager 的侧边菜单中找到 Magisk Hide 项,选中我们想要隐藏的目标 App 即可。最近更新的 Magisk 19.0 版本还加入了「应用组件」层面进行 Magisk Hide 的功能。

     

     

    至于对哪些应用进行 Magisk Hide,这个就要看每个读者的具体需要了。一般来说,Google Play 服务和商店是必须的,但也请注意这条来自开发者的注意事项:如无必要,不要随意在 Magisk Hide 列表添加 App 而造成滥用(Do not abuse MagiskHide!)。

    如果你还不放心,还可以去 Magisk Manager 的设置中打开「隐藏 Magisk Manager」。此时 Magisk Manager 将会进行一次重新安装,以便打乱软件包名来躲过对 Magisk Manager 的检测。

    至此,Magisk 已经能比较好地向那些对「系统完整性」有苛刻要求的应用隐藏自己。

    替代 SuperSU 进行 root 权限管理

    大多数用户刷 Magisk ,就是奔着超级用户权限(Superuser)去的,这也是 Magisk 的核心功能。

    身兼 root 工具的 Magisk,在这方面的功能可以说是稳扎稳打。用户不必要过度操心,直接使用 Magisk Manager 中的默认设置就能用得舒心。App 向你提请超级用户权限的时候,用户可以选择永久同意、一定时间内同意或者是拒绝,超时之后没有进行选择,那么便会选择拒绝。

    进入菜单中的超级用户项,你还可以手动管理已经进行操作过的 App,进行通过或者拒绝,亦或者是删除操作让 App 在下次打开时再次弹窗申请权限。子项目里你可以关闭 App 在使用超级用户权限时的浮动提醒或者是记录。虽然我并不建议这么做,实在厌烦的话还是从心关闭提醒吧。

     

     

    Manager 设置中的关于超级用户的并不多,但是用户还是可以自定义请求权限弹窗的倒计时时长(默认 10 秒)、对于请求权限的默认处理、开启指纹认证等等。

    获取、管理 Magisk 模块

    「模块」这个字眼,让许多用户把 Magisk 和 Xposed 这两件完全不同的工具混淆在了一起。

    模块的本质,是将原本需要玩家繁复操作的玩机过程与 Magisk「不改动系统」(Systemless-ly) 的特性结合在一起,并进行打包和分发。模块极大地简易了玩机操作,一个小小的 .zip 包文件可能包含了另一套全字重字体,可能囊括了一整套内核参数调教方案,可能附加了一些额外的小功能或是界面美化……模块只是简易了玩机操作的实践,但并没有将它无害化,该翻车的操作还是会翻车,这个时候模块的管理就变得尤其重要。

    从获取模块的角度来说,与 Xposed 类似,Magisk Manager 内集成了一个官方的模块仓库,用户在侧边菜单栏中切换到下载便可以查看这个模块仓库。最新更新的模块会显示在靠前位置,方便我们优先挑选那些仍在活跃更新的模块。但令人遗憾的是,模块仓库至今没有分类,你只能选择从这个单一的漫长的列表向下滑去,逐一阅读模块的简介(大多为英文)。

    这个时候,英语这门语言工具终于派上了用场,点击模块卡片会具现出模块开发者的说明,里面会标明这个模块的用途、要求、用法、更新说明、相关的帖子群组链接等等重要内容。我强烈建议对于未知的模块,应该先仔细完整地阅读一遍此说明。

     

     

    当然了,任何有能力制作模块的开发者都能分发自己制作的模块,也可以选择是否提交到官方的模块仓库。玩机论坛里面你可以看到更多玩家的刷入反馈和测试,著名国外玩机论坛 XDA 还有专门的 Magisk 板块,国内的酷安等交流地也有不少活跃制作模块的开发者。

    知道模块可以从哪里得到后,我们要讨论的就是管理问题。管理主要是刷入和卸载两方面。广义地说,任何能给手机刷入 .zip 包的工具都可以进行模块的刷入,比如 TWRP、Magisk Manager 和 Franco Kernel Manager 等,操作也都简单得类似,刷入、重启生效。

    今次我们主要讲讲 Magisk Manager:在模块仓库中点击下载,便会自动开始下载、刷入的步骤,刷入完成后你可以选择关闭或者是直接重启生效。模块更新也是一样的步骤。但如果你是手动下载的模块 .zip 包,一切都需要手动。进入模块菜单项,点击下方的加号图标进入文件目录选取目标模块 .zip 包,即可开始模块的刷入或是更新。

     

     

    如果你刷入模块重启能顺利进入系统,那么意味着这个模块的刷入还算安全。在能够进入 Magisk Manager 的情况下,停用某个模块只需要把相应模块的钩子取消掉即可,如果你还想删掉这个模块,一并点击垃圾桶图标删除。停用和卸载都需要重启生效。

    可是如果「翻车」进不了系统,那该如何停用和卸载问题模块呢?

    1. 无论是提前安装好,还是翻车后进入 TWRP 安装,你都需要用到 Magisk Manager for Recovery Mode 模块(仓库中搜索 mm 即可)。翻车后进入 TWRP 中的终端输入使用指令即可开始管理模块,详见该模块的使用说明。
    2. 部分模块可以以「同样的模块包,再刷入一次便是卸载」的方式对应进行停用卸载。
    3. 痛定思痛,进入 TWRP 刷入 Magisk 的卸载包,卸载一整个 Magisk。
    4. 没有 TWRP,保留数据刷写当前系统的完整包。

    玩机千万条,数据第一条;模块不规范,机主两行泪。

    Magisk 安装与升级

    Magisk Manager 不光是用于管理 Magisk 的功能行使,也时刻承载着其版本更迭。

    每当 Magisk 进行版本更迭的时候,用户就会在 Manager 收到更新推送,一般是先更新 Magisk Manager,再由其来更新 Magisk 本体。有趣的是,和 Google Chrome 类似,Magisk 也具有稳定版、beta 测试版和 Canary 金丝雀版三个版本,都是由开发者官方推出,用户可以根据自己的经验和需要选择对应的版本。

    同时,Magisk 是一个开源项目,不少开发者对它也有自己的想法和设计,比如开发 MD2 设计的 Manager,甚至是在 github 上维护一个自己的 Magisk 版本,提供更新链接供用户在 Manager 的设置中填入,从而跟随此版本的开发线。

     

     

    没有刷入 Magisk 的时候,Manager 能做的事情很有限,主要功能就是将原厂的 boot 分区镜像打包成具有 root 权限的镜像,供玩家启动和刷入。详细的步骤已经在本系列第一篇 《每个 Android 玩家都不可错过的神器(一):Magisk 初识与安装》 详细介绍,这里就不多赘述。

    结语

    Magisk 的设计包含了许多奇妙的构想,呈现到功能上来让人惊呼 Magic。如果想要最大程度地对 Magisk 魔法般的功能善加利用,必须足够熟悉 Magisk Manager。大胆尝试、谨慎操作,补全系统的特性,或是增加自己想要的功能,让手中的设备成为一台梦想机,享受美好的数字生活。

    关联阅读:

     
     

    权限管控与存储空间隔离

    首先,这些方法会从不同程度上依赖于一台装上 Magisk 的手机。虽然部分可以用其它的方式(等效)替代,但总归不是最佳方案。如果可以的话,装上 Magisk 是最好的选择 。

    自 Android 4.3 开始,一个内置的核心组件被引入到系统内:AppOps。经过它拒绝的权限,应用会「允许使用该权限,但得到空白信息」,而不是「直接被拒绝了某项权限」。

    一方面,空信息可以有效的保护隐私。另一方面,不是直接拒绝,而是给予空信息的方式也在一定程度上节制了部分应用「不给权限不给用」的情况。

    同时,由于 AppOps 自高版本 Android 开始才在系统里内置不完整的管理前端,因此,如果想要用的舒心,则需要一个更好用的程序来接管 AppOps。理论上,你可以使用任意的前端来达到目的。我使用的是由独立开发者 Rikka 编写的应用:App Ops。

    App Ops  首先,这个软件的最佳实践需要你使用 Shizuku 或 Sui(它们都是同一个作者 Rikka 的作品。均免费且开源)。它们将作为 App Ops 操纵系统组件的后端。

    Shizuku  Shizuku 与 Sui 在功能上是高度重合的。如果你的手机有 root 权限,特别是基于 Magisk的 root 权限,请优先考虑后者。

    退而求其次,还可以使用 ADB 激活 Shizuku 或者授予 AppOps 设备管理员权限来达到相同的目的,在 Android 11 以及更高的 Android 版本,可以无需连接电脑,通过本机无线调试即可激活 Shizuku。

    少数派曾经发了一篇很棒的 App Ops 使用指南:《在权限管理上跑过 iOS 14 和 Android 11:App Ops 4.0 上手指南》。点击上方链接即可直达。1

    替代品

      • XPrivacyLua:一款通过 Hook 系统权限管理器来实现权限管理的程序。需要 Xposed 框架,或是使用 LSPosed 等工具。
      • AppOps Module For Invalid App:一款通过 Hook 系统核心框架来实现权限管理的应用,同上。
      • 权限狗:一款通过 ROOT / 设备管理员等方式控制 AppOps 的前端程序。
      • App Manager:一款通过 ROOT 来管理设备许多功能的瑞士军刀。其中包含 AppOps 权限管理功能。

    =========== End

  • 相关阅读:
    P4097 [HEOI2013]Segment(李超线段树模板)
    P2155 [SDOI2008]沙拉公主的困惑
    BZOJ3675 [Apio2014]序列分割[斜率优化dp]
    hdu4261 Estimation[暴力dp+对顶堆]
    poj2374 Fence Obstacle Course[线段树+DP]
    poj1463 Strategic game[树形DP]
    CH5E02 [IOI1999]花店橱窗[暴力dp]
    CH5E01[NOIP2010] 乌龟棋[暴力]
    CH5702 Count The Repetitions[倍增dp]
    P1081 [NOIP2012]开车旅行[倍增]
  • 原文地址:https://www.cnblogs.com/lsgxeva/p/15449214.html
Copyright © 2011-2022 走看看