资讯动态

用WwR从MTK设备提取分区并制作自制线刷包全流程

发布时间:2026/9/17 16:57:03 来源:尧图企业网站定制
简介面向MTK芯片设备的刷机用户这份资源提供WwR 2.51英文版完整工具包及配套操作视频可用来备份、提取并制作线刷包解决缺少官方固件时的刷机与恢复难题。资源打包为7z格式共99个文件压缩包大小约83.57MB其中包含可执行主程序、运行所需的DLL动态库、配置文件、界面图片说明以及一段完整的操作录屏用户解压后即可按视频逐步操作。目前已有7451人学习下载说明该方案在MTK线刷场景中具有较高实用价值。视频演示了从备份当前系统、提取必要文件到最终生成可刷入线刷包的完整流程配合资源内的文本配置与说明文件可帮助用户自行构建救砖或恢复用的固件包。适合具备一定刷机经验、熟悉线刷原理和硬件操作的用户使用非零基础新手需谨慎尝试。1. 用 WwR_2.51 从 MTK 设备提取分区把救砖素材变成自己做的线刷包手上一台 MTK 芯片的手机或平板官方没给完整线刷包或者你只想把当前系统的应用、固件配置、基带单独抽出来留底最常见的做法就是用 WwR_这类老牌工具去读分区。WwR 全称 Write-Read 工具_2.51 是我用得较多、兼容性也稳的版本界面停在 DOS 风格但功能实在它能直接通过 BootROM 通道和 MTK 芯片建立连接把 eMMC/UFS 里的指定分区整块拷成文件再配合打包工具就能还原出一个可以刷入的线刷包。这套流程不只适用于手机像 ZXV10 B860AV2.1-U 这类用 MTK 芯片的盒子、部分平板只要芯片支持对应协议同样能备份提取。这篇直接按“原理—驱动—备份—制包—验证”的顺序把能复现的步骤写出来。2. WwR 提取线刷包之前理解分区布局与刷机协议2.1 线刷包的本质scatter 文件 分区镜像MTK 线刷包和你见过的 ZIP 刷机包不同它没有一个统一的“全量镜像”而是由一个 scatter 文件也叫分区表文件和一组分区镜像组成。scatter 文件里记录了每个分区在存储芯片上的起始地址、物理长度、文件名、是否可回写等信息。刷机工具拿到 scatter就按它逐块把镜像写入对应地址。所以备份提取和“做线刷包”本质是两件事一是把分区内容读出来二是把读取结果整理成工具能认的 scatter 和镜像文件。WwR 属于底层备份工具它读的是分区而不是文件系统。这意味着就算手机系统已经起不来、卡在开机 logo只要 CPU 还能被 bootrom 拉起就能通过 WwR 读分区。备份出来的镜像里是包括超级块、inode、页缓存数据在内的原始字节大小和分区表里定义的一致。实际操作中你不一定每个分区都备份只需要抓住 boot、system、vendor、recovery 这类关键区就能拼出一个可用线刷包。每块芯片的分区布局不同所以第一步就落在“确认 scatter 内容”上。# 典型的 MTK scatter 条目字段顺序分区名起始地址长度文件名 MMC_PART_NAME: boot START_ADDR: 0x2E000000 PART_LEN: 0x02000000 FILE_NAME: boot.img这里START_ADDR和PART_LEN都是十六进制换算成十进制就知道分区大小。FLASH 工具的 UI 会读出 scatter 并高亮匹配文件。如果镜像文件大小和PART_LEN不一致刷机工具一般会报“partition size mismatch”这点在自制线刷包时非常常见。2.2 MTK 芯片的 BootROM 连接方式MTK 芯片有独立的 BootROM上电时如果没有检测到有效引导代码就进入下载模式等待主机通过 USB 发送 Download Agent简称 DA和认证参数。WwR 这类工具的通信链路是主机侧发送 preloader 相关的握手指令芯片侧响应后工具把 DA 加载到 SRAM 或 DRAM 中DA 接管后续的读写命令。整条链路不依赖现有系统分区因此即使 system 损坏或无法开机备份依然能执行。对 WwR_2.51 来说确保两个条件成立才能连机成功一是主机端的 MTK USB 驱动已经正确安装二是设备的 USB 枚举进入了 Download / BootROM 模式。前者可以查设备管理器后者则通过按键组合或短接测试点进入。常见错误是设备被识别为“MediaTek PreLoader USB VCOM_VCOM”或“MediaTek DA USB VCOM”但 WwR 仍报连接失败这通常是因为换过 USB 口、驱动被系统签名策略拦截或 DA 版本不匹配 BootROM。2.3 驱动安装把设备拉到 MTK VCOM 状态Windows 下建议装载 MTK 的官方 USB VCOM 驱动也就是 MediaTek DA 驱动包。注意 Win10/11 需要禁用驱动签名强制或者使用已签名的版本。# 在管理员 CMD 窗口里查看 USB 设备是否被识别为 VCOM pnputil /enum-devices /class Ports | findstr -i MediaTek VCOM PreLoader DA设备应显示为某个 COM 口编号例如COM6。如果没有出现检查硬件是否进入 BootROM 模式。对绝大多数 MTK 手机关机后按住音量加再插线就能进入 BROM 模式对于已经黑屏且按键无效的情况需要拆机短接主板上的测试点常见位置在 eMMC/UFS 附近标注为“TP”或“GNDCLK”。这一步骤在不同品牌上差异很大没有统一路径操作视频里绝大多数时间也花在这个动作上。3. 用 WwR_2.51 备份提取 MTK 分区镜像的实际操作3.1 连接前准备与命令参数说明WwR_2.51 不带图形界面所有操作在命令行完成。文件结构里包含主程序、一个配置文件一般叫wwr.ini和若干 DA 文件。解压后先不要直接双击建议把整个目录放到纯英文路径下避免兼容层或批处理脚本中文路径解析出错。配置文件里需要指定 DA 路径、连接端口、波特率和分区导出选项。常见配置项的写法如下注意不要有多余空格[CONFIG] PORTauto BAUD921600 DA_PATH.\da\MTK_AllInOne_DA.bin BROM_MODE1 READ_BOOT1 READ_SYSTEM1 READ_VENDOR1 OUTPUT_DIR.\backupPORT填自动或具体 COM 口BAUD在 BootROM 下通常是 921600高版本 DA 也支持 460800/115200 兜底DA_PATH指向 DA 文件WwR 安装目录里的 DA 可能与部分新芯片不匹配这也是换芯片后要单独换 DA 的原因。READ_*决定是否默认把对应分区加入导出清单。3.2 最小命令一键导出全部分区第一次连接时建议先读整个分区表WwR 会把 scatter 解析结果打印到屏幕。命令行执行方式如下一般放在一个backup.bat批处理里WwR.exe --read-all --output .\backup --da .\da\MTK_AllInOne_DA.bin--read-all表示把当前 DA 支持的全部物理分区导出--output指定输出目录--da指定 DA 文件。执行后工具会进入等待设备状态此时插入已进入 BootROM 模式的设备能看到串行读取进度的百分比。导出文件以分区名命名例如boot.img、system.img、vendor.img、userdata.img。这里有个关键点WwR 读的“全部分区”不一定是线刷工具认识的“全部区域”它可能包含 preloader、nvram、persist 等特殊分区。这些分区在读取时如果物理长度与 DA 内置长度不一致会报错或生成超长文件。安全策略是只用它导出的 boot/system/vendor/recovery 等普通分区不要把 preloader 和 nvram 拿去刷另一台机器否则容易产生串号或基带失效。3.3 分区备份清单选哪些区做线刷包制作一个能正常开机的线刷包不需要全量备份所有区。下面是我常用且稳妥的分区组合表格里的分区功能决定了它是否可省略分区名内容是否必选说明preloader引导加载器必选丢了只能短接机房但备份后不要随便刷到不同型号boot内核ramdisk必选缺失会卡 logosystem系统主体必选打包主体不能缺vendor驱动与 HAL按需部分设备没有单独 vendorrecovery恢复模式可选刷机后要进恢复再补cache缓存可选可留空userdata用户数据通常不打包线刷包默认会清掉它nvram射频校准数据不建议载入包内错用会导致 IMEI 异常一个小技巧在读取前把README选项开启某些 DA 会额外生成一个.txt里面记录了每个分区实际读出的长度。这个记录是判断备份是否完整的重要依据比较它和 scatter 里的理论PART_LEN就能筛出读坏或跳区的情况。3.4 意外中断的处理方式读取过程中拔线或断电会导致镜像文件只有一半大小刷机时多半会在某个百分比卡死。WwR 支持断点续读但它是按分区颗粒做的需要重新运行命令并让它扫描已有文件工具只覆盖未完成的文件。如果在同一目录下重复导出配置文件里建议设置OVERWRITE0否则每次都会重读所有分区耗时又费电。中断后的日志文件值得留一留里面会写出错误地址方便判断是哪个扇区无法读取。遇到这类情况我先换 USB 线或直插主板口再试减少供电波动的影响。4. 把备份镜像制作成可刷入的 MTK 线刷包4.1 scatter 文件的生成规则有了分区映像之后缺一个配套的scatter.txt。WwR 虽然能读分区但不负责生成标准的刷机 scatter。常见的做法是手动按备份清单来写一个或者从同芯片同类设备里找一个原厂 scatter 再改字段。scatter 格式通常分两段头部描述通用信息尾部描述物理分区。最关键的是每条分区都要保证PART_LEN至少等于镜像文件的真实字节大小并且FILE_NAME指向实际文件名。若大小不一致SP Flash Tool 会报错或强制按 scatter 长度截断文件刷完系统可能无法开机。# 手动生成的 scatter适配 4GB eMMC 设备 Platform: MT6739 Storage: EMMC mmc_part_num: 17 Is_in_Below: false Is_Padded_File: true part_name: preloader file_name: preloader.bin start_addr: 0x0 part_len: 0x400000 part_name: boot file_name: boot.img start_addr: 0x2E000000 part_len: 0x02000000Is_Padded_File表示镜像文件不足分区长度时刷机工具自动补零这会在完成读包后让整体包体变大。如果希望线刷包尽量小可以把值改成false前提是备份时已经读出完整数据没有被截短。4.2 用脚本批量生成 scatter 并校验镜像完整性手工写 scatter 很容易出错尤其是分区多或地址不连续时。我会用一段 Python 脚本扫描同一目录下的镜像文件读取每个文件的字节数再生成 scatter 条目。脚本把起始地址累加不依赖手工查表适用于地址连续的设备。import os, struct def get_file_size(path): return os.path.getsize(path) def build_scatter(partitions, outputscatter.txt): addr 0 with open(output, w, encodingutf-8) as f: f.write(Platform: MTK\nStorage: EMMC\n\n) for name, filename, length in partitions: f.write(fpart_name: {name}\n) f.write(ffile_name: {filename}\n) f.write(fstart_addr: 0x{addr:X}\n) f.write(fpart_len: 0x{length:X}\n\n) addr length if __name__ __main__: pl [ (preloader, preloader.bin, 0x400000), (boot, boot.img, get_file_size(boot.img)), (system, system.img, get_file_size(system.img)), (vendor, vendor.img, get_file_size(vendor.img)), ] build_scatter(pl)脚本里的get_file_size读取真实字节数作为分区长度避免预留大量空洞。注意start_addr依次递增如果设备有固定地址要求这种累加法就不能直接用。对于大多数 MTK 手机分区地址虽然固定在 GPT 里但刷机工具只关心相对顺序顺序一致的胶合包也能正常工作。4.3 打包成线刷工具可识别的文件结构SP Flash Tool 加载的是一个目录而不是单个文件所以不需要额外压缩成 zip。整理目录的通常结构是custom_mtk_build/ ├── scatter.txt ├── preloader.bin ├── boot.img ├── system.img ├── vendor.img └── recovery.img把 WwR 备份得到的分区镜像拷入这个目录再放上刚写的 scatter.txt就是一套完整线刷包。SP Flash Tool 打开 scatter 后会自动识别到镜像文件。如果提示某一个镜像文件找不到多半是 scatter 文件名与实际文件名不一致注意不要带额外后缀或全角空格。制作完成后可以先只勾选 boot / system 两个分区做一次测试刷入减少风险。4.4 自制包的回写验证侧重点刷包验证要改变习惯的一点是不要一上来就全选所有分区回写那会连 preloader 一起覆盖。正确顺序是先在 Download Only 模式下单独写 boot 分区看设备能否开机并进入桌面确认 OK 后在 Firmware Upgrade 模式下刷新 system 和 vendor 分区。WwR 备份的镜像没有经过校验和重算在复制或传输过程中损坏是常有的事所以每次刷回前先比对镜像的哈希值。命令如下# Windows 下计算镜像 SHA256 并用文本比对 certutil -hashfile system.img SHA256 system.hash Findstr /I SHA256 system.hash如果两次导出的哈希和原始文件有差异不要尝试刷入宁可重新再备份一次。分区数据不一致轻则开机动画死循环重则引发 dm-verity 校验失败卡在 bootloader 界面。5. 提高自制线刷包成功率的验证与调试技巧调试自制包时最常遇到的失败集中在三个层面我按排查优先级列一下,方便你在操作视频之外再转动排查思路。SCATTER 文件里的长度与实际镜像不匹配。这类问题的现象是 SP Flash Tool 在进度条刚启动时报错或者在红色进度条进行到末尾时提示 “ERROR : STATUS_UNSUPPORT_OPERATION”。排查方法是把 scatter 里对应分区的part_len改成镜像文件的真实大小必要时把file_name指向的文件挪出来单独看字节数。缺零补齐的场景里真实大小小于分配的part_len多数没有问题反之则基本刷不进去。备份镜像只包含头部或中间空洞。WwR 读的底层分区在文件系统层并不总是连续存储但物理分区本身就是连续地址的。如果 DA 从错误地址开始读镜像虽然大小正确内容却在中间全是 0xFF。判断方法是把镜像挂载成 loop 或直接查字符串系统镜像里应存在/system/bin/或build.prop这类可读文本。以下命令可以快速检查# Linux 下用 strings 搜关键文件路径判断镜像是否可识别 strings -n 10 system.img | grep -m 1 build.prop如果搜不到或者只看到乱码基本可以确定读到的地址错误需要重新定位分区起始地址并再次备份。DA 版本与芯片 BootROM 不匹配。WwR_2.51 自带的 DA 对旧芯片支持很好但在较新的 MT6765、MT6785 甚至天玑系列平台上可能连接失败或中途断开。此时不要坚持用旧 DA去找和具体芯片配套的 MTK_ALLInOne_DA 文件替换到 wwr 目录里再试。这是唯一一个我确认能直接提升成功率的手段它能解决大多数未知握手错误。自制线刷包是否成功最后一步建议用校验工具重读一遍已写入的镜像adb shell dd if/dev/block/by-name/system bs4096 count1024 2/dev/null | md5sum把你备份时生成的 system 镜像前 4KB 做一次 md5转换成设备侧等价读取后比对。能对上前 4KB至少说明起始地址写入无误后续完整比对则留给 SP Flash Tool 的 read-back 功能去完成。把这个校验动作固定在自己的制包流程里以后遇到自己做的包刷出问题第一反应会从“怀疑包坏了”变成“查看具体分区对不对”排查时间会短很多。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价