菜单

系统工具

相关源文件

此页面介绍了Magisk提供的系统工具,这些工具是引导镜像操作、SELinux策略修改、属性管理和超级用户访问的基本实用程序。这些命令行工具构成了Magisk功能的基础,并在安装、引导过程和系统修改过程中被广泛使用。

有关Magisk模块系统的信息,请参阅模块系统

概述

Magisk包含几个强大的命令行实用程序,用于处理Android系统修改的各个方面

工具描述
magiskboot用于解包、重打包和修补的引导镜像操作实用程序
magiskinit在早期引导过程中替代init进程
magiskpolicySELinux策略修改工具
magisk具有各种子命令的主Magisk二进制文件
resetprop(magisk的)系统属性操作实用程序
su(magisk的)超级用户访问实用程序

这些工具协同工作,以实现Magisk的核心功能,同时保持对不同Android设备的稳定性和兼容性。

来源

原生二进制架构

Magisk系统工具是使用C/C++和Rust编写的原生二进制文件。大多数二进制文件通过libbase等共享库共享代码,并利用各种外部库来实现特定功能。

来源

MagiskBoot

magiskboot是一个多功能工具,用于处理引导镜像操作。它可以解包和重打包引导镜像,修改ramdisk cpio存档,修补DTB(设备树二进制文件),压缩/解压缩文件,以及签名/验证引导镜像。

主要功能

  • 引导镜像处理:解包、重打包和验证Android引导镜像
  • CPIO操作:使用cpio命令操作ramdisk内容
  • DTB操作:解析、打印和修补设备树二进制文件
  • 压缩:支持多种压缩格式(gzip、xz、lzma、bzip2、lz4等)
  • 修补:使用十六进制模式修补文件或应用常见的安全补丁
  • 签名:使用AVB(Android Verified Boot)签名对引导镜像进行签名
  • Payload提取:从OTA payload.bin文件中提取引导镜像

常用操作

引导镜像解包与重打包

magiskboot unpack <boot.img>
# Modifies extracted components
magiskboot repack <original_boot.img> [new_boot.img]

CPIO操作

magiskboot cpio <cpio.img> [commands...]

CPIO命令允许您

  • 从cpio存档中提取文件
  • 添加、删除或修改文件
  • 修补ramdisk以移除校验/加密
  • 测试cpio状态(stock、Magisk等)

DTB修补

magiskboot dtb <file> patch

此操作会从DTB fstab条目中移除校验和AVB验证,以允许系统修改。

实现

MagiskBoot使用Rust编写,并包含C++组件以兼容。它依赖于多个库来执行压缩(libz、libbz2、lz4、xz)和用于签名/验证的加密操作。

来源

MagiskInit

magiskinit是关键组件,它在早期引导阶段替换ramdisk中的init进程。它负责在Android的init进程开始之前设置Magisk环境。

主要职责

  • 替换Magisk修补引导镜像的ramdisk中的init
  • 在早期引导过程中挂载所需的区
  • 修补SELinux策略以启用Magisk功能
  • 将Magisk服务注入init.rc
  • 设置Magisk环境(路径、目录等)
  • 执行原始init以继续引导过程

引导过程中的作用

MagiskInit在Android引导过程的关键预init阶段运行

实现

MagiskInit是用C++和Rust组件实现的。它需要在Android大部分初始化之前在最小环境中使用,这使其成为Magisk中最关键和最敏感的部分之一。

来源

MagiskPolicy

magiskpolicy(也别名为supolicy,为兼容SuperSU)是用于修改SELinux策略的工具。它允许直接修补SELinux策略二进制文件或运行时策略。

主要功能

  • 从文件或当前运行的策略加载策略
  • 应用全面或有针对性的策略补丁
  • 将修改后的策略保存到文件或直接加载到内核
  • 应用内置的Magisk规则以获取root访问权限

常见用法

magiskpolicy --magisk               # Apply default Magisk rules
magiskpolicy --load FILE --save OUT # Load policy, modify it, save to file
magiskpolicy --live                 # Apply changes directly to running policy

策略语句

MagiskPolicy提供了一种强大的语法来定义SELinux策略语句

