MTKClient联发科刷机实战手册:一份可以照着敲命令的手机变砖自救指南
【免费下载链接】mtkclientMTK reverse engineering and flash tool项目地址: https://gitcode.com/gh_mirrors/mt/mtkclient
深夜十二点,一台刷了一半固件的手机永远停在了开机动画。你手里只剩下一条USB线、一个MTK芯片的设备,和一堆看不懂的术语:BROM、preloader、GPT、vbmeta。别急着把它送修——只要芯片没烧掉,MTKClient这套开源的联发科刷机工具,大概率能让你自己把它从砖头堆里捞回来。这篇手册不讲空道理,按真实操作场景走:先帮你把环境搭起来,再带你完成一次"先备份、再解锁、后刷入"的完整自救流程,并附上一份直接可抄的避坑清单。
为什么我劝你先别开刷:三条铁律与两个底层模式
刷机圈最贵的学费,不是买错了工具,而是"没备份就动手"。开始之前,先把下面三条记死:
- 写入之前必有备份。
w、wf、wo都是不可逆操作,一条命令敲错,代价是整块分区数据。 - 解锁会清空数据。
da seccfg unlock本质上是一次出厂复位,联系人、照片、微信记录全部抹掉,提前导出。 - 遇到报错先加日志。任何命令后面跟
--debugmode,工具会把完整通信日志写进log.txt,这是你向社区求助时最有价值的东西。
MTK设备有且只有两种你需要关心的状态:
- BROM 模式(引导只读内存):芯片上电后最早执行的一段代码,是设备的"第一口气"。刷机、救砖主要在这个阶段干活。
- DA 模式(下载代理):由 BROM 引导加载的一段小程序,负责真正的大块数据读写。很多命令会先进入 BROM,再拉起 DA 完成传输。
记住一个判断口诀:读和救砖靠 BROM,写和刷靠 DA,解锁两个都要用。
第一步:花十分钟搭好 MTK 刷机环境(Ubuntu 实操)
MTKClient 在 Linux 上兼容性最好,本文按 Ubuntu/Debian 系讲解。整个过程就三步:装依赖、拿代码、配 USB 权限。
先装系统级依赖:
sudo apt install python3 git libusb-1.0-0 python3-pip libfuse2再拉取 MTKClient 源码并安装 Python 依赖(仓库地址固定为 https://gitcode.com/gh_mirrors/mt/mtkclient ):
git clone https://gitcode.com/gh_mirrors/mt/mtkclient cd mtkclient pip3 install -r requirements.txt pip3 install .最后配置 udev 规则,否则普通用户没有权限访问 USB 设备,工具会一直"找不到设备":
sudo usermod -a -G plugdev $USER sudo usermod -a -G dialout $USER sudo cp mtkclient/Setup/Linux/*.rules /etc/udev/rules.d sudo udevadm control -R sudo udevadm trigger⚠️ 加完用户组必须重启系统才生效,这是新手卡得最多的一步。
验证环境是否就绪,不需要接任何设备,直接打印帮助信息:
python mtk.py -h如果你能看到一长串子命令(printgpt、r、wf、da、payload……),说明安装成功。
第二步:把手机正确送进 BROM 模式(附流程图)
环境好了,但设备怎么让电脑"看见"?MTK 的进入方式跟高通完全不同——它靠按键时序,而不是命令行。
标准流程是:
- 长按电源键,完全关机(不是锁屏);
- 按住音量上 + 电源(部分机型是音量下 + 电源),不要松;
- 插上 USB 数据线连接电脑;
- 看到工具输出 "Device detected" 之类的提示后,松开按键。
上图就是 MTKClient 设备初始化的三个环节:连接设备 → 触发调试模式 → 通过测试点完成底层确认。救砖时如果按键方式进不去,最后一个手段是拆机找主板上的TP1 测试点,短接后插入 USB 强制进入 BROM——这是老维修师傅的常规操作,动手前务必断电。
进入 BROM 后,先确认工具真的认出了芯片:
python mtk.py printgpt这条命令会读取并打印设备的GPT 分区表。执行成功后你就能看到preloader、boot、vbmeta、userdata等一排分区的名字、起始扇区和大小。这是后面一切读写操作的"地图",看不懂地图就动刀,等于闭眼开车。
第三步:救砖前的第一道保险——整机备份
很多人误以为救砖是从"刷"开始的,其实是从"备份"开始的。当前设备只要能进 BROM,就还有救;而你的备份就是救不回来时的最后防线。
备份整块闪存(最省心,推荐第一步就做):
python mtk.py rf full_backup.bin这条命令把整块 eMMC/UFS 的内容按扇区顺序倒进一个文件。文件会很大(4GB、8GB 甚至更大),但它是完全按地址排布的原始镜像,未来任何误操作都能靠它恢复。
只备份关键分区(速度更快,日常够用):
python mtk.py r boot boot.img python mtk.py r vbmeta vbmeta.img python mtk.py r preloader preloader.bin --parttype boot1💡
r preloader带上--parttype boot1是因为 preloader 所在区域不走普通分区规则,少这个参数会读到错误数据。
偷懒方案——全部分区一键导出:
python mtk.py rl out工具会在out/目录下按分区名逐个生成镜像文件,之后想恢复哪个分区就刷哪个。这三条命令请反复练习到肌肉记忆,它们是救砖的基本功。
第四步:手机变砖自救——刷入分区与全量镜像
备份做完了,现在才是真正动手的时刻。变砖自救的通用逻辑是:哪个分区坏了,就把备份里对应的分区刷回去。
单分区刷回:
python mtk.py w boot boot.img整块镜像刷回(注意:wf只在 DA 模式下可用,工具会自动尝试拉起 DA):
python mtk.py wf full_backup.bin按地址刷写,用于处理 GPT 表被破坏这类"分区名都读不出来"的极端情况:
python mtk.py wo 0x128000 0x200000 data.bin三条写入命令的代价都是不可逆的,所以再次强调:
⚠️写入前对照
printgpt的输出,确认分区名拼写无误。w boot和w boota是两码事,前者可能直接覆盖正在运行的系统引导区。
刷完后的标准收尾动作是让设备干净地重启:
python mtk.py reset此时拔掉数据线,等它自己开机。如果设备在某个环节卡住,回到第三步的备份,换个思路重来——救砖的本质就是"备份 → 验证 → 重刷"的循环。
第五步:解锁 Bootloader 完整步骤(数据会清空)
如果目的是装自定义 ROM、Root 或者彻底去除厂商限制,解锁 Bootloader 是绕不开的一关。MTK 的解锁走的是seccfg安全配置通道。
第 1 步:擦除与解锁强相关的分区。metadata存放用户数据配置,userdata是用户数据区,md_udc是调制解调器更新计数区,不擦会导致解锁后各种诡异问题:
python mtk.py e metadata,userdata,md_udc第 2 步:执行解锁。这是整篇文章风险最高的一条命令,等同于把设备的大门焊死后再拆掉——之后系统会永久显示黄色警告提示(属正常现象):
python mtk.py da seccfg unlock想重新上锁,把unlock换成lock即可,但不要在上锁后立刻刷入未签名的系统,否则直接变砖。
第 3 步:重启验证。解锁完成后设备会自动清空数据并重启:
python mtk.py reset⚠️ Android 11 及以上版本,解锁后首次开机如果报 dm-verity 错误,先按一下电源键,看到黄色解锁警告后约 5 秒内应能正常进系统。这不是变砖,别慌着乱刷。
第六步:Root 的完整链路——修补 boot 再关闭验证
解锁只是开始,Root 才是目标。核心思路是:把官方 boot 分区导出 → 用 Magisk 修补 → 刷回去 → 关掉 vbmeta 校验,四步缺一不可。
第 1 步,一次性导出 boot 和 vbmeta 两个分区:
python mtk.py r boot,vbmeta boot.img,vbmeta.img第 2 步,把boot.img传到手机(adb push boot.img /sdcard/Download),用 Magisk App 选择该文件执行"修补",再把修补产物拉回电脑并命名为boot.patched。
第 3 步,关闭 vbmeta 的 verity 与 verification 双重校验,否则修补过的 boot 会因为签名校验失败被系统拒绝启动:
python mtk.py da vbmeta 3第 4 步,刷入修补后的 boot 并重启:
python mtk.py w boot boot.patched python mtk.py reset💡
da vbmeta参数含义:0恢复锁定,1只关 verity,2只关 verification,3两个全关。刷 Magisk 用3,只玩 VBMeta 实验用1或2。
第七步:深度调试——内存、efuse、RPMB 与 Stage2
刷机救砖之外,MTKClient 还能干不少"极客活"。这些命令平时用不上,但排查疑难问题时就是救命稻草。
直接读写内存地址,适用于分析启动流程卡点:
python mtk.py da peek 0x10000000 0x1000 python mtk.py da poke 0x10000000 AABBCCDD python mtk.py da peek 0x10000000 0x1000 -filename memory_dump.bin读取 eFuse 一次性熔丝信息,确认芯片的安全状态(如 SLA、DAA 是否被熔断,这决定了你能用哪些漏洞路径):
python mtk.py da efuseRPMB 安全存储:读取、生成密钥:
python mtk.py da rpmb r python mtk.py da generatekeysStage2 半裸机模式:适合绕过 DA 直接操作硬件,进入和退出分别是:
python mtk.py stage python stage2.py reboot在 Stage2 会话里可以读内存、写内存、导密钥:
python stage2.py memread 0x10000000 0x1000 python stage2.py memwrite 0x10000000 --data AABBCCDD python stage2.py keys --mode sej💡
keys --mode dxcc需要走plstage(preloader 阶段)而不是stage,两者入口不同,用错了会报错。
第八步:新版芯片的特殊情况(MT6781 及以后的坑)
如果设备用的是 MT6781、MT6789、MT6855、MT6886、MT6895、MT6983、MT8985 这些较新的芯片,请务必记住一句话:这些芯片的 BootROM 漏洞已被官方修补,走的是 V6 新协议。直接跑命令大概率会失败,必须显式指定一个可用的 DA 加载器:
python mtk.py --loader Loader/Preloader/你的机型_preloader.bin printgpt--loader可以跟几乎任何子命令组合使用(r、w、rf、printgpt等),遇到新芯片识别异常时优先尝试。另外这些设备目前只支持**未熔断(unfused)**的机型,且部分机型需要先执行adb reboot edl把 preloader 拉起来。
常见问题速查表(直接查,不用翻上文)
| 症状 | 可能原因 | 对症操作 |
|---|---|---|
| 工具一直找不到设备 | 未进 BROM / udev 权限未生效 | 重按按键时序;确认加入 plugdev、dialout 组后重启 |
报ModuleNotFoundError: colorama | Python 依赖没装全 | 重新执行pip3 install -r requirements.txt |
| 解锁后开机报 dm-verity | Android 11+ 正常现象 | 按电源键,等待黄色警告后自动进系统 |
| 新芯片命令直接失败 | BootROM 已修补,协议为 V6 | 追加--loader Loader/Preloader/机型preloader.bin |
| 分不清该走哪个模式 | 读取/救砖 vs 写入/解锁 | 读靠 BROM,写和da命令靠 DA,wf强制 DA |
| 想批量执行多条命令 | 逐个敲太慢 | python mtk.py multi "r boot boot.img;r vbmeta vbmeta.img"或写脚本python mtk.py script examples/run.example |
| 命令报错想给开发者看日志 | 日志信息不够 | 追加--debugmode,取log.txt全文 |
收尾:刷机这件事,一半靠工具,一半靠纪律
最后把整篇文章压缩成一张可以贴在显示器上的清单:
- ✅ 动手前:
printgpt看分区地图,rf做整机备份; - ✅ 解锁前:
e metadata,userdata,md_udc清理,确认数据已导出; - ✅ 刷入前:核对分区名,重要分区先
r导出原厂镜像; - ✅ 出错时:加
--debugmode留日志,宁可不刷,不要乱刷; - ✅ 完成后:
reset重启验证,数据线拔掉再等开机。
MTKClient 这个联发科刷机工具的能力边界比大多数人想象的宽——从救砖、备份、刷写,到解锁、Root、底层调试,一条 USB 线全包。工具是免费的,代价是需要你多一分耐心和备份意识。这篇文章里的每一条命令,希望你都用不上,但需要的时候,它们得在。
祝你的设备,永远不需要真正用上这份指南。
【免费下载链接】mtkclientMTK reverse engineering and flash tool项目地址: https://gitcode.com/gh_mirrors/mt/mtkclient
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考