magisk介绍及运行原理


张登友,张登友的博客,张登友的网站——

1.magisk介绍

说起Magisk,相信经常刷机的朋友们无人不知无人不晓,哪怕自己没有使用过,也至少听说过了吧。
那么Magisk它到底是个什么东西?
简单来说,它主要有两个重大功能:
①ROOT权限获取和管理
比如我们的/system/xbin中没有su,我们可以通过刷入相应的模块,在系统启动初期,将su映射到/system/xbin下来获取root
②挂载功能多样的各种扩展模块
如大家所熟知的替换系统字体、指纹特效、开机动画等等。。

root流程以及edxposed使用方法https://www.zdynb.cn/2020/ru-he-jie-suo-shua-ji-root.html

2.ROOT权限获取和管理

说起ROOT,可能大家最熟悉的应该是SuperSU。SuperSU是XDA非常著名的开发者ChainFire维护的一款作品,是前些年最火的ROOT权限获取和管理工具,没有之一。
在安卓5.0之后,谷歌封堵了大量的漏洞,一些以商业化模式运作的各种所谓的一键ROOT工具全都玩完[二哈],这些东西相对来说还非常危险,因为基本任何商业化或者第三方机构给出的超级用户管理工具,都等于是把你的手机变成别人的了,甚至他们还可以比流氓还流氓[doge呵斥]。
而SuperSU不一样,它一直是保持着非商业化运作,并且更新非常积极[欢呼],但遗憾的是在2017年10月,开发者ChainFire发布声明不再参与维护SU,好像是把SuperSU卖给了中国的一家商业化运作的公司,自此更新节奏非常缓慢,目前SuperSU已经不能实现安卓O(8.0)以上更高版本的ROOT了,而取代这一切的,是Magisk,作者是来自中国台湾的topjohnwu。
其实Magisk出来已经很久了,只是因为当时SuperSU还好好的,所以这个家伙一直不怎么出名,也就不被大家所熟知了.
刷入Magisk框架之后,默认就会具备ROOT权限获取和管理,而且在Magisk的管理器里,还有针对指定app隐藏root权限检测的MagiskHide,以免某些软件发现root了就直接自我崩溃,不给使用的情况。

3.运作原理和模块举例:

说起模块,大家应该都会想到Xposed(Edxposed或者太极)
Xposed框架的原理就是替换安卓系统的app_process文件,从而实现对系统的接管,通过回调模块的方式来达到不用修改APK就能改变其表现行为的目的。用通俗的话来说就是是在任意进程启动之前,能加载特定Xposed模块的代码,从而控制任意进程的行为。这些特定的Xposed模块,能在App进程启动之前执行特定代码。app_process其实是存放在systen/bin目录下的一个程序,其作用就是启动zygote,在Android中,zygote是整个系统创建新进程的核心进程。Xposed框架Hook了核心进程Zygote,而其他应用启动都是从Zygote进程fork而来,就够达到针对系统上所有的应用程序进程的Hook。举个例子,比如很著名的某微信模块,就是你在启动微信之前,首先要运行模块内的一些脚本,这些脚本会劫持微信这个APP里的所有行为,所以最终能够实现微信内容防撤回,自定义微信摇骰子和石头剪刀布。
而magisk的原理简单的说就是在系统boot时将其img挂载到自己的分区下,构建一个虚拟文件系统,和system分区无关,以不修改系统文件为前提,从而达到修改系统文件的效果。通过这种方式绕过谷歌安全机制,系统OTA升级,部分”被禁”软件都可以正常使用。而Xposed相反,框架一旦被加载就会修改系统,改动会影响在安全机制保护下的APP,所以一些理财软件,比如某某银行可能就无法使用,这些应用对root权限非常敏感。
总的来说Magisk是通过systemless方式获取root,xposed则需要root才可以工作。所以magisk虽然集合了各种功能,但延展性上不如Xposed,两者虽有一些相似之处,但本质上完全不同,Magisk是创建新的分区而Xposed是直接修改系统文件。现在最好的结果就是二者相辅相成,按自己需要。


文章作者: 张登友
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 张登友 !
  目录