allow domain target_type class permission_set
allowxperm domain target_type class operation xperm_set
permissive type
typeattribute type attribute

实现

MagiskPolicy是用C++和Rust组件实现的。它通过libsepol库直接操作SELinux策略数据结构。

来源

Magisk工具

Magisk二进制文件充当Magisk功能的主要命令行界面。它既是独立的实用程序,又是suresetprop等其他小程序容器。

主要功能

  • 显示版本信息
  • 安装/卸载模块
  • 管理Magisk守护进程
  • 执行引导阶段的回调操作
  • 为高级操作提供内部API访问
  • 托管suresetprop等小程序

常见用法

magisk -v                # Show daemon version
magisk --install-module ZIP  # Install a module
magisk --remove-modules      # Remove all modules
magisk --daemon              # Start Magisk daemon

实现

magisk二进制文件使用C++和Rust组件实现,作为用户与Magisk核心功能交互的主要接口。

来源

Su Applet

Su Applet提供应用程序的超级用户访问权限。当应用程序请求root权限时会调用它,并处理身份验证和权限过程。

主要功能

  • 以提升的权限运行命令
  • 指定执行的用户和组
  • 更改SELinux上下文
  • 配置Shell环境
  • 支持挂载命名空间隔离

常见用法

su                    # Start root shell
su -c "command"       # Run command as root
su --mount-master     # Run in global mount namespace

实现

Su命令是Magisk二进制文件的Applet,并与Magisk守护进程交互以进行权限检查和会话设置。

来源

ResetProp Applet

The resetprop applet is an advanced system property manipulation utility that goes beyond the capabilities of standard Android property tools like setprop.

主要功能

  • Read and write any system property, including read-only properties (those starting with "ro.")
  • Delete properties (not possible with standard tools)
  • Load properties from files
  • Handle persistent properties

工作原理

ResetProp directly modifies the property area in memory (prop_area), bypassing the normal Android property service. This allows it to

  1. Modify read-only properties that can't be changed with setprop
  2. Delete properties, which is not supported by standard Android tools
  3. Operate on persistent properties stored in /data/property

常见用法

resetprop PROP VALUE      # Set a property
resetprop -n PROP VALUE   # Set without triggering events
resetprop -p PROP VALUE   # Set persistent property
resetprop --delete PROP   # Delete a property

实现

ResetProp is implemented by extracting and modifying the system property handling code from AOSP, with custom patches to enable direct property area access.

来源

System Tools in the Boot Process

Magisk's system tools play critical roles throughout the Android boot process, enabling system modifications while preserving stability and functionality.

来源

压缩支持

Magisk system tools (particularly magiskboot) include comprehensive support for various compression formats, enabling compatibility with different boot image formats across devices.

格式描述支持
gzipStandard compression used in most boot images原生
zopfliEnhanced gzip-compatible compression原生
xzHigh compression ratio format原生
lzmaLegacy high compression format原生
bzip2Alternative compression format原生
lz4Fast compression format原生
lz4_legacyLZ4 legacy format for older devices原生
lz4_lgLG-specific variant of LZ4原生

The compression engine in magiskboot provides both compression and decompression capabilities, automatically detecting formats during decompression.

来源

Command Line Interfaces

All Magisk system tools feature command-line interfaces with extensive options for different operations

MagiskBoot CLI

MagiskBoot provides commands for boot image manipulation, including

  • unpack/repack: Process boot images
  • cpio: Manipulate cpio archives
  • dtb: Modify device tree blobs
  • hexpatch: Binary patching
  • compress/decompress: File compression

MagiskPolicy CLI

MagiskPolicy offers options for SELinux policy modification

  • --load: Load policy from file
  • --save: Save modified policy
  • --live: Apply changes to running kernel
  • --magisk: Apply Magisk-specific rules

Magisk CLI

The main Magisk binary includes various commands

  • Version information: -v, -V, -c
  • Module management: --install-module, --remove-modules
  • Advanced operations: --daemon, --path, etc.

These command-line interfaces provide powerful tools for advanced users and developers to interact with and customize the Android system through Magisk.

来源