An Xposed module that redirects Xiaomi Backup's DFS storage flow to self-hosted SMB, WebDAV, or custom HTTP servers, enabling local/private cloud backups.

Stars

75

7-day growth

No data

Forks

14

Open issues

1

License

Apache-2.0

Last updated

2026-07-21

AI repository intelligence
FR-AI / ANALYSIS

Why it is worth attention

It provides a practical, open-source way to bypass Xiaomi's proprietary cloud backup and store data on user-controlled storage, supporting multiple protocols and large file chunking.

Who it is for

  • Xiaomi phone users who want self-hosted backups
  • Xposed/LSPosed users seeking MIUI backup alternatives
  • Developers interested in hooking Xiaomi system apps
  • Users with NAS or private cloud storage

Use cases

  • Backup Xiaomi phone data (settings, apps) to a local NAS via SMB
  • Upload backups to a WebDAV-enabled cloud (e.g., Nextcloud)
  • Migrate backup data between Xiaomi devices without using Xiaomi Cloud
  • Integrate backup with custom HTTP scripts for advanced automation

Strengths

  • Supports SMB/CIFS, WebDAV, and custom HTTP scripts for storage flexibility
  • Implements chunked upload (configurable slice size) for large files
  • Open-source (Apache 2.0) with clear project structure and documentation
  • Automatic cleanup of old backups based on configurable retention limit

Considerations

  • Requires Xposed framework (root or LSPatch) and Android 9.0+
  • Only works on Xiaomi MIUI devices with the Xiaomi Backup app
  • Setup requires configuring a separate storage server and editing a config file

README quick start

XPoser_MiBackup - 小米云备份助手

通过 Xposed 模块虚拟小米智能存储设备,将小米备份 App 的 DFS 存储流程重定向到自建 SMB、WebDAV 或自定义 HTTP 服务,实现备份与恢复数据的云端存储

原理

小米备份 App 会通过 DFS 服务连接小米智能存储设备,并通过 AIDL 接口执行目录查询、文件上传、文件下载和进度回调;本模块注入 com.android.settingscom.miui.backup 进程,在设置页展示配置入口,并在备份 App 的 DFS/AIDL 边界将文件操作改由 SMB/WebDAV/自定义 HTTP 完成

小米备份 App
  -> 查询智能存储设备:返回虚拟设备
  -> 连接 DFS 服务:模拟在线和已连接
  -> DFS AIDL 上传:写入 SMB/WebDAV/自定义 HTTP
  -> DFS AIDL 下载:从 SMB/WebDAV/自定义 HTTP 读取
  -> 进度与完成回调:回传给小米备份原流程

主要 Hook 边界在 DFS AIDL、设置页入口和明确的备份 UI/服务事件,尽量避免直接依赖混淆业务函数

功能

  • 在系统设置中注入「云备份助手」配置入口
  • 拦截 DFS 连接,模拟小米智能存储设备在线状态
  • 支持 SMB/CIFS、WebDAV 和自定义 HTTP 脚本三种传输协议
  • 备份和恢复时将文件重定向到 SMB/WebDAV/自定义 HTTP 服务器
  • 顶部“备份”按钮点击进入小米备份的智能存储备份页,长按进入小米应用商店的备份升级页
  • 大文件在 Cloud 层统一切片上传,SMB、WebDAV 和自定义 HTTP 共用同一套切片逻辑
  • 自动清理超出数量限制的旧备份

图片预览

更多图片:imgs

环境要求

  • Android 9.0+(minSdk 28)
  • 已安装 Xposed 框架(LSPatch / LSPosed / EdXposed 等)
  • 支持的 Xposed 作用域:com.android.settingscom.miui.backup

配置

配置入口:系统设置 -> 云备份助手

配置文件:

/sdcard/MIUI/backup/config.ini

常用配置:

配置项说明
protocol存储协议,smbwebdavcustom
backup_path云端备份根目录,默认 MIUI/backup
upload_threads并发上传线程数,默认 3
chunk_size_mb上传切片大小,默认 64;设为 0 表示不切片
backup_max最大保留备份数,0 表示不自动清理
device_name设置页中展示的虚拟设备名称
device_describe设置页中展示的虚拟设备描述

SMB 配置:

配置项说明
smb_serverSMB 服务器地址
smb_portSMB 端口,默认 445
smb_shareSMB 共享名
smb_userSMB 用户名
smb_passSMB 密码

WebDAV 配置:

配置项说明
webdav_urlWebDAV 根地址
webdav_userWebDAV 用户名
webdav_passWebDAV 密码

自定义 HTTP 脚本配置:

配置项说明
custom_script_b64Base64 编码后的 JS 脚本,设置页会自动编码/解码

自定义 HTTP 只需要在设置页输入一段完整 JS 脚本,服务器地址、Token、Cookie 和认证方式都写在脚本里,不需要额外输入框。自定义脚本的写法、接口说明和示例见 自定义 HTTP 脚本文档

切片大小由 chunk_size_mb 控制;设为 0 时只上传原文件,不生成分片和 manifest。启用切片时 Cloud 层会统一生成 part 文件和 .mibak.json manifest,恢复时兼容未切片的旧备份文件

项目结构

app/src/main/java/com/zgcwkj/
  comm/
    ConfigHelp.java       配置文件读写
    CloudFileHelp.java    SMB/WebDAV/自定义 HTTP 统一入口
    SmbFileHelp.java      SMB 实现
    WebdavFileHelp.

Description

云备份助手(虚拟一个小米智能存储设备实现云备份功能)

Related repositories

Similar projects matched by category, topics, and programming language.

oversecured
oversecured GitHub avatar

Samsung_Vulnerabilities

Oversecured discloses a report of 176 vulnerabilities discovered in Samsung preinstalled apps between 2022 and 2025, with 140 detailed, all fixed in collaboration with Samsung.

Java
310
wxxsfxyzm
wxxsfxyzm GitHub avatar

MiuiBackGestureHook

An LSPosed module that hooks MIUI SystemUI back gestures using modern Xposed API 102 for research and customization.

Java
86
SangLuoCN
SangLuoCN GitHub avatar

OneStep4

OneStep4.0 is a multi-window desktop container for Android that requires root or system-level privileges, enabling a main window with several side windows for efficient app multitasking.

Java
84