Magisk Lite


Channel's geo and language: not specified, not specified
Category: not specified


Magisk Lite,仅有SU功能,不提供对模块的支持。
白名单模式的Magisk,所有应用程序默认隐藏,只有勾选的应用程序才能获得超级用户权限。

Related channels

Channel's geo and language
not specified, not specified
Category
not specified
Statistics
Posts filter


由于官方在对Hide功能进行大型修改,待功能最终定型后,lite版本再开始更新。






magisk-release.zip
5.9Mb
a848f10b-lite

恢复模块功能,可以安装单独的lite模块。
要求:开机完成后,zygote及其子进程不再读取任何由模块挂载的文件。
否则手机会出现各种莫名其妙的问题。


谈谈 模块与Hide 之间的关系

在Magisk Lite刚完工时,自然测试了一番模块功能,并且得到匪夷所思的结果,有不能理解的行为异常。

从理论上看,对zygote卸载所有模块的文件,与对app卸载所有模块的文件,它们并没有技术上的区别。对app进程来说,这些文件在文件系统上均从一开始就不存在。但事实说明,事情没有这么简单。

在常规Magisk,能正常使用overlay app更改framework的资源,在lite则直接翻车。这个问题的原因很幸运地找到:日志中出现大量无法打开/product/overlay/abc.apk的错误,在打开任意app时触发。

很明显,在zygote fork并转化成app时,如果需要读取模块文件,会找不到然后翻车。这个日志表明,overlay app会在这个时候被读取一遍,载入进程内存。因为这个overlay app的target app是android,所以全部应用都需要载入它。除非某个应用完全不使用framework的资源,这是不可能的。

这个问题分析完了,链条很清晰:zygote fork后加载app→app依赖framework资源→加载framework→加载目标是framework的overlay→找不到。

这应该是lite使用模块后各种奇怪问题中最好分析的一个。它引出一些有意思的问题:

对常规Magisk来说,卸载模块的时机在哪一步?常规Magisk在UID改变并且挂载命名空间分离后立即卸载挂载,这时应用还没有加载完成,没有出现同样问题是时机刚好吗?
如果在运行时主动检索某个包的资源,而目标是这个包的overlay已经不存在,会怎么样?
zygote已经加载过framework和它的overlay,为什么要加载第二次?
这些问题需要研究源代码和实验才能解答。

说到底,Android的设计是apk的资源都是共享的,某个已安装应用的apk消失不可能不出问题。我也一再倡议,转系统应用的模块,应该放低版本apk,最好是stub,然后正常更新。

在我看来,MagiskHide实在是个危险的东西,不论从原理,还是其实现方式。仅仅把卸载时间提前一点,行为就完全不可控。或许只有修改不被载入app内存,不被app运行时读取的文件,才是安全的。








magisk-release.zip
5.9Mb
版本 a63d6c03-lite,同步官方更新。
推荐使用应用内更新。


magisk-release.zip
5.9Mb
版本 17b5291b-lite,同步官方更新。
推荐使用应用内更新。

支持直接返回官方版本。






magisk-release.zip
6.1Mb
版本 b44dcc2d-lite,同步官方更新。
推荐使用应用内更新。

强制禁用所有模块,任何模块均不加载,用户脚本不受影响。


magisk-release.zip
6.1Mb
版本 c881fd49-lite,同步官方更新。
推荐使用应用内更新


面向开发者:如果想使用/sbin/.magisk等目录,需要使用su -mm。


magisk-release.zip
6.5Mb
正式发布alpha版本


从官方版本切换步骤:

通过Magisk Manager安装本地模块功能刷入zip,完成后不要立即重启。
卸载所有用户的Magisk Manager。
安装magisk.zip压缩包里面的common/magisk.apk
重启。

在Magisk Lite,如果有模块能用算运气好。出现了奇怪的情况首先检查是不是还有模块没有移除。


adb shell申请超级用户自动允许。

magiskhide add UID 包名 添加超级用户应用
magiskhide rm UID 包名 移除超级用户应用
magiskhide ls 列出超级用户应用

上述命令结果取决于多用户模式。修改多用户模式后重启生效。

多用户模式分为:
仅主用户。只有主用户应用能获得root。
与主用户同步。主用户允许root的应用在其它用户中也能获得root,仅能通过主用户的Magisk Manager管理。
各用户独立。通过UID独立控制,各个用户的Magisk Manager显示不同。

18 last posts shown.

894

subscribers
Channel statistics