APatch - 新一代Android内核Root解决方案

项目简介

APatch是一款创新的Android内核级Root解决方案,具有以下核心特点:

  • 基于内核补丁技术实现Root权限管理
  • 支持类似Magisk的模块系统(APM)
  • 提供内核模块功能(KPM),允许向内核注入任意代码
  • 兼容Android内核版本3.18-6.1
  • 仅支持ARM64架构设备

APatch依赖于KernelPatch核心引擎,其UI界面和模块系统部分代码源自KernelSU。

功能特性

核心功能

  • 内核级Root权限管理

    • 通过SuperKey机制提供比传统root更高权限的控制
    • 细粒度的UID权限管理
  • 模块系统(APM)

    • 兼容Magisk风格的模块
    • 支持模块的安装/卸载/启用/禁用
    • 提供模块动作脚本支持
  • 内核模块(KPM)

    • 支持内核函数inline-hook
    • 支持系统调用表hook
    • 允许在内核空间执行自定义代码
  • 安全特性

    • 基于密钥的权限验证机制
    • SELinux策略管理
    • 安全模式检测

特色功能

  • 动态UID同步

    • 自动同步系统包列表与root权限配置
    • 多用户环境支持
  • 灵活的挂载系统

    • 支持overlay挂载和bind挂载两种模式
    • 模块文件系统隔离
  • 完整的开发者工具

    • 提供resetprop、busybox等工具
    • 支持sepolicy规则检查

安装指南

前提条件

  • ARM64架构设备
  • Android内核版本3.18-6.1
  • 内核配置要求:
    • CONFIG_KALLSYMS=y
    • CONFIG_KALLSYMS_ALL=y (或CONFIG_KALLSYMS_ALL=n基础支持)

安装方法

  1. 下载APK

    • 从GitHub Releases下载最新APK
    • 或通过F-Droid安装
  2. 安装步骤

    adb install APatch-*.apk
    
  3. 初始化配置

    • 首次运行需要设置SuperKey
    • 按照应用指引完成内核补丁安装

安全警告

SuperKey拥有比root更高的权限,弱密钥或密钥泄露可能导致设备被未授权控制。请务必使用强密钥并妥善保管。

使用说明

基本命令

APatch提供丰富的命令行工具:

# 模块管理
apd module install <zip>    # 安装模块
apd module uninstall <id>   # 卸载模块
apd module enable <id>      # 启用模块
apd module disable <id>     # 禁用模块

# 事件触发
apd post-fs-data           # 触发post-fs-data事件
apd services               # 触发services事件
apd boot-completed         # 触发boot-completed事件

# SELinux策略工具
apd sepolicy check <rule>  # 检查sepolicy规则

模块开发

模块结构与Magisk兼容,主要包含:

  • module.prop - 模块元数据
  • system/ - 系统文件覆盖
  • post-fs-data.sh - 挂载后脚本
  • service.sh - 服务脚本

示例模块结构:

my_module/
├── module.prop
├── system/
│   └── etc/
│       └── my_config.conf
└── post-fs-data.sh

核心代码

内核通信接口

// supercall.h
static inline long sc_hello(const char *key) {
    if (!key || !key[0]) return -EINVAL;
    long ret = syscall(__NR_supercall, key, ver_and_cmd(key, SUPERCALL_HELLO));
    return ret;
}

static inline bool sc_ready(const char *key) {
    return sc_hello(key) == SUPERCALL_HELLO_MAGIC;
}

模块安装核心逻辑

// module.rs
pub fn install_module(module_file: &str) -> Result<()> {
    let realpath = std::fs::canonicalize(module_file)?;
    
    let content = if !should_enable_overlay()? {
        INSTALL_MODULE_SCRIPT_.to_string()
    } else {
        INSTALL_MODULE_SCRIPT.to_string()
    };

    Command::new(assets::BUSYBOX_PATH)
        .args(["sh", "-c", &content])
        .env("ASH_STANDALONE", "1")
        .env("PATH", format!("{}:{}", env_var("PATH")?, defs::BINARY_DIR))
        .env("APATCH", "true")
        .env("ZIPFILE", realpath)
        .status()?;
    
    Ok(())
}

UID同步机制

// RootServices.java
public ParcelableListSlice<PackageInfo> getPackages(int flags) {
    List<PackageInfo> list = getInstalledPackagesAll(flags);
    return new ParcelableListSlice<>(list);
}

private ArrayList<PackageInfo> getInstalledPackagesAll(int flags) {
    ArrayList<PackageInfo> packages = new ArrayList<>();
    for (Integer userId : getUserIds()) {
        packages.addAll(getInstalledPackagesAsUser(flags, userId));
    }
    return packages;
}

更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
公众号二维码
APatch - 新一代Android内核Root解决方案_第1张图片

你可能感兴趣的:(APatch - 新一代Android内核Root解决方案)