news 2026/8/17 18:59:39

MTKClient 联发科刷机一次讲透:从备份救砖到刷入自定义系统的实操路线

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MTKClient 联发科刷机一次讲透:从备份救砖到刷入自定义系统的实操路线

MTKClient 联发科刷机一次讲透:从备份救砖到刷入自定义系统的实操路线

【免费下载链接】mtkclientMTK reverse engineering and flash tool项目地址: https://gitcode.com/gh_mirrors/mt/mtkclient

凌晨一点,手机屏幕永远停在开机 logo 上——系统更新到一半断电,或者某次"清理"误删了关键文件,总之它就是不起来了。你刷过网上的救砖教程,下载了一堆号称"一键"的软件,结果不是要收费就是认不出设备。这种情况,联发科(MTK)芯片的手机其实有一条更直接的出路:利用芯片出厂时留下的底层引导通道(BootROM),绕过系统的限制直接读写存储芯片。而 MTKClient 正是把这条通道做成命令行工具的开源项目。这篇指南会用一次"从备份到救砖"的真实路线,带你搞懂它怎么用、哪些操作千万不能碰。

认识 MTKClient:它不是刷机包,是通往芯片的钥匙

人话版:这一节告诉你手上拿的到底是什么工具,以及它和 SP Flash Tool 这类官方工具的区别。

MTKClient 是一个运行在电脑上的命令行程序,它的工作方式有点像"芯片级的串口调试器":通过 USB 让联发科芯片的 BootROM 区域先跑起来一小段自带的代码,然后就能以底层权限读取和写入闪存。这意味着:

  • 不依赖系统是否还能开机。哪怕手机连 recovery 都进不去、屏幕完全黑着,只要 BootROM 没被厂商焊死(大多数老芯片都留有口子),就有机会救回来。
  • 不需要厂商授权账号。很多品牌会限制刷机工具必须绑定账号,MTKClient 走的是公开研究路线,绕开了这道墙。
  • 读写是全量级的。你能读到单个分区(比如 boot),也能把整块闪存一字不差地备份到电脑上。

和官方 SP Flash Tool 相比,MTKClient 的差异化在于:它能自动识别芯片型号并选择合适的漏洞路径(项目内部称之为 kamakiri、amonet、hashimoto 等),对老设备几乎是"插上就通"。你不需要去猜该选哪个 scatter 文件。

15 分钟快速上手:第一次连接设备的最短路线

人话版:这一节不讲解原理,先让你亲眼看到工具识别出手机,拿到第一次成功体验。

第 1 步:装环境(Linux 为例,约 5 分钟)

sudo apt install python3 git libusb-1.0-0 python3-pip libfuse2 git clone https://gitcode.com/gh_mirrors/mt/mtkclient cd mtkclient pip3 install -r requirements.txt pip3 install .

第一行装的是 Python 和 USB 通信库;中间两行把项目拉到本地并进入目录;后面两行安装项目自身的依赖。Windows 用户也可以跑,但需要额外装好 MTK 串口驱动和 UsbDk,这里不展开。

接着把当前用户加入 USB 设备权限组,并装上 udev 规则(否则工具可能"看不到"设备):

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

提醒:加入 dialout 组后需要注销或重启一次,权限才会生效。这一步最容易漏,漏了会表现为"设备明明插着,工具就是没反应"。

第 2 步:让设备进入 BROM 模式(约 1 分钟)

联发科设备通电后的第一段引导代码就是 BROM,它存在于芯片内部只读存储器中,系统坏不坏它都在。进入方法:

  1. 手机完全关机(拔掉所有线)。
  2. 按住音量上 + 电源(部分机型是音量下 + 电源)。
  3. 保持按住的同时插入 USB 数据线连接电脑。
  4. 看到工具打印出检测信息后松手。

下面是官方项目里的初始化流程图,三个步骤的顺序就是这么简单:连上设备 → 进入调试模式 → 通过测试点(TP1)完成硬件级验证。

第 3 步:跑第一条命令(约 1 分钟)

python mtk.py printgpt

这条命令会读取设备的 GPT 分区表,也就是"闪存的地图"。如果你在终端里看到一串分区名(boot、system、userdata、nvram……),恭喜,通道已经打通了,接下来所有操作都有了基础。

到这里,你已经完成了"从零到连上"的最短路径。剩下的所有高级玩法,都是在同一个连接通道上换不同的指令而已。

高频实战场景:备份、写回与解锁

人话版:这一节讲三个你迟早会用到的操作,每个都说明"什么时候用、命令怎么写、做完会怎样"。

场景一:动手前先整机备份(强烈建议第一个做)

任何时候打算对设备做修改,先备份。备份不需要理解分区含义,一条命令把整块闪存读出来:

python mtk.py rf full_backup.bin

这条命令把整个闪存按顺序读到一个文件里。之后哪怕你把系统折腾到完全无法开机,只要闪存没物理损坏,理论上都能通过"整块写回"恢复原样。

如果只想备份单个分区(比如只动 boot),用这个:

python mtk.py r boot boot.img

意思是"把名为 boot 的分区读到 boot.img 文件"。你也可以一次读多个分区,用逗号分隔:

python mtk.py r boot,vbmeta boot.img,vbmeta.img

备份完成后你会得到一个或多个.img文件,建议立刻换一个存储位置再复制一份。备份文件救命的时刻,往往是你最不想丢它们的时候。

场景二:把备份写回,或者刷入自定义系统

先做一件最稳的事:确认设备分区表,避免写错位置。

python mtk.py printgpt

然后写回单个分区:

python mtk.py w boot boot_new.img

注意参数顺序是"分区名 文件路径",和读命令一致。如果是刷第三方 ROM 的 boot 镜像,通常还需要先处理 vbmeta(见场景三)。

提醒:写入操作是"不可撤销"的。写之前务必确认文件来源可信、分区名正确,并且已经做过备份。写错 boot 顶多开不了机,写错 preloader 或 nvram 就可能要动用更底层的恢复手段了。

场景三:解锁引导加载器(Bootloader)

品牌机默认锁着 Bootloader,不解锁就没法刷第三方系统。解锁前先备份,然后执行:

python mtk.py e metadata,userdata,md_udc python mtk.py da seccfg unlock python mtk.py reset

第一条命令擦除用户数据相关分区——没错,解锁会清空手机数据,所以解锁前把照片和文件导出;第二条把安全配置标志改为 unlock;第三条让设备重启生效。

提醒:重新锁定只需把unlock换成lock。解锁后部分机型开机时会显示黄色警告页,这是正常现象,等几秒就会进入系统。

场景四(延伸):结合 Magisk 获取 Root

流程是"备份 boot → 用手机端 Magisk 修补 → 写回修补后的镜像",同时关闭 vbmeta 校验:

python mtk.py da vbmeta 3 python mtk.py w boot magisk_patched.img python mtk.py reset

da vbmeta 3的意思是"同时关闭 dm-verity 和校验",这样修改过的 boot 才能正常加载。

避坑指南:哪些操作容易让设备变砖

人话版:这一节用"常见失误 vs 正确做法"的对照,把风险讲清楚,但不吓唬你。

常见失误后果正确做法
没备份就写分区写坏后没有恢复数据任何写入前先rf全量备份
分不清 boot 和 preloader写错 preloader 可能更麻烦动 preloader 前多看printgpt输出
解锁后没擦 userdata系统起不来或一直回恢复模式解锁前先e metadata,userdata,md_udc
刷到一半拔线或电脑休眠写入中断,镜像损坏关闭自动休眠,用质量好的数据线
新芯片当老芯片处理工具报错"找不到握手"使用--loader指定 DA 文件

新芯片(如 MT6781、MT6789、MT6855 等)的 BootROM 已经打了补丁,必须显式提供 DA 文件:

python mtk.py --loader Loader/Preloader/your_device_preloader.bin r boot boot.img

--loader告诉工具"用这个文件里的下载代理",绕过对新协议 V6 的自动识别。

最后一条实用建议:任何命令失败、输出看不懂时,加--debugmode再看一次。详细日志能帮你把"玄学问题"变成可搜索的错误信息。

进阶探索:给好奇者的几个彩蛋

人话版:这一节介绍普通用户用不到、但对研究设备底层很有用的能力,点到为止。

  • 把整块闪存挂成文件夹python mtk.py fs /mnt/mtk会用 FUSE 把设备挂载成一个目录,像浏览普通磁盘一样翻看分区内容,排查"哪个分区占满了"很方便。
  • 直接读内存python mtk.py da peek 0x10000000 0x1000能读取芯片某段物理内存的内容,调试驱动或分析固件时会用到;对应的poke是写入内存。
  • 读一次性熔丝(efuse)python mtk.py da efuse输出芯片的熔丝状态,能看出厂商有没有开启 SLA/DAA 等额外校验,这决定了设备还能走哪条路。
  • 生成 RPMB 相关密钥python mtk.py da generatekeys生成并显示 RPMB 密钥,RPMB 是存储芯片里一块带认证保护的区域,感兴趣可以从这里入手研究。

这些操作都属于"研究向",对你理解芯片安全体系很有帮助,但日常刷机用不到,不必一开始就啃。

收尾与延伸

三个心法,记住就够了:

  1. 备份永远在写入之前——rf一下不费事,却能让你在最坏情况下全身而退。
  2. 先读后写,先查后动——printgpt是每次操作的起点,分区名写错一次可能就要多折腾几小时。
  3. 报错不可怕,可怕的是不看日志——--debugmode开起来,把信息贴到社区提问,问题解决得比闷头试快得多。

想继续深入,可以从这几处入手:

  • 命令行全部命令一览:mtk.py(开头就是命令表)
  • 官方使用说明:README.md、README.zh-CN.md
  • 脚本批量执行示例:examples/run.example
  • 各芯片引导代码研究:src/stage1/、src/stage2/

最后说一句:刷机最迷人的地方,不是让手机变"新",而是你第一次搞懂了它坏掉时到底发生了什么。MTKClient 给了你一把钥匙,但方向盘始终在你手里——稳一点,多备份,慢慢来。

【免费下载链接】mtkclientMTK reverse engineering and flash tool项目地址: https://gitcode.com/gh_mirrors/mt/mtkclient

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/17 18:54:40

C语言位操作

第一部分位操作符: 位与& 1.注意:&是位与,&&是逻辑与 2.真值表:000 010 111 100 位与操作特点:只有1和1位与的结果为1。 3.位与和逻辑与的区别: 位与时,两个操作…

作者头像 李华
网站建设 2026/8/17 18:53:01

游戏串流新手的周末实录:用 Sunshine 免费把 PC 游戏搬进客厅

游戏串流新手的周末实录:用 Sunshine 免费把 PC 游戏搬进客厅 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 周六下午,我窝在客厅沙发刷手机,余…

作者头像 李华