设备型号:MagicBox2
系统版本:YunOS 3.0.6
固件版本:3.0.6-RS-20160831.0951
内部存储:8G
内存:1 GiB DDR3(串口启动日志DRAM: 1 GiB可见)
芯片平台:晶晨 S802-H
内核版本:Linux3.10.33(待填,见 5.3 节确认方法)
写在前面:为什么又折腾这台老盒子
前阵子收拾屋子,翻出来一台天猫魔盒2,型号 TMB300A。掐指一算,这玩意儿在家吃灰得有十来年了。
当年智能电视盒子刚兴起时它还算个新鲜物件,后来电视自带系统越来越全,手机投屏也越来越方便,它就被塞进抽屉,慢慢成了电子古董。
本来想顺手处理掉,但拿在手里又觉得可惜:硬件还在,晶晨 S802-H 的芯片,8G 存储,YunOS 3.0.6,扔了怪浪费。
正好前阵子刚对中兴小兴看看 mini C320 摄像头做过一轮逆向固件提取,魔改还在规划中,手上那股“拆点啥、备份点啥、再刷点啥”的劲还没过去。那台摄像头的折腾记录还在整理,等落地后会单独成文,这里先留个位置:《中兴小兴看看 mini C320 逆向固件提取与魔改实录(待发布)》。
于是决定废物利用一下,看看这台老盒子还能不能再发点光热。
目标也不复杂:
- 先让它在一个不连外网的小局域网里被 ADB 摸到,方便调试;
- 再想办法把原厂固件完整备份出来,万一后面手痒刷机刷坏了,还能有个后悔药;
- 至于更远的魔改,等备份做完再说。
这篇记录就是整个折腾过程的流水账,包含踩过的坑、验证过的死路,以及最后跑通的串口备份方案。希望能给同样翻出老盒子的朋友省点时间。
更新日志
- 2026-10-18 开放原始固件, 详见 夸克网盘 (
整理中)
一、目标与约束
缘起唠完,落到具体目标上,这次折腾主要想干三件事:
- 让魔盒在一个不连外网的小局域网里被电脑 ADB 摸到,方便调试;
- 拿到 root 权限,把原厂固件按分区完整备份出来;
- 为后续可能的魔改/刷机留一条“刷坏了还能还原”的退路。
约束也很现实:
- ⚠️ ADB 只有普通用户权限,无法直接读取块设备;
- ⚠️ 设备固件资料稀少,刷错难救;
- ✅ 需要一套可复现的备份流程,并留下完整记录。
实际路线分两个阶段:
第一阶段(固件备份):TTL 串口取得 root → 分区级
dd备份。
这一阶段不需要网络,也不需要 ADB,串口拿到 root 后即可直接操作。第二阶段(魔改与测试):手机关数据开热点组建无外网局域网 → ADB 无线调试 → 安装、调试、管理测试应用。
这一阶段才需要网络和 ADB,用于后续魔改、测试 APK 等操作。
其中 ADB 无线调试经实测仅能用于常规调试,无法完成固件提取;固件提取只能依赖 TTL 串口方案。
二、需求拆解与技术路线
目标拆成三层:
- 调试通道:让魔盒与电脑处于同一局域网,ADB 可连,但不通外网。
- 权限获取:ADB 权限不足时,通过 TTL 串口登录系统控制台,取得 root shell。
- 固件备份:在 root 下用
dd按分区导出镜像,存到外挂 U 盘。
路线对比:
| 路线 | 优点 | 局限 |
|---|---|---|
| ADB 无线调试 | 方便、无需拆机 | ❌ 普通权限,无法 dd 块设备;首次连接需盒子端手工确认 |
| TTL 串口 | ✅ 可拿 root,能读底层分区,稳定高效 | 需拆机焊接排针 |
| PC 虚拟 WiFi | 不依赖手机 | 配置稍多,需确保不共享外网 |
| 手机热点(关数据) | ✅ 最简单,天然无外网 | 依赖手机 |
三、ADB 无线调试:首选手机热点
💡 本章定位:ADB 无线调试主要用于后续魔改与测试阶段(安装、调试、管理 APK 等)。如果只是做首次固件备份,TTL 串口拿到 root 后即可直接
dd,本章内容可以先跳过。
3.1 首选方案:手机关闭数据网络,开热点
这是本次实际采用的方式,原因很简单:
手机热点在关闭移动数据后,天然就是一个没有外网出口的局域网,魔盒连上后只能与手机/电脑互通,不会误连外网,配置成本最低。
操作步骤:
-
手机设置中关闭移动数据(或开启飞行模式后再手动开热点,视机型而定)。
-
打开“个人热点”,设置热点名称和密码。
-
魔盒连接该热点。
-
电脑也连接同一热点,确保与魔盒同网段。
-
在魔盒上开启开发者模式与 ADB 调试。
-
电脑执行:
adb tcpip 5555 adb connect 魔盒IP:5555首次
tcpip可能需要 USB 线连接一次,之后可无线连接。
⚠️ 注意:部分手机在关闭数据后热点会自动关闭,需在热点设置中允许“无互联网时保持热点”。若手机不支持,可改用备选方案。
⚠️ 另一个繁琐点:首次
adb connect时,盒子端通常会弹出“是否允许 USB 调试”的确认框,需要人工在电视上点“允许”。如果盒子端未及时确认,连接会失败。这一步无法完全自动化,对反复调试来说比较麻烦。
3.2 备选方案:PC 虚拟 WiFi(不共享外网)
如果不想依赖手机,可在 PC 上创建“可连接但不通外网”的热点。
核心原则:只建局域网,不做 Internet 共享。
-
Windows 自带移动热点:图形化开启,但默认可能共享外网,需在“网络连接”中确认热点虚拟适配器未被勾选“允许其他网络用户通过此计算机的 Internet 连接来连接”。
-
netsh承载网络:命令行创建,天然不共享外网,适合纯局域网调试:netsh wlan set hostednetwork mode=allow ssid=热点名 key=至少8位密码 netsh wlan start hostednetwork -
第三方软件:如 Connectify,可在 “Internet to Share” 中选择 “No Internet sharing”。
-
Python 方案:WiFiDirectLegacyAP 可建不共享外网的热点,但依赖 Python 2.7;也可用脚本封装
netsh,本质不变。
取舍:手机热点最简;PC 方案适合没有备用手机或需要长期固定调试环境的场景。
四、ADB 权限边界与实测结论
ADB 连接成功后,在 adb shell 中执行 id,返回的是普通用户(如 uid=2000(shell))。尝试 dd 读取 /dev/block/boot 等块设备会被拒绝。
❌ 实测验证结论
对于天猫魔盒2(TMB300A),ADB 路线只能用于常规调试、安装应用、查看日志,无法完成完整固件提取。
这不是“可能不行”,而是本机已经验证走不通。原因有两层:
- 权限不足:ADB shell 为普通用户,无 root,无法读取块设备;
- 首次连接繁琐:首次
adb connect需要盒子端手工确认接受连接,无法完全自动化。
✅ 结论
对于这台盒子,提取完整固件目前只能走 TTL 串口方案。
串口方案虽然需要拆机焊接排针,但拿到的是 root shell,能直接读底层分区,简单、稳定、高效,是这台设备上唯一可靠的固件提取路径。
五、硬件排查与 TTL 接入
5.1 拆机与串口点位
拆开魔盒,在主板上定位 TTL 焊点。本次使用的引脚对应关系:
| 引脚 | 定义 | 说明 |
|---|---|---|
| 1 | VCC | ⚠️ 用不到,安全第一,不接 |
| 2 | TX | 接 USB 转 TTL 的 RX |
| 3 | RX | 接 USB 转 TTL 的 TX |
| 4 | GND | 接 GND |

