华为解锁bl和root后selinux

华为解锁bl和root后selinux问题有了新的解决方案,适用于机型没有人编译发布解决了selinux问题的魔改内核、自己也编译不好内核的,或者干脆机型就没有内核源码的,如图1,成功让su进程域和zygote进程域宽容,adbd域与su域可动态转换。

首先感谢@某贼 大佬帮我解锁这台华为畅享20plus5g,本教程效果已在此机器上测试成功。

前置条件

1,华为手机已解锁bl和刷好面具,此教程❗️仅限面具用户❗️。ksu和ap用户看帖子最后 2,确实找不到编译好的解决selinux问题的内核,自己也不会编译。

正文

1,下载【MT管理器】 ,有的话请忽略 2,下载置顶评论链接里的文件,投币下载酷币[酷币] 安装好DNA-Android.apk ,授予root权限。解压selinux_solve.zip里的文件夹selinux_solve到/data/adb/目录

3,复制一份precompiled_sepolicy文件到/data/adb/selinux_solve/目录,precompiled_sepolicy一般位于/odm/etc/selinux/或者/vendor/etc/selinux/。重命名为precompiled_sepolicy_bak,再复制一份precompiled_sepolicy文件到/data/adb/selinux_solve/目录。 ❗️❗️此时/data/adb/selinux_solve/下拥有precompiled_sepolicy和precompiled_sepolicy_bak两份文件,后续将使用precompiled_sepolicy作为修改目标,precompiled_sepolicy_bak作为永久备份,用于随时还原初始文件便于重新修改。❗️❗️

4,将/data/adb/selinux_solve/selinux_solve.sh,权限改为777。

基础版:勾选root执行脚本selinux_solve.sh,它会自动将已安装模块的sepolicy.rule里的规则提取至module_sepolicy.txt,然后注入到precompiled_sepolicy文件

进阶版:你还可以在custom_sepolicy.txt写入自定义selinux规则,需符合magisk模块sepolicy.rule语法规则,❗️一定要注意❗️(非系统sepolicy语法规则,这是不同的) 比如写入 permissive * 即可让所有域宽容,几可等于selinux宽容模式,❗️❗️谨慎使用❗️❗️

如果提示type xxx not exist 请终端执行su后,执行 magiskpolicy –print-rules |grep “type xxx ” (注意不要丢了空格) 如果有输出,就把输出内容加到custom_sepolicy.txt开头。 如果没有输出,此项type xxx not exist就跳过,问题不大。 把所有type xxx not exist都处理完成后。再复制备份的precompiled_sepolicy_bak,到脚本目录,重命名为precompiled_sepolicy,再执行脚本。

5,使用DNA-Android应用,主页-新建工程selinux。其他页-提取分区镜像,提取magisk所在分区镜像,就是你修补magisk用的哪个分区镜像或者刷入到哪个分区,就提取哪个分区,ramdisk/boot等等都有可能。提取后镜像文件位于/storage/emulated/0/DNA/image目录,重命名为magisk.img,移动到/storage/emulated/0/DNA/DNA_selinux。 同时备份一份到电脑。

6,回到DNA-Android,主页-工程菜单-分解img,选择勾选magisk.img文件,确定分解。 7,mt进入目录/data/DNA/DNA_selinux/magisk/ramdisk/overlay.d目录,此时根据precompiled_sepolicy初始来源目录,在此新建目录层级。 比如precompiled_sepolicy源于/vendor/etc/selinux,那就创建/data/DNA/DNA_selinux/magisk/ramdisk/overlay.d/vendor/etc/selinux。。。 然后把/data/adb/selinux_solve/precompiled_sepolicy(刚才已用脚本修改好的)复制到刚创建的目录最里层。 /data/DNA/DNA_selinux/magisk/ramdisk/overlay.d/vendor/etc/selinux/precompiled_sepolicy,后面的/vendor/etc/selinux/precompiled_sepolicy,系统原始目录与文件是啥权限用户组,你就设置啥,一一对应。 ❗️如果初始precompiled_sepolicy来源于其他目录,同理❗️ 8,DNA-Android,主页-工程菜单-合成img-dat-br,打包大小原大小,打包格式线刷格式,打包完成到/storage/emulated/0/DNA/DNA_selinux/out/去找,复制到电脑上,fastboot刷入,重启开机。注意分区别刷错了。

9,终端执行su后,执行 magiskpolicy –print-rules > /data/a.txt 然后去/data/a.txt搜索,是否有module_sepolicy.txt和custom_sepolicy.txt匹配的规则,有的话说明规则已加载成功。注意magiskpolicy会自动展开通配符,所以请搜索时不带

Q&A

1,为什么选用precompiled_sepolicy,再用magiskpolicy注入后打包到ramdisk,而不是直接修改.cli这种明文selinux规则,打包到ramdisk? 答:诸如lsposed、zygisknext模块的sepolicy.rule,都带通配符,如果不用magiskpolicy,很难知道应该展开成什么,而magiskpolicy可以自动处理通配符*。

PS:理论上,可以做个模块自动化处理,模块带action脚本,按钮一点击,action脚本自动获取其他模块sepolicy.rule和自定义selinux规则,从特定目录自动获取precompiled_sepolicy,注入完成后,获取magisk本体所在分区的镜像文件,用/data/adb/magisk/magiskboot解包镜像,塞好文件设好权限用户组,自动打包后用dd刷入分区,重启。谁有空弄吧,我是懒得弄了。

理论上,如果你有第三方rec,可以直接替换做好的precompiled_sepolicy,或者你会解包odm/vendor(具体哪个取决于你机器上precompiled_sepolicy在哪),把修改好的precompiled_sepolicy塞进去,打包单刷。解决好avb和dm校验啥的,就不局限于magisk了,ksu和apatch都可以了,但是一定要做好原precompiled_sepolicy和vendor/odm分区的备份

以上是magisk的启动内核

针对荣耀7x机型,按以上操作没有成功

所以我按照华为手机改selinux兼容刷内核,在XDA上找到了资源包

直接刷入,成功permissive

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