玩机搞机----面具模块的组成 制作模块

root面具相信很多玩家都不陌生。早期玩友大都使用第三方卡刷补丁来对系统进行各种修复和添加功能。目前面具补丁代替了这些操作。今天的帖子了解下面具各种模块的组成和几种普遍的代码组成。
Magisk中运行的每个单独的shell脚本都将在内部的BusyBox的shell中执行。对于与第三方开发者而言,这包括所有引导脚本和模块安装脚本。
一个面具模块由/METAINF/*、/system/*、/customize.sh、/module.prop、/post-fs-data.sh、/service.sh、/system.prop、/uninstall.sh、/sepolicy.rule组成其中只有/META-INF/*和/module.prop是必须的其他的部分都是可选添加的,每个部分都有不同的作用.
💔💔💔以下是最简单的一个面具改机型模块的组成

对于那些想在Magisk之外使用此“独立模式”功能的人,有两种启用它的方法:
- 将环境变量
ASH_STANDALONE设置为1
示例:ASH_STANDALONE=1 /data/adb/magisk/busybox sh <script> - 切换命令行选项:
/data/adb/magisk/busybox sh -o standalone <script> - Magisk模块的文件在
/data/adb/modules中具有以下结构: -
/data/adb/modules ├── . ├── . | ├── $MODID <--- 该文件夹以模块的ID命名 │ │ │ │ *** 模块ID *** │ │ │ ├── module.prop <--- 该文件存储模块的基本信息 │ │ │ │ *** 主要内容 *** │ │ │ ├── system <--- 如果skip_mount不存在,则将挂载此文件夹 │ │ ├── ... │ │ ├── ... │ │ └── ... │ │ │ │ *** 状态标志 *** │ │ │ ├── skip_mount <--- 如果存在,Magisk将不会挂载你的system文件夹 │ ├── disable <--- 如果存在,该模块将被禁用 │ ├── remove <--- 如果存在,该模块将在下次重新启动时被删除 │ │ │ │ *** 可选文件 *** │ │ │ ├── post-fs-data.sh <--- 该脚本将在post-fs-data模式下执行 │ ├── service.sh <--- 该脚本将在late_start service模式执行 | ├── uninstall.sh <--- 当Magisk删除您的模块时,将执行此脚本 │ ├── system.prop <--- 该文件中的properties将通过resetprop作为系统properties加载 │ ├── sepolicy.rule <--- 添加自定义的sepolicy规则 │ │ │ │ *** 自动生成,请勿手动创建或修改 *** │ │ │ ├── vendor <--- 指向$MODID/system/vendor的链接 │ ├── product <--- 指向$MODID/system/product的链接 │ ├── system_ext <--- 指向$MODID/system/system_ext的链接 │ │ │ │ *** 允许任何其他文件/文件夹 *** │ │ │ ├── ... │ └── ... | ├── another_module💔💔💔module.prop记录了模块的ID,名称,版本,作者,简介等内容,module.prop的含义与简单的修改型号模块代码对比。
id=<string> name=<string> version=<string> versionCode=<int> author=<string> description=<string>id=三星9300 name=改机型为三星9300 version=Pro versionCode=1 author=孤独的小猫咪 description=改机型为三星9300 -
最简单的模块只要有
/META-INF/com/google/android/update-binary&updater-script
和/module.prop&/system
就足够了。当然,这样的模块的模块也只是刷入留下module.prop信息和替换/system/*中的文件而已,但这也足够满足替换类模块的需求,也就是说不需要用到指令的情况下这样就够了。对于最简单的改机型面具模块来说就是最鲜明的例子。 -

-
💔💔 common--system.prop里面的信息就是此模块的主要起作用文件.这玩意就是修改prop的值,属于重置/替换/添加,但是没有删除这个功能。其功能一目了然。修改prop里面的型号值
-
ro.product.model=XT2301-5 ro.product.brand=motorola ro.product.manufacturer=motorola ro.product.device=msi💔💔💔customize.sh,这个脚本是在模块刷入时执行的用于各种需要刷入进行准备使用的指令,像是检测设备机型,Android版本,或是音量键选择之类的都要写在这里面,
-
其中customize.sh代码。例如
-
########################################################################################## # # Magisk Module Installer Script # 模块作者:孤独小猫咪 # ########################################################################################## ########################################################################################## # # Instructions: # # 1. Place your files into system folder (delete the placeholder file) # 2. Fill in your module's info into module.prop # 3. Configure the settings in this file (config.sh) # 4. If you need boot scripts, add them into common/post-fs-data.sh or common/service.sh # 5. Add your additional or modified system properties into common/system.prop # #################################################################################################################################################################################### # Configs ########################################################################################### Set to true if you need to enable Magic Mount # Most mods would like it to be enabled########################################################################################## # Installation Message ########################################################################################### Set what you want to show when installing your modprint_modname() {ui_print "*******************************"ui_print "记得重启前将同类型模块关掉哦"ui_print "*******************************" }########################################################################################## # Replace list ########################################################################################### List all directories you want to directly replace in the system # Check the documentations for more info about how Magic Mount works, and why you need this# This is an example REPLACE=" /system/app/Youtube /system/priv-app/SystemUI /system/priv-app/Settings /system/framework "# Construct your own list here, it will override the example above # !DO NOT! remove this if you don't need to replace anything, leave it empty as it is now REPLACE="" #添加您要精简的APP/文件夹目录 #例如:精简状态栏,找到状态栏目录为 /system/priv-app/SystemUI/SystemUI.apk #转化加入:/system/priv-app/SystemUI #(可以搭配高级设置获取APP目录)########################################################################################## # Permissions ########################################################################################## #释放文件,普通shell命令 on_install() {ui_print "- 正在释放文件"unzip -o "$ZIPFILE" 'system/*' -d $MODPATH >&2 }set_permissions() {# Only some special files require specific permissions# The default permissions should be good enough for most cases# Here are some examples for the set_perm functions:# set_perm_recursive <dirname> <owner> <group> <dirpermission> <filepermission> <contexts> (default: u:object_r:system_file:s0)# set_perm_recursive $MODPATH/system/lib 0 0 0755 0644# set_perm <filename> <owner> <group> <permission> <contexts> (default: u:object_r:system_file:s0)# set_perm $MODPATH/system/bin/app_process32 0 2000 0755 u:object_r:zygote_exec:s0# set_perm $MODPATH/system/bin/dex2oat 0 2000 0755 u:object_r:dex2oat_exec:s0# set_perm $MODPATH/system/lib/libart.so 0 0 0644# The following is default permissions, DO NOT removeset_perm_recursive $MODPATH 0 0 0755 0644#设置权限,基本不要去动 }########################################################################################## # Custom Functions ########################################################################################### This file (config.sh) will be sourced by the main flash script after util_functions.sh # If you need custom logic, please add them here as functions, and call these functions in # update-binary. Refrain from adding code directly into update-binary, as it will make it # difficult for you to migrate your modules to newer template versions. # Make update-binary as clean as possible, try to only do function calls in it.CommonPath=$MODPATH/common if [ ! -d ${CommonPath} ];thenui_print "模块高级设置不需要修复!"elif [ "`ls -A ${CommonPath}`" = "" ];thenui_print "模块高级设置为空!"rm -rf ${CommonPath} elseui_print "- 正在进行模块高级设置"mv ${CommonPath}/* $MODPATHrm -rf ${CommonPath}fi这个应该是面具模块里面最简单的一个。其实目前有很多玩机工具里面有很多面具模块的初始模板.。
-
结合以上描述。应该可以初步了解面具模块的组成和其中各文件的作用。有兴趣的友友可以分解一些简单的模块对照了解其文件组成。原则上来说。面具模块可以完成很多第三方rec卡刷补丁的一些操作。而且操作也比较简单。更详细的可以参考:Developer Guides | Magisk各面具更新 更换等可以参考;玩机搞机----root面具的安装 更新 隐藏root 德尔塔面具等等综合解析_安卓机器的博客-CSDN博
相关文章:
玩机搞机----面具模块的组成 制作模块
root面具相信很多玩家都不陌生。早期玩友大都使用第三方卡刷补丁来对系统进行各种修复和添加功能。目前面具补丁代替了这些操作。今天的帖子了解下面具各种模块的组成和几种普遍的代码组成。 Magisk中运行的每个单独的shell脚本都将在内部的BusyBox的shell中执行。对于与第三方…...
注册中心/配置管理 —— SpringCloud Consul
Consul 概述 Consul 是一个可以提供服务发现,健康检查,多数据中心,key/Value 存储的分布式服务框架,用于实现分布式系统的发现与配置。Cousul 使用 Go 语言实现,因此天然具有可移植性,安装包仅包含一个可执…...
Next.js 13 你需要了解的 8 件事
目录 React 服务器组件 (RSC)服务器组件默认开启在 Next.js 中客户端组件也在服务器上呈现!组成客户端和服务器组件编译Next.js 13 渲染模式桶文件有点坏了库集成:WIP 仍在进行中Route groups 路由组总结 在本文中,我们…...
计数排序(Count Sort)算法详解
1. 算法简介 计数排序(Count Sort)是一种非比较排序算法,其核心思想是统计数组中每个元素出现的次数,然后根据统计结果将元素按照顺序放回原数组中。计数排序的时间复杂度为O(nk),其中n是数组的长度,k是数…...
Linux驱动开发(Day3)
驱动点灯:...
使用Vscode调试shell脚本
在vcode中安装bash dug插件 在vcode中添加launch.json配置,默认就好 参考:http://www.rply.cn/news/73966.html 推荐插件: shellman(支持shell,智能提示) shellcheck(shell语法检查) shell-format(shell格式化)...
OpenAI Function calling
开篇 原文出处 最近 OpenAI 在 6 月 13 号发布了新 feature,主要针对模型进行了优化,提供了 function calling 的功能,该 feature 对于很多集成 OpenAI 的应用来说绝对是一个“神器”。 Prompt 的演进 如果初看 OpenAI 官网对function ca…...
【C语言】字符分类函数、字符转换函数、内存函数
前言 之前我们用两篇文章介绍了strlen、strcpy、stract、strcmp、strncpy、strncat、strncmp、strstr、strtok、streeror这些函数 第一篇文章strlen、strcpy、stract 第二篇文章strcmp、strncpy、strncat、strncmp 第三篇文章strstr、strtok、streeror 今天我们就来学习字…...
Deep Learning With Pytorch - 最基本的感知机、贯序模型/分类、拟合
文章目录 如何利用pytorch创建一个简单的网络模型?Step1. 感知机,多层感知机(MLP)的基本结构Step2. 超平面 ω T ⋅ x b 0 \omega^{T}xb0 ωT⋅xb0 or ω T ⋅ x b \omega^{T}xb ωT⋅xb感知机函数 Step3. 利用感知机进行决策…...
测试工具coverage的高阶使用
在文章Python之单元测试使用的一点心得中,笔者介绍了自己在使用Python测试工具coverge的一点心得,包括: 使用coverage模块计算代码测试覆盖率使用coverage api计算代码测试覆盖率coverage配置文件的使用coverage badge的生成 本文在此基础上…...
安卓监听端口接收消息
文章目录 其他文章监听端口接收消息 建立新线程完整代码 其他文章 下面是我的另一篇文章,是在电脑上发送数据,配合本篇文章,可以实现电脑与手机的局域网通讯。直接复制粘贴就能行,非常滴好用。 点击连接 另外,如果你不…...
「Node」下载安装配置node.js
以下是Node.js的下载、安装和配置的全面教程: 下载 Node.js 打开 Node.js 官方网站:Previous Releases在主页上,您会看到两个版本可供选择:LTS(长期支持版本)和最新版(Current)。如…...
NOIP2014普及组,提高组 比例简化 飞扬的小鸟 答案
比例简化 说明 在社交媒体上,经常会看到针对某一个观点同意与否的民意调查以及结果。例如,对某一观点表示支持的有1498 人,反对的有 902人,那么赞同与反对的比例可以简单的记为1498:902。 不过,如果把调查结果就以这种…...
【Java】使用Apache POI识别PPT中的图片和文字,以及对应的大小、坐标、颜色、字体等
本文介绍如何使用Apache POI识别PPT中的图片和文字,获取图片的数据、大小、尺寸、坐标,以及获取文字的字体、大小、颜色、坐标。 官方文档:https://poi.apache.org/components/slideshow/xslf-cookbook.html 官方文档和网上的资料介绍的很少…...
根据源码,模拟实现 RabbitMQ - 实现消息持久化,统一硬盘操作(3)
目录 一、实现消息持久化 1.1、消息的存储设定 1.1.1、存储方式 1.1.2、存储格式约定 1.1.3、queue_data.txt 文件内容 1.1.4、queue_stat.txt 文件内容 1.2、实现 MessageFileManager 类 1.2.1、设计目录结构和文件格式 1.2.2、实现消息的写入 1.2.3、实现消息的删除…...
找到所有数组中消失的数(C语言详解)
题目:找到所有数组中消失的数 题目详情: 给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1,n] 内。请你找出所以在 [1,n] 范围内但没有出现在 nums 中的数字,并以数组的形式返回结果。 示例1: 输入…...
计算机毕设项目之基于django+mysql的疫情实时监控大屏系统(前后全分离)
系统阐述的是一款新冠肺炎疫情实时监控系统的设计与实现,对于Python、B/S结构、MySql进行了较为深入的学习与应用。主要针对系统的设计,描述,实现和分析与测试方面来表明开发的过程。开发中使用了 django框架和MySql数据库技术搭建系统的整体…...
Unity UI内存泄漏优化
项目一运行,占用的内存越来越多,不会释放,导致GC越来越频繁,越来越慢,这些都是为什么呢,今天从UI方面谈起。 首先让我们来聊聊什么是内存泄漏呢? 一般来讲内存泄漏就是指我们的应用向内存申请…...
学习笔记:Opencv实现图像特征提取算法SIFT
2023.8.19 为了在暑假内实现深度学习的进阶学习,特意学习一下传统算法,分享学习心得,记录学习日常 SIFT的百科: SIFT Scale Invariant Feature Transform, 尺度不变特征转换 全网最详细SIFT算法原理实现_ssift算法_Tc.小浩的博客…...
【golang】接口类型(interface)使用和原理
接口类型的类型字面量与结构体类型的看起来有些相似,它们都用花括号包裹一些核心信息。只不过,结构体类型包裹的是它的字段声明,而接口类型包裹的是它的方法定义。 接口类型声明中的这些方法所代表的就是该接口的方法集合。一个接口的方法集…...
利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...
XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...
关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...
AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...
掌握 HTTP 请求:理解 cURL GET 语法
cURL 是一个强大的命令行工具,用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中,cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...
Linux中《基础IO》详细介绍
目录 理解"文件"狭义理解广义理解文件操作的归类认知系统角度文件类别 回顾C文件接口打开文件写文件读文件稍作修改,实现简单cat命令 输出信息到显示器,你有哪些方法stdin & stdout & stderr打开文件的方式 系统⽂件I/O⼀种传递标志位…...