接线注意:
- TX/RX 交叉连接;
- VCC 不接;
- GND 必须共地。
5.2 串口登录与 root
使用 USB 转 TTL 模块连接电脑,串口终端工具使用 MobaXterm(也可用 PuTTY / minicom 等等价工具),打开对应 COM 口,上电后即可看到启动日志并登录控制台。
⚠️ MobaXterm 务必关闭流控:串口会话默认可能开启 RTS/CTS 硬件流控,而魔盒的 TTL 不响应握手信号,会出现“能收不能发”或命令敲下去没反应的情况。设置路径:Session → Serial → Advanced Serial settings → Flow control 选 None,并确认 RTS/CTS 不要勾选。
登录后执行:
id
✅ 确认返回 uid=0(root),具备块设备读取权限。
5.3 串口启动日志里能读到什么
TTL 串口不只是登录 shell 的通道,上电瞬间的启动日志本身就包含不少硬件与固件信息。典型的启动早期输出大致如下(节选,具体地址和版本以你的设备为准):
DRAM: 1 GiB
...
## ANDROID Format IMAGE
## Booting kernel from Legacy Image at 12000000 ...
Image Name: Linux-3.10.33
Image Type: ARM Linux Kernel Image (lzo compressed)
Data Size: 7813246 Bytes = 7.5 MiB
Load Address: 00208000
Entry Point: 00208000
Verifying Checksum ... OK
Loading Kernel Image ... OK
从这段日志可以直接读出几项信息:
- DRAM 容量:
DRAM: 1 GiB,与设备标称的 1G 内存一致; - 引导方式:
Booting kernel from Legacy Image说明 U-Boot 使用传统 uImage 格式引导内核,而不是 FIT/Android Boot Image; - 内核加载地址与入口地址:
Load Address/Entry Point,对后续分析 boot 分区、手工引导有参考价值; - 内核版本:
Image Name: Linux-3.10.xx这一行会直接给出内核版本号。
如果启动日志已经滚过去了,也可以在 root shell 里直接确认内核版本:
cat /proc/version
uname -a
这两条命令的输出与启动日志里的 Image Name 应当一致。
六、存储与分区探测
6.1 查看块设备
ls -al /dev/block/
输出中可见 boot、bootloader、cache、data、env、logo、logo1、mmcblk0、mmcblk0boot0、mmcblk0boot1、recovery、reserved、system 等具名块设备,以及 loop0~7、sda、sda1、zram0 等。
6.2 查看分区表
cat /proc/partitions
结果如下(节选):
major minor #blocks name
179 0 7634944 mmcblk0
179 1 4096 mmcblk0p1
179 2 65536 mmcblk0p2
179 3 655360 mmcblk0p3
179 4 8192 mmcblk0p4
179 5 16384 mmcblk0p5
179 6 16384 mmcblk0p6
179 7 32768 mmcblk0p7
179 8 32768 mmcblk0p8
179 9 819200 mmcblk0p9
179 10 5951488 mmcblk0p10
179 32 4096 mmcblk0boot1
179 16 4096 mmcblk0boot0
8 0 15138816 sda
8 1 15134784 sda1
sda 是我外部插入的U盘
6.3 分区表与精确大小
/proc/partitions 中的 #blocks 单位是 1 KiB。结合 blockdev --getsize64 的结果,整理如下。
用户数据区(mmcblk0)内的分区
/dev/block/ 具名 |
底层设备 | major:minor | #blocks |
字节数 | 约合 | 说明 |
|---|---|---|---|---|---|---|
bootloader |
mmcblk0p1 |
179:1 | 4,096 | 4,194,304 | 4 MB | 引导程序分区 |
reserved |
mmcblk0p2 |
179:2 | 65,536 | 67,108,864 | 64 MB | 厂商保留分区 |
cache |
mmcblk0p3 |
179:3 | 655,360 | 671,088,640 | 640 MB | 缓存分区 |
env |
mmcblk0p4 |
179:4 | 8,192 | 8,388,608 | 8 MB | U-Boot 环境变量 |
logo |
mmcblk0p5 |
179:5 | 16,384 | 16,777,216 | 16 MB | 开机画面 |
logo1 |
mmcblk0p6 |
179:6 | 16,384 | 16,777,216 | 16 MB | 备用开机画面 |
recovery |
mmcblk0p7 |
179:7 | 32,768 | 33,554,432 | 32 MB | Recovery 分区 |
boot |
mmcblk0p8 |
179:8 | 32,768 | 33,554,432 | 32 MB | 内核/ramdisk |
system |
mmcblk0p9 |
179:9 | 819,200 | 838,860,800 | 800 MB | 系统主体 |
data |
mmcblk0p10 |
179:10 | 5,951,488 | 6,094,323,712 | 约 5.67 GB | 用户数据 |
mmcblk0总块数为 7,634,944(约 7.28 GB)。p1~p10块数合计 7,602,176,与总块数相差 32,768 块(32 MB),通常是分区表、对齐空隙或保留区域,不影响按分区备份。
eMMC 硬件 Boot 分区(不属于 mmcblk0 分区表)
/dev/block/ 具名 |
major:minor | #blocks |
字节数 | 约合 | 说明 |
|---|---|---|---|---|---|
mmcblk0boot0 |
179:16 | 4,096 | 4,194,304 | 4 MB | eMMC Boot Area Partition 1,独立硬件分区 |
mmcblk0boot1 |
179:32 | 4,096 | 4,194,304 | 4 MB | eMMC Boot Area Partition 2,独立硬件分区 |
这两个设备不是
mmcblk0p11/p12,它们不在用户区分区表内,通常用于存放引导程序副本,默认多为只读。备份它们属于“底层保险”,但还原时不建议随意回写。
6.4 关于 mmcblk0boot0 / mmcblk0boot1
/proc/partitions 里同时出现 mmcblk0p1~p10 和 mmcblk0boot0/1,容易让人误以为后者是用户区里的第 11、12 个分区。实际上:
mmcblk0是 eMMC 的用户数据区,p1~p10是它内部由分区表管理的分区;mmcblk0boot0/mmcblk0boot1是 eMMC 芯片自带的两个 Boot Area Partition,属于硬件层面的独立区域,各 4 MB。其定义来自 JEDEC e•MMC 标准;- 它们不受
mmcblk0分区表管理,minor 编号也跳到 16、32,因此不会以mmcblk0p11、p12的形式出现。
从命名和平台习惯推测,这两个区域可能存放引导程序的副本或备份,但具体内容需要分析镜像才能确认。本文对它们做了 dd 备份,作为底层保险;但还原时风险较高,不建议在系统内直接回写。
💡 关键结论
/dev/block/下的具名设备是mmcblk0pX的软链接/别名。按具名备份等同于按编号备份,无需再单独备份mmcblk0p1~p10。
七、固件提取实操
7.0 备份前的准备
在开始 dd 备份之前,有几件事建议提前处理。尤其是备份 data 这类大分区时,dd 运行时间很长,中途盒子如果进入休眠或自动更新,都可能干扰备份:
- 关闭自动休眠:在盒子“设置”里找到休眠/屏保相关选项,设为“永不”或关闭自动休眠。
dd写入data分区可能需要十几分钟到半小时,中途休眠可能导致 I/O 中断或写入异常。 - 关闭应用自动更新:同样在设置里关闭应用商店的自动更新,避免备份期间后台下载、安装应用,占用 I/O 和存储空间。
- 考虑先恢复出厂设置再备份:如果盒子里还登录着你的账号、装了不少个人应用,建议先恢复出厂设置,清理掉账号信息和用户数据,再重新备份。这样得到的
data.img更干净,作为“纯净底包”更合适。恢复出厂后data分区会被重新初始化,你的账号凭据、Wi-Fi 密码、应用数据都会被清除。
💡 再次提醒:首次备份阶段用不到 ADB 和网络,TTL 串口拿到 root 后就可以直接
dd,不需要联网。ADB 无线调试是后续魔改、测试 APK 时才需要的管理手段,第三章的内容是为那个阶段准备的,首次备份可以先跳过。
7.1 外挂 U 盘
使用大于 8G 的 U 盘,插入魔盒后自动识别挂载为 sda1,路径:
/storage/external_storage/sda1/
无需手动 mount。先确认空间:
df -h /storage/external_storage/sda1/
7.2 文件系统选择:exFAT 优先,FAT32 分卷备选
data 分区约 5.67 GB,超过 FAT32 单文件 4 GB - 1 字节 的硬上限。
- 如果 U 盘是 FAT32:直接
dd得到的data.img会被截断; - 如果 U 盘是 exFAT:没有这个限制,可以直接完整备份。
策略一:将 U 盘格式化为 exFAT(推荐,一劳永逸)
exFAT 专为闪存设备设计,没有 4GB 单文件限制,同时兼容 Windows 和 macOS,适合存放镜像类大文件。
格式化工具:最方便的是 Windows 自带的“右键格式化”。
右键 U 盘 → 格式化 → 文件系统选 exFAT → 勾选“快速格式化” → 开始。
无需安装第三方软件。
分配单元大小:保持默认即可。Windows 对 32 GB 以上的 exFAT U 盘默认通常为 128 KB,已经适合大文件连续写入,不必手动调整。
若确需手动指定,可在管理员 CMD 中执行:
format E: /FS:exFAT /A:131072 /Q
其中 E: 换成 U 盘盘符,/A:131072 表示 128 KB 分配单元,/Q 为快速格式化。
备份命令:格式化后直接执行标准 dd:
dd if=/dev/block/data of=/storage/external_storage/sda1/data.img
✅ 完成后 ls -lh 应看到约 5.67 GB 的文件,说明完整。本次实测得到 6,094,323,712 字节,与 blockdev --getsize64 /dev/block/data 完全一致。
策略二:FAT32 U 盘分卷备份(不想格式化时的变通方案)
如果暂时不想格式化 U 盘,可以在备份时把 data 分区切成若干个小于 4GB 的文件,绕开单文件上限。
魔盒的 TTL 环境是 BusyBox,实测其中包含 split 命令,因此可直接用管道分卷,无需手算 dd 的 skip/count。
每卷 1GB:
dd if=/dev/block/data bs=1M | split -b 1G - /storage/external_storage/sda1/data.img.part_
生成 data.img.part_aa、data.img.part_ab…… 按字母顺序排列。
恢复时,按顺序合并并写回:
cat data.img.part_* | dd of=/dev/block/data bs=1M
完整性校验:备份前后可在魔盒上执行 md5sum /dev/block/data,在电脑上对合并后的完整镜像执行 md5sum,两边一致说明分卷顺序和内容正确。
💡 取舍
- exFAT 方案:更简单,后续校验、存储、恢复都是单个文件;
- FAT32 分卷方案:适合“暂时不想格式化 U 盘”的场景,但恢复流程更繁琐。
条件允许时,优先 exFAT。
7.3 按分区 dd 备份
dd 是 Linux 下常用的块设备复制工具。统一格式:
dd if=/dev/block/<分区名> of=/storage/external_storage/sda1/<分区名>.img
实际执行的分区:
dd if=/dev/block/boot of=/storage/external_storage/sda1/boot.img
dd if=/dev/block/bootloader of=/storage/external_storage/sda1/bootloader.img
dd if=/dev/block/env of=/storage/external_storage/sda1/env.img
dd if=/dev/block/logo of=/storage/external_storage/sda1/logo.img
dd if=/dev/block/logo1 of=/storage/external_storage/sda1/logo1.img
dd if=/dev/block/recovery of=/storage/external_storage/sda1/recovery.img
dd if=/dev/block/reserved of=/storage/external_storage/sda1/reserved.img
dd if=/dev/block/mmcblk0boot0 of=/storage/external_storage/sda1/mmcblk0boot0.img
dd if=/dev/block/mmcblk0boot1 of=/storage/external_storage/sda1/mmcblk0boot1.img
# 体积稍微大点, 需要多等一会
dd if=/dev/block/system of=/storage/external_storage/sda1/system.img
# 体积很大, 需要等很久 (记得关闭 自动休眠), 首次备份建议做,非首次没太大必要
dd if=/dev/block/data of=/storage/external_storage/sda1/data.img
# 体积也不小, 需要多等一会, 首次备份可以做,非首次没啥必要
dd if=/dev/block/cache of=/storage/external_storage/sda1/cache.img
⚠️ 如果 U 盘为 FAT32,
data分区按 7.2 的策略二分卷,不要直接执行上面的data.img单文件备份。💡
mmcblk0boot0/1是 eMMC 硬件 Boot 分区,默认可能只读。能读则备份,报错记录即可;不建议随意回写。
💡 想查看
dd进度? 再开一个串口会话(或另开终端),执行:kill -USR1 $(pidof dd)正在运行的
dd会立刻打印当前已复制的字节数,然后继续工作,不会中断备份。也可以每 10 秒自动触发:watch -n 10 "kill -USR1 $(pidof dd)"如果不想开新会话,也可反复
ls -lh /storage/external_storage/sda1/data.img,看文件大小是否在增长。
7.4 备份结果对比
U 盘中的文件与 blockdev 查询大小对比。除 data.img 外,其余镜像在 FAT32 和 exFAT 下均应一致:
| 镜像文件 | 实际大小(字节) | 与分区大小一致 |
|---|---|---|
boot.img |
33,554,432 | ✅ 是 |
bootloader.img |
4,194,304 | ✅ 是 |
cache.img |
671,088,640 | ✅ 是 |
data.img(FAT32 直接备份) |
4,294,967,295 | ❌ 受 FAT32 单文件 4GB 上限截断 |
data.img(exFAT 直接备份) |
6,094,323,712 | ✅ 是 |
env.img |
8,388,608 | ✅ 是 |
logo.img |
16,777,216 | ✅ 是 |
logo1.img |
16,777,216 | ✅ 是 |
mmcblk0boot0.img |
4,194,304 | ✅ 是 |
mmcblk0boot1.img |
4,194,304 | ✅ 是 |
recovery.img |
33,554,432 | ✅ 是 |
reserved.img |
67,108,864 | ✅ 是 |
system.img |
838,860,800 | ✅ 是 |
执行
ls -lh /storage/external_storage/sda1/查看确认
⚠️ 提醒:若
data.img显示为 4,294,967,295 字节,说明 U 盘是 FAT32 且发生了截断。此时应改用 exFAT 重新备份data,或按 7.2 的策略二分卷备份。系统类分区镜像不受影响,还原系统所需的
boot、system、recovery等镜像仍然完整。
7.5 未备份 mmcblk0 的取舍
mmcblk0 是整盘裸设备(约 7.28 GB),包含 GPT 分区表和各分区间的空隙。
未备份的原因:
- U 盘剩余空间可能不足;
- 分区级镜像已覆盖 bootloader 到 data 的全部内容,满足“刷机失败后按分区还原”的需求;
- 整盘镜像主要用于编程器级救砖(分区表被破坏时),普通还原不需要。
若追求终极保险,可在确认 U 盘空间充足(建议 exFAT)后补做:
dd if=/dev/block/mmcblk0 of=/storage/external_storage/sda1/mmcblk0_full.img
❌ 切勿在系统内直接
dd回写整盘,风险极高。
7.6 收尾
sync
确保数据落盘后再拔出 U 盘,并在电脑上多处留存备份。
八、后续魔改与还原思路
- ⚠️ 刷机风险:TMB300A 固件资料稀少,刷错难救;TTL 与 U-Boot 是最后逃生通道。
- ✅ 还原优先级:优先 recovery 卡刷或 U-Boot 的
mmc write;系统内dd写回底层分区风险最高,尤其是bootloader和mmcblk0boot0/1。 - 💡 数据分区:若
data.img被截断,还原前需评估是否必须保留用户数据;系统还原通常不依赖 data。exFAT 下完整备份的data.img可用于需要保留用户数据的场景。 - 🚀 可探索方向:第三方固件适配(注意 WiFi 等驱动差异)、系统精简、固化无外网调试环境。进入魔改和测试阶段后,ADB 无线调试就会派上用场,用于安装、调试和管理测试 APK。
- 💡 内核版本是魔改的重要前提:从串口日志和
cat /proc/version可以确认内核版本(本次为Linux 3.10.xx,待填)。后续如果要移植第三方固件、替换内核模块或调整启动参数,内核版本决定了驱动兼容性和可用的调试手段,建议在动手前先记录清楚。
九、固件分享与隐私安全
如果你打算把备份的固件放到 GitHub 或网盘上分享,有一件事必须提前想清楚:不是所有分区镜像都适合公开。 有些文件包含你的个人数据,有些包含设备唯一标识,放出去就是隐患。
❌ 绝对不要公开的分区
data.img
这是隐私风险最集中的地方。data 分区包含登录凭据、应用数据、Wi-Fi 密码、浏览记录,以及 YunOS/淘宝账号的登录态。即使恢复了出厂设置,旧数据的残片在闪存磨损均衡机制下也不一定被物理覆盖。分享 data.img 等于把你的个人数字生活打包送人。
bootloader.img、mmcblk0boot0.img、mmcblk0boot1.img
这些底层引导分区通常包含设备唯一的标识或校准数据。电视盒子虽然没有蜂窝 IMEI,但 Wi-Fi MAC 地址、设备序列号很可能就藏在这些分区里。公开它们,等于公开了这台设备的硬件“身份证”。
reserved.img
厂商保留分区。具体内容不分析镜像无法确定,但“保留”二字往往意味着可能存放校准数据、设备信息或厂商密钥。在确认内容之前,不建议公开。
mmcblk0_full.img(整盘镜像)
整盘镜像必然包含上述所有敏感分区,同样不适合公开。
✅ 相对可以公开的分区
system.img、boot.img、recovery.img、cache.img、logo.img / logo1.img、env.img 属于“公共平台”层面的内容,通常不包含个人账号或设备唯一密钥。其中 system.img 是固件的核心,也是别人最需要的。
⚠️ 例外:如果你曾经在
system里手动写入过账号密码或密钥,分享前需要先检查并清除。
🧹 分享前的快速自检
用 strings 或十六进制工具扫一下打算公开的镜像,搜一搜设备唯一标识和个人信息的关键词:
strings system.img | grep -i -E "mac|serial|password|账号|wifi"
如果出现设备唯一标识或个人信息,就把它剔除或做匿名化处理。
📦 发布清单速查
| 分区 | 是否公开 | 原因 |
|---|---|---|
system.img |
✅ 可以 | 固件核心,公共平台内容 |
boot.img |
✅ 可以 | 内核,不含个人数据 |
recovery.img |
✅ 可以 | 恢复模式,公共内容 |
cache.img |
✅ 可以(可选) | 通常不含敏感信息 |
logo.img / logo1.img |
✅ 可以 | 开机画面 |
env.img |
✅ 可以 | U-Boot 环境变量 |
data.img |
❌ 不要 | 个人账号、应用数据、Wi-Fi 密码 |
bootloader.img |
❌ 不要 | 可能含设备唯一标识 |
mmcblk0boot0/1.img |
❌ 不要 | 可能含设备唯一标识 |
reserved.img |
⚠️ 谨慎 | 内容不明,确认前不公开 |
mmcblk0_full.img |
❌ 不要 | 整盘镜像,必然包含敏感分区 |
💡 自己留作“后悔药”的
data.img、bootloader.img等,放在本地或私有网盘没问题;公开分享时只放system、boot、recovery这类公共层面的镜像即可。
十、经验总结与避坑清单
- ❌ ADB 路线对本机不可行:实测
adb shell为普通用户权限,无 root,无法dd块设备;且首次adb connect需盒子端手工确认,繁琐。提取完整固件只能走 TTL 串口方案,简单、稳定、高效。 - 💡 首次备份不需要 ADB 和网络:TTL 串口拿到 root 即可直接
dd;ADB 无线调试留给后续魔改和测试阶段。 - ✅ 手机“关数据开热点”是最简单的无外网局域网方案;PC 虚拟 WiFi 需明确不共享外网。
- ⚠️ MobaXterm 串口务必关闭流控(Flow control 选 None,RTS/CTS 不勾),否则可能出现能收不能发。
- ⚠️ 备份大分区前关闭自动休眠和应用自动更新:
dd运行时间长,中途休眠或后台更新可能干扰备份。 - 💡 先恢复出厂设置再备份:清理账号和用户数据,得到的
data.img更干净,适合作为纯净底包。 - ⚠️ 备份前先查分区大小,FAT32 U 盘单文件上限 4GB,
data分区会截断;优先 exFAT,或按分卷方案处理。 - ✅ 魔盒 TTL 环境包含
split,FAT32 分卷可直接用dd | split,无需手算skip/count。 - 💡
/dev/block/具名设备即mmcblk0pX别名,按具名备份即可,无需重复备份编号分区。 - 💡
mmcblk0boot0/1是 eMMC 硬件 Boot 分区,不属于mmcblk0p1~p10;可备份作底层保险,但不建议随意回写。 - ⚠️
bootloader、mmcblk0boot0/1备份可能受保护,能读则备份,报错记录即可。 - 🔒 分享固件时,
data、bootloader、mmcblk0boot0/1、reserved、整盘镜像不要公开;只分享system、boot、recovery等公共层面镜像。 - ⚠️ 还原比备份风险高,备份文件务必多处留存。
相关文章
- 《中兴小兴看看 mini C320 逆向固件提取与魔改实录(待发布)》
同一轮“翻出旧设备 → 提取固件 → 准备魔改”的折腾,摄像头篇。两篇可以对照看:一个是电视盒子,一个是网络摄像头,硬件不同,但备份思路和避坑逻辑有不少共通之处。
十一、附录
11.1 关键命令速查
# 查看内核版本
cat /proc/version
uname -a
# 查看块设备
ls -al /dev/block/
# 查看分区表
cat /proc/partitions
# 查看分区字节数
blockdev --getsize64 /dev/block/<分区名>
# 备份分区
dd if=/dev/block/<分区名> of=/storage/external_storage/sda1/<分区名>.img
# 查看 dd 进度(另开串口会话)
kill -USR1 $(pidof dd)
# 确认 U 盘空间
df -h /storage/external_storage/sda1/
# 落盘
sync
# 分享前检查镜像中是否含敏感信息
strings system.img | grep -i -E "mac|serial|password|账号|wifi"
11.2 分区对照表
见 6.3 节表格。
11.3 工具清单
- USB 转 TTL 模块 (CH340 等等)
- 串口终端:MobaXterm(也可用 PuTTY / minicom)
- 大于 8G U盘(建议 exFAT,避免 4GB 截断)
- ADB 工具:Android SDK Platform-Tools
- 电烙铁、排针(焊接 TTL)
- Windows 自带格式化工具(exFAT 快速格式化)