当前位置: 首页 > news >正文

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

 

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之外使用此“独立模式”功能的人,有两种启用它的方法:

  1. 将环境变量ASH_STANDALONE设置为1
    示例: ASH_STANDALONE=1 /data/adb/magisk/busybox sh <script>
  2. 切换命令行选项:
    /data/adb/magisk/busybox sh -o standalone <script>
  3. Magisk模块的文件在/data/adb/modules中具有以下结构:
  4. /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

  5. 最简单的模块只要有
    /META-INF/com/google/android/update-binary&updater-script
    和/module.prop&/system
    就足够了。当然,这样的模块的模块也只是刷入留下module.prop信息和替换/system/*中的文件而已,但这也足够满足替换类模块的需求,也就是说不需要用到指令的情况下这样就够了。对于最简单的改机型面具模块来说就是最鲜明的例子。

  6. 💔💔 common--system.prop里面的信息就是此模块的主要起作用文件.这玩意就是修改prop的值,属于重置/替换/添加,但是没有删除这个功能。其功能一目了然。修改prop里面的型号值

  7. ro.product.model=XT2301-5
    ro.product.brand=motorola
    ro.product.manufacturer=motorola
    ro.product.device=msi

    💔💔💔customize.sh,这个脚本是在模块刷入时执行的用于各种需要刷入进行准备使用的指令,像是检测设备机型,Android版本,或是音量键选择之类的都要写在这里面,

  8. 其中customize.sh代码。例如

  9. ##########################################################################################
    #
    # 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
    

    这个应该是面具模块里面最简单的一个。其实目前有很多玩机工具里面有很多面具模块的初始模板.。

  10. 结合以上描述。应该可以初步了解面具模块的组成和其中各文件的作用。有兴趣的友友可以分解一些简单的模块对照了解其文件组成。原则上来说。面具模块可以完成很多第三方rec卡刷补丁的一些操作。而且操作也比较简单。更详细的可以参考:Developer Guides | Magisk各面具更新 更换等可以参考;玩机搞机----root面具的安装 更新 隐藏root 德尔塔面具等等综合解析_安卓机器的博客-CSDN博

相关文章:

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

root面具相信很多玩家都不陌生。早期玩友大都使用第三方卡刷补丁来对系统进行各种修复和添加功能。目前面具补丁代替了这些操作。今天的帖子了解下面具各种模块的组成和几种普遍的代码组成。 Magisk中运行的每个单独的shell脚本都将在内部的BusyBox的shell中执行。对于与第三方…...

注册中心/配置管理 —— SpringCloud Consul

Consul 概述 Consul 是一个可以提供服务发现&#xff0c;健康检查&#xff0c;多数据中心&#xff0c;key/Value 存储的分布式服务框架&#xff0c;用于实现分布式系统的发现与配置。Cousul 使用 Go 语言实现&#xff0c;因此天然具有可移植性&#xff0c;安装包仅包含一个可执…...

Next.js 13 你需要了解的 8 件事

目录 React 服务器组件 &#xff08;RSC&#xff09;服务器组件默认开启在 Next.js 中客户端组件也在服务器上呈现&#xff01;组成客户端和服务器组件编译Next.js 13 渲染模式桶文件有点坏了库集成&#xff1a;WIP 仍在进行中Route groups 路由组总结 在本文中&#xff0c;我们…...

计数排序(Count Sort)算法详解

1. 算法简介 计数排序&#xff08;Count Sort&#xff09;是一种非比较排序算法&#xff0c;其核心思想是统计数组中每个元素出现的次数&#xff0c;然后根据统计结果将元素按照顺序放回原数组中。计数排序的时间复杂度为O(nk)&#xff0c;其中n是数组的长度&#xff0c;k是数…...

Linux驱动开发(Day3)

驱动点灯&#xff1a;...

使用Vscode调试shell脚本

在vcode中安装bash dug插件 在vcode中添加launch.json配置&#xff0c;默认就好 参考&#xff1a;http://www.rply.cn/news/73966.html 推荐插件&#xff1a; shellman(支持shell,智能提示) shellcheck(shell语法检查) shell-format(shell格式化)...

OpenAI Function calling

开篇 原文出处 最近 OpenAI 在 6 月 13 号发布了新 feature&#xff0c;主要针对模型进行了优化&#xff0c;提供了 function calling 的功能&#xff0c;该 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创建一个简单的网络模型&#xff1f;Step1. 感知机&#xff0c;多层感知机&#xff08;MLP&#xff09;的基本结构Step2. 超平面 ω T ⋅ x b 0 \omega^{T}xb0 ωT⋅xb0 or ω T ⋅ x b \omega^{T}xb ωT⋅xb感知机函数 Step3. 利用感知机进行决策…...

测试工具coverage的高阶使用

在文章Python之单元测试使用的一点心得中&#xff0c;笔者介绍了自己在使用Python测试工具coverge的一点心得&#xff0c;包括&#xff1a; 使用coverage模块计算代码测试覆盖率使用coverage api计算代码测试覆盖率coverage配置文件的使用coverage badge的生成 本文在此基础上…...

安卓监听端口接收消息

文章目录 其他文章监听端口接收消息 建立新线程完整代码 其他文章 下面是我的另一篇文章&#xff0c;是在电脑上发送数据&#xff0c;配合本篇文章&#xff0c;可以实现电脑与手机的局域网通讯。直接复制粘贴就能行&#xff0c;非常滴好用。 点击连接 另外&#xff0c;如果你不…...

「Node」下载安装配置node.js

以下是Node.js的下载、安装和配置的全面教程&#xff1a; 下载 Node.js 打开 Node.js 官方网站&#xff1a;Previous Releases在主页上&#xff0c;您会看到两个版本可供选择&#xff1a;LTS&#xff08;长期支持版本&#xff09;和最新版&#xff08;Current&#xff09;。如…...

NOIP2014普及组,提高组 比例简化 飞扬的小鸟 答案

比例简化 说明 在社交媒体上&#xff0c;经常会看到针对某一个观点同意与否的民意调查以及结果。例如&#xff0c;对某一观点表示支持的有1498 人&#xff0c;反对的有 902人&#xff0c;那么赞同与反对的比例可以简单的记为1498:902。 不过&#xff0c;如果把调查结果就以这种…...

【Java】使用Apache POI识别PPT中的图片和文字,以及对应的大小、坐标、颜色、字体等

本文介绍如何使用Apache POI识别PPT中的图片和文字&#xff0c;获取图片的数据、大小、尺寸、坐标&#xff0c;以及获取文字的字体、大小、颜色、坐标。 官方文档&#xff1a;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语言详解)

题目&#xff1a;找到所有数组中消失的数 题目详情&#xff1a; 给你一个含 n 个整数的数组 nums &#xff0c;其中 nums[i] 在区间 [1,n] 内。请你找出所以在 [1,n] 范围内但没有出现在 nums 中的数字&#xff0c;并以数组的形式返回结果。 示例1&#xff1a; 输入&#xf…...

计算机毕设项目之基于django+mysql的疫情实时监控大屏系统(前后全分离)

系统阐述的是一款新冠肺炎疫情实时监控系统的设计与实现&#xff0c;对于Python、B/S结构、MySql进行了较为深入的学习与应用。主要针对系统的设计&#xff0c;描述&#xff0c;实现和分析与测试方面来表明开发的过程。开发中使用了 django框架和MySql数据库技术搭建系统的整体…...

Unity UI内存泄漏优化

项目一运行&#xff0c;占用的内存越来越多&#xff0c;不会释放&#xff0c;导致GC越来越频繁&#xff0c;越来越慢&#xff0c;这些都是为什么呢&#xff0c;今天从UI方面谈起。 首先让我们来聊聊什么是内存泄漏呢&#xff1f; 一般来讲内存泄漏就是指我们的应用向内存申请…...

学习笔记:Opencv实现图像特征提取算法SIFT

2023.8.19 为了在暑假内实现深度学习的进阶学习&#xff0c;特意学习一下传统算法&#xff0c;分享学习心得&#xff0c;记录学习日常 SIFT的百科&#xff1a; SIFT Scale Invariant Feature Transform, 尺度不变特征转换 全网最详细SIFT算法原理实现_ssift算法_Tc.小浩的博客…...

【golang】接口类型(interface)使用和原理

接口类型的类型字面量与结构体类型的看起来有些相似&#xff0c;它们都用花括号包裹一些核心信息。只不过&#xff0c;结构体类型包裹的是它的字段声明&#xff0c;而接口类型包裹的是它的方法定义。 接口类型声明中的这些方法所代表的就是该接口的方法集合。一个接口的方法集…...

Wan2.2-I2V-A14B极限测试:高分辨率与长视频生成的稳定性挑战

Wan2.2-I2V-A14B极限测试&#xff1a;高分辨率与长视频生成的稳定性挑战 1. 开场白&#xff1a;当AI视频生成遇上极限挑战 最近在测试Wan2.2-I2V-A14B模型时&#xff0c;我突发奇想&#xff1a;这个在常规场景下表现优秀的视频生成模型&#xff0c;如果被推到极限会怎样&…...

轻量级PDF渲染库PdfiumAndroid:Android开发者的高效集成指南

轻量级PDF渲染库PdfiumAndroid&#xff1a;Android开发者的高效集成指南 【免费下载链接】PdfiumAndroid 项目地址: https://gitcode.com/gh_mirrors/pd/PdfiumAndroid 核心价值&#xff1a;为什么选择PdfiumAndroid&#xff1f; &#x1f4cc; 解决PDF渲染痛点&#…...

别再被‘小样本’难倒了!用Python的PyMC3库实战层次贝叶斯模型

用PyMC3解锁小样本分析&#xff1a;层次贝叶斯建模实战指南 当你的数据集像便利店冰柜里的酸奶——每个品类只有零星几瓶时&#xff0c;传统统计方法往往会束手无策。想象你正分析20个城市的新开门店周销售额&#xff0c;每个城市却只有3-5条数据记录。这时&#xff0c;层次贝叶…...

从零开始学习C++ -- 基础知识

C入门基础1.C的第一个程序2.命名空间2.1 namespace的价值2.2 namespace的定义2.3命名空间使用3.C输入&输出4.缺省参数5.函数重载6.引用6.1引用的概念和定义6.2引用的特性6.3引用的使用6.4const引用6.5指针和引用的关系7.inline8.nullptr1.C的第一个程序 #include <iost…...

3步完成Logisim-evolution开源工具安装:跨平台数字电路设计效率指南

3步完成Logisim-evolution开源工具安装&#xff1a;跨平台数字电路设计效率指南 【免费下载链接】logisim-evolution Digital logic design tool and simulator 项目地址: https://gitcode.com/gh_mirrors/lo/logisim-evolution 引言&#xff1a;开启数字电路设计的高效…...

嵌入式开发实战:用状态机+事件驱动框架搞定串口通信(附完整代码)

嵌入式开发实战&#xff1a;状态机与事件驱动框架在串口通信中的高效应用 串口通信作为嵌入式系统中最基础也最常用的外设接口之一&#xff0c;其稳定性和效率直接影响着整个系统的性能表现。传统的轮询式串口处理方式不仅占用大量CPU资源&#xff0c;还难以应对复杂通信协议和…...

仅剩最后23套田间网关固件兼容包!Python农业物联网部署必备的8个设备驱动补丁(含Raspberry Pi 5专用版)

第一章&#xff1a;田间网关固件兼容包的农业物联网部署意义 在农业物联网&#xff08;Agri-IoT&#xff09;规模化落地过程中&#xff0c;田间网关作为边缘侧核心枢纽&#xff0c;承担着多源异构传感器数据汇聚、协议转换、本地决策与上云协同等关键职能。然而&#xff0c;我国…...

北京大学钟亦武老师招收博士生、实习生

点击下方卡片&#xff0c;关注“CVer”公众号AI/CV重磅干货&#xff0c;第一时间送达冲刺今年春招、秋招和实习&#xff01;大家快加入2026年AI校招群&#xff01;赠送今年最大的80元优惠券&#xff0c;大家扫码下方二维码即可加群学习&#xff01;北京大学智能学院介绍&#x…...

【2026最新】DirectX Repair修复工具,轻松解决 DirectX 报错、DLL 缺失与游戏闪退问题

游戏打不开、软件报错&#xff1f;别急着重装系统&#xff0c;可能是DirectX和DLL在作怪 “缺少d3dx9_43.dll”、“无法找到X3DAudio1_7.dll”、“应用程序无法启动。。。。。需要的是一个DirectX修复工具。 玩游戏或运行 3D 图形软件时&#xff0c;DirectX 报错是一类常见但又…...

Docker 部署 Vaultwarden:轻量级自托管密码管理解决方案

1. 为什么选择Vaultwarden作为自托管密码管理方案 在这个数字时代&#xff0c;我们每个人平均要管理超过100个在线账户的密码。传统的密码管理方式——用同一个简单密码注册所有网站&#xff0c;或者把密码写在记事本上——已经远远不能满足安全需求。这就是为什么像Bitwarden这…...