
MTK设备救砖实战完整指南用mtkclient从黑砖到开机【免费下载链接】mtkclientMTK reverse engineering and flash tool项目地址: https://gitcode.com/gh_mirrors/mt/mtkclient你可能遇到过这样的时刻手机卡在开机logo反复重启甚至彻底黑屏无反应。如果你手上是一台联发科MTK芯片的设备那还有一个好消息——它大概率还留着一扇后门没锁死。本文要介绍的mtkclient正是一款通过这条底层通道对设备进行抢救的开源逆向与刷写工具支持分区读写、bootloader 解锁、底层内存操作、RPMB 读写等一系列硬核能力。全文会按照一条从青铜到王者的成长路径展开先搞懂设备启动的本质再完成环境搭建与首次连接然后依次攻克全量备份、解锁刷机、底层调试三座山头。每个阶段都配有可直接执行的命令、预期输出和风险提示。第一节先把启动这件事想明白你才知道自己在修什么很多新手一上来就急着敲命令结果越修越糟。这里想让你先停下来两分钟用一个门禁系统来理解 MTK 设备的启动链路。想象一台手机是一栋安保严密的写字楼层级类比实际组件职责第一道门保安室BROM片内引导程序芯片上电后最先运行校验并放行下一级第二道门门禁闸机Preloader预加载器初始化内存把系统引导交给后续第三道门前台LK/U-Boot拉起 Android 内核大楼主体办公区系统与用户数据我们日常看到的一切关键点在于BROM 是第一道门它内置于芯片中焊死在硅片上无法被刷坏。所以无论上层崩得多彻底只要第一道门还能验卡设备就还有救。mtkclient 干的事就是想办法从这道门里挤进去。但是门禁系统也有三道安保配置需要留意它们决定了你能走到哪一层SBCSecure Boot Check校验 Preloader 签名的门禁SLASecure Locked Access限制对某些寄存器和内存区域的访问DAADownload Agent Authentication验证 Download Agent 合法性的机制。如果你在日志里看到SBC enabled或SLA enabled之类的字样先别慌——mtkclient 提供了一条名为payload的通道可以尝试对这三道门做统一处理后文会具体演示。这里要特别说明一个容易误判的点硬件熔断Fuse是唯一的不可逆锁。如果芯片的 eFuse 已经被厂商熔断那么 BROM 里的校验就无法被绕过任何工具都救不了。这也是为什么文末 FAQ 里会反复强调先确认未熔断。第二节三分钟搭建环境让电脑认出你的设备本节要解决的问题很简单让 mtkclient 跑起来并让电脑识别到处于 BROM 模式的手机。第一步安装依赖在 Ubuntu/Debian 系统上先安装运行所需的系统级依赖# 安装 Python、Git、libusb 与 FUSE挂载闪存文件系统时需要 sudo apt install python3 git libusb-1.0-0 python3-pip libfuse2接着获取项目源码并安装 Python 依赖# 从 GitCode 镜像仓库克隆 mtkclient git clone https://gitcode.com/gh_mirrors/mt/mtkclient cd mtkclient # 安装 Python 依赖 pip3 install -r requirements.txt # 安装项目本体注册 mtk 命令 pip3 install .第二步放行 USB 权限Linux普通用户默认没有直接访问 USB 设备的权限需要把当前用户加入相关组并安装项目自带的 udev 规则# 加入 USB 与串口权限组 sudo usermod -a -G plugdev $USER sudo usermod -a -G dialout $USER # 安装 mtkclient 自带的 udev 规则 sudo cp mtkclient/Setup/Linux/*.rules /etc/udev/rules.d sudo udevadm control -R sudo udevadm trigger⚠️ 完成用户组添加后必须重启系统否则权限不生效。Windows 用户则需要安装 MTK 串口驱动和 UsbDk 驱动可参照仓库 README 中 Windows 一节。第三步把设备塞进BROM 模式现在到了动手环节。先关机然后按住音量加或音量减 电源键不松手同时用 USB 线连接电脑。当终端里出现设备检测信息时再松开按键。python mtk.py printgpt预期输出终端显示芯片型号、连接状态随后列出 GPT 分区表preloader、boot、system、userdata 等。备选方案如果设备进不了 BROM可尝试python mtk.py crash通过让上层 Preloader 崩溃的方式摔进 BROM。❌ 常见错误提示No device found说明驱动没装好或没进入 BROM先回头检查第二步。第三节青铜段位——先备份再谈抢救本节要解决的问题为什么动手之前必须先做一次全量备份很简单因为刷机本质上是在覆盖数据。如果刷到一半断电或者镜像版本不匹配原本还能救的设备可能真的变砖。备份就是你的后悔药。场景一整盘拖走一条命令备份全部分区把手机所有分区按名字分别导出到一个目录是应急状态下性价比最高的操作# 把全部分区镜像保存到 out 目录 python mtk.py rl out预期输出逐个分区显示读取进度结束后 out 目录下出现 preloader.img、boot.img、system.img 等文件。风险提示全量备份耗时较长务必保证电脑和手机的电量充足中途不要拔线。备选方案只想备份关键分区可以用python mtk.py r boot,vbmeta boot.img,vbmeta.img单独导出。场景二救命的 Preloader必须单独留一份Preloader 是第二道门一旦损坏设备连刷机入口都没有。所以请单独把它导出来存档# 通过 boot1 区域读取 preloader 分区 python mtk.py r preloader preloader_backup.bin --parttype boot1预期输出文件 preloader_backup.bin 生成大小通常在几 MB 级别。为什么这样写preloader 可能存放在 eMMC 的 boot1 分区--parttype参数就是告诉工具去哪个区域找。场景三查看门牌号确认自己没走错楼备份之后花十秒钟看一眼分区表确认工具理解的存储布局与设备一致python mtk.py printgpt预期输出一张包含分区名、起始扇区、大小的表格。 重试提示如果分区表打印异常可尝试追加--gpt_file指定手工导出的 GPT 文件绕过设备端读取。第四节白银段位——解锁 bootloader 与一键 Root本节要解决的问题设备被厂商锁了 bootloader想刷第三方镜像却刷不进去怎么办mtkclient 的优势恰恰在此它能直接改写安全配置seccfg分区绕开厂商的解锁限制。整个解锁流程只有三步。解锁 bootloader# 1. 擦除可能与解锁相关的用户数据分区 python mtk.py e metadata,userdata,md_udc # 2. 解锁安全配置回锁时把 unlock 换成 lock python mtk.py da seccfg unlock # 3. 重启设备 python mtk.py reset预期输出unlock successful之类的字样随后设备重启开机时出现 bootloader 已解锁的黄色警告。⚠️ 警告擦除 userdata 意味着清空手机里的所有用户数据动手前务必先完成第三节的备份。风险提示解锁会降低设备安全性且部分机型会影响 DRM 等付费功能请确认你能接受后果。备选方案如果只想临时修改 vbmeta 的验证策略不动锁状态用python mtk.py da vbmeta 3参数 3 表示同时关闭 verity 与 verification。用 Magisk 完成 RootAndroid 9~12 实测可用解锁之后的经典玩法是刷 Root。完整链路是先导出 boot 与 vbmeta → 交给 Magisk 修补 → 刷回设备。# 1. 导出 boot 与 vbmeta 镜像 python mtk.py r boot,vbmeta boot.img,vbmeta.img # 2. 用 Magisk App 修补 boot.img得到 boot.patched在手机上操作 # 3. 关闭 vbmeta 验证并刷入修补后的 boot python mtk.py da vbmeta 3 python mtk.py w boot boot.patched # 4. 重启 python mtk.py reset预期输出写入 boot 后设备重启进入系统后打开 Magisk 能看到已安装状态。风险提示写错分区是新手最危险的错误务必反复核对分区名这里是boot与文件名。第五节黄金段位——深入底层用 payload 与 stage2 玩点硬核的本节要解决的问题遇到 SLA/DAA/SBC 拦截、想读 RPMB、想直接操作内存普通命令不够用怎么办打穿三道门payload 一键处理如果设备启用了 SLA、DAA 或 SBC直接读分区会报错。此时运行# 使用内置的 generic_patcher_payload 绕过安全校验 python mtk.py payload预期输出工具加载 patcher payload 并执行随后你便获得了进入 DADownload Agent阶段的能力。备选方案也支持自定义 payloadpython mtk.py payload --payload你的payload.bin。风险提示payload 属于漏洞利用性质的攻击载荷仅应在你自己拥有或已获授权的设备上使用。把闪存挂成文件夹fs 模式调试时想直接浏览设备文件系统mtkclient 借助 FUSE 把闪存挂载成普通目录mkdir -p /mnt/mtk python mtk.py fs /mnt/mtk预期输出/mnt/mtk下出现各分区对应的文件可像普通文件一样操作。备选方案想可写挂载追加--rw参数风险自担。直读内存peek / poke在已修补的 Preloader 或 DA 模式下可以直接读、写指定地址的内存# 读取 0x8000 地址起 0x100 字节 python mtk.py da peek 0x8000 0x100 # 向指定地址写入十六进制数据 python mtk.py da poke 0x8000 0xDEADBEEF预期输出peek 回显该地址的十六进制内容poke 无输出即成功。⚠️ 警告poke 是往芯片内存写数据写错地址可能导致设备当场死机请确认你在做什么。触碰可信区域RPMB 与 eFuse# 读取 RPMB 分区到 rpmb.bin受硬件保护的可信存储区 python mtk.py da rpmb r # 读取芯片 eFuse 状态确认是否已熔断 python mtk.py da efuse预期输出rpmb.bin 生成efuse 命令输出各熔丝状态若显示已熔断则后续漏洞类操作不可用。风险提示RPMB 区域写入后几乎无法恢复只建议读取不建议写入。stage2更高自由度的第二舞台stage2 是 mtkclient 的深度操作环境分 BROM 入口与 Preloader 入口两种# 通过 BROM 进入 stage2 python mtk.py stage # 通过 Preloader 进入 stage2 python mtk.py plstage进入后可用配套的stage2.py完成读内存、写内存、导密钥等操作# 在 stage2 模式下读取内存 python stage2.py memread 0x40000000 0x100 # 在 stage2 模式下导出 RPMB 密钥 python stage2.py keys --mode sej第六节为什么选择 mtkclient同场对比见真章本节要解决的问题市面上刷机工具那么多为什么专门为 MTK 设备推荐这一个能力项mtkclientSP Flash Tool厂商售后工具开源情况完全开源GPLv3闭源免费闭源不公开BROM 直接通信支持依赖官方 DA不支持分区读写/备份支持支持仅限指定分区绕过 SLA/DAA/SBC支持不支持不支持bootloader 解锁支持seccfg不支持受厂商限制命令行/脚本化丰富图形界面图形界面适用人群开发者、维修员普通用户售后上手难度中等低极低看这张表会发现mtkclient 的独门绝技集中在底层直连和安全绕过两列。如果你只是偶尔刷个官方固件SP Flash Tool 更省心但如果设备已经走到官方工具认不出这一步mtkclient 几乎是唯一的选择。第七节把重复操作写成脚本下次一键完成本节要解决的问题每次救砖都要敲一长串命令能不能存下来下次直接跑当然可以。项目提供了script子命令脚本文件按行写命令即可。仓库里现成的examples/run.example内容如下printgpt r boot boot.img reset执行方式# 按脚本文件逐条执行 python mtk.py script examples/run.example也可以把所有命令用分号连成一行python mtk.py multi printgpt;r boot boot.img;reset 进阶玩法把multi或script封装进你自己的 Shell 脚本里配合--preloader指定设备的 Preloader 文件就能实现插上手机、跑一个脚本、自动完成全流程备份。另外Tools目录下还有几个辅助小工具值得收藏Tools/get_preloader_values.py解析 Preloader 文件中的关键配置值基址、载荷地址等把结果重定向到文件即可留档Tools/patch_preloader.py对旧款设备的 Preloader 做安全检查修补用于绕过部分校验Tools/da_parser.py解析 Download Agent 固件结构。# 解析 Preloader 关键配置 python Tools/get_preloader_values.py preloader_backup.bin preloader_config.txt预期输出终端打印解析出的地址与配置项同时写入 preloader_config.txt。风险提示修改 Preloader 属于高危操作修补前务必保留原始文件的副本。第八节高频问题速查表Q1运行任何命令都提示 No device found怎么办先确认设备确实处于 BROM 模式很多机型是关机状态下按音量键再插线再检查驱动与 udev 规则。也可以用python mtk.py --debugmode开启详细日志排查信息会写入 log.txt。Q2刷完 boot 之后开机卡在黄色警告或 dm-verity 报错Android 11 上解锁后出现 dm-verity 提示是正常的按一下电源键继续即可设备会在几秒内进入系统。若一直卡死重新检查 vbmeta 是否已执行python mtk.py da vbmeta 3。Q3我的芯片是 MT6781 / MT6895 这种新平台能用吗新平台走 V6 协议且 BROM 已打补丁需要用--loader指定有效的 DA 文件并且仅支持未熔断的设备。对启用了 DAA、SLA 和远程认证的设备目前没有公开方案。Q4怎么判断我的设备有没有触发硬件熔断运行python mtk.py da efuse查看 eFuse 状态或观察连接日志里是否有 Fuse 相关的告警。已熔断的设备无法通过漏洞类操作进入 DA 阶段。Q5备份出来的镜像文件怎么验证完整可以对关键镜像做哈希校验并留存记录更稳妥的做法是备份后不关机立刻用python mtk.py r boot boot2.img再读一次与第一份比对 md5。若不一致说明连接不稳定请更换数据线或 USB 口。Q6系统上跑不起来 Python 依赖有什么兜底方案项目提供了图形界面入口python mtk_gui.py覆盖分区转储等基础操作此外仓库 README 中还有基于 Ubuntu 的 LiveDVD 方案开箱即用适合应急环境。Q7读写过程中断电会怎样这是刷机最大的事故源。轻则分区损坏重则设备彻底无法启动。务必保证电量充足并优先使用质量可靠的电源不要在笔记本电脑电池供电的临界状态下刷机。结语把备份焊死在肌肉记忆里回顾整条成长路径你会发现自己其实只做对了三件事先懂原理再留退路最后才动手。mtkclient 的能力边界很广——从分区读写、bootloader 解锁到 payload 打穿安全配置、stage2 直读内存几乎覆盖了 MTK 设备救砖的所有场景。但工具再强也抵不过一次没有备份的冲动。如果你正在修一台重要的设备请把这份指南的第一原则抄在便利贴上任何写入之前先完成读取与备份。祝你的每一台 MTK 设备都能顺利开机。【免费下载链接】mtkclientMTK reverse engineering and flash tool项目地址: https://gitcode.com/gh_mirrors/mt/mtkclient创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考