🇨🇳 中文 • 🇺🇸 English • 🇯🇵 日本語 • 🇰🇷 한국어 • 🇪🇸 Español • 🇷🇺 Русский
( •̀ ω •́ )✧ 截图正在路上,请稍候...
Screenshots coming soon, please wait...
スクリーンショットは準備中です...
|
✅ 稳定可用 |
✅ 基本完成 |
|
|
|
|
||||||||||||||||||||||||
|
|
✅ Windows 10/11 (x64)
✅ .NET 8.0 Runtime
✅ USB 驱动 (Qualcomm QDLoader / MTK VCOM / SPRD)
📥 从 Releases 页面下载最新版本
git clone https://github.com/xiriovo/edlormtk.git
cd edlormtk
dotnet build -c Release📱 高通设备 (点击展开)
- 设备进入 EDL 9008 模式
- 关机状态按住音量键插入 USB
- 或使用 ADB:
adb reboot edl
- 选择或自动匹配 Programmer Loader
- 选择要刷写的分区和镜像
- 点击 刷写
📱 联发科设备 (点击展开)
- 设备关机
- 选择 Scatter 文件
- 按住音量下键插入 USB
- 等待设备连接后开始刷写
📱 展讯设备 (点击展开)
- 选择 PAC 固件
- 设备关机,按住音量下键插入 USB
- 等待进入 Download 模式
- 点击 刷写
本工具仅供学习和研究使用,刷机有风险,操作需谨慎!
作者不对因使用本工具造成的任何损失负责。
|
|
||||||||||||||||||||||||
|
|
✅ Windows 10/11 (x64)
✅ .NET 8.0 Runtime
✅ USB Drivers (Qualcomm QDLoader / MTK VCOM / SPRD)
📥 Download latest from Releases
git clone https://github.com/xiriovo/edlormtk.git
cd edlormtk
dotnet build -c Release📱 Qualcomm Device (Click to expand)
- Enter EDL 9008 Mode
- Hold volume button while inserting USB (device off)
- Or use ADB:
adb reboot edl
- Select or auto-match Programmer Loader
- Select partitions and images to flash
- Click Flash
📱 MediaTek Device (Click to expand)
- Power off device
- Select Scatter file
- Hold Volume Down while inserting USB
- Wait for device connection and start flashing
📱 Unisoc Device (Click to expand)
- Select PAC firmware
- Power off device, hold Volume Down while inserting USB
- Wait for Download Mode
- Click Flash
This tool is for educational and research purposes only!
Flashing carries risks. The author is not responsible for any damage.
|
|
||||||||||||||||||||||||
|
|
✅ Windows 10/11 (x64)
✅ .NET 8.0 Runtime
✅ USBドライバー (Qualcomm QDLoader / MTK VCOM / SPRD)
📥 Releases ページから最新版をダウンロード
git clone https://github.com/xiriovo/edlormtk.git
cd edlormtk
dotnet build -c Release📱 Qualcommデバイス (クリックで展開)
- EDL 9008モードに入る
- 電源オフ状態で音量ボタンを押しながらUSB接続
- またはADB使用:
adb reboot edl
- Programmer Loaderを選択または自動マッチング
- フラッシュするパーティションとイメージを選択
- フラッシュをクリック
📱 MediaTekデバイス (クリックで展開)
- デバイスの電源を切る
- Scatterファイルを選択
- 音量下を押しながらUSB接続
- デバイス接続を待ってフラッシュ開始
📱 Unisocデバイス (クリックで展開)
- PACファームウェアを選択
- デバイスの電源を切る、音量下を押しながらUSB接続
- ダウンロードモードを待つ
- フラッシュをクリック
このツールは教育・研究目的のみです!
フラッシュにはリスクがあります。作者はいかなる損害にも責任を負いません。
|
|
||||||||||||||||||||||||
|
|
✅ Windows 10/11 (x64)
✅ .NET 8.0 Runtime
✅ USB 드라이버 (Qualcomm QDLoader / MTK VCOM / SPRD)
📥 Releases 페이지에서 최신 버전 다운로드
git clone https://github.com/xiriovo/edlormtk.git
cd edlormtk
dotnet build -c Release📱 Qualcomm 장치 (클릭하여 확장)
- EDL 9008 모드로 진입
- 전원 끈 상태에서 볼륨 버튼을 누르고 USB 연결
- 또는 ADB 사용:
adb reboot edl
- Programmer Loader 선택 또는 자동 매칭
- 플래싱할 파티션과 이미지 선택
- 플래시 클릭
📱 MediaTek 장치 (클릭하여 확장)
- 장치 전원 끄기
- Scatter 파일 선택
- 볼륨 다운을 누르고 USB 연결
- 장치 연결 대기 후 플래싱 시작
📱 Unisoc 장치 (클릭하여 확장)
- PAC 펌웨어 선택
- 장치 전원 끄기, 볼륨 다운을 누르고 USB 연결
- 다운로드 모드 대기
- 플래시 클릭
이 도구는 교육 및 연구 목적으로만 사용됩니다!
플래싱에는 위험이 따릅니다. 저자는 어떠한 손해에도 책임지지 않습니다.
|
|
||||||||||||||||||||||||
|
|
✅ Windows 10/11 (x64)
✅ .NET 8.0 Runtime
✅ Controladores USB (Qualcomm QDLoader / MTK VCOM / SPRD)
📥 Descarga la última versión desde Releases
git clone https://github.com/xiriovo/edlormtk.git
cd edlormtk
dotnet build -c Release📱 Dispositivo Qualcomm (Clic para expandir)
- Entrar en modo EDL 9008
- Con el dispositivo apagado, mantener botón de volumen e insertar USB
- O usar ADB:
adb reboot edl
- Seleccionar o auto-coincidir Programmer Loader
- Seleccionar particiones e imágenes a flashear
- Clic en Flashear
📱 Dispositivo MediaTek (Clic para expandir)
- Apagar el dispositivo
- Seleccionar archivo Scatter
- Mantener Volumen Abajo e insertar USB
- Esperar conexión del dispositivo e iniciar flasheo
📱 Dispositivo Unisoc (Clic para expandir)
- Seleccionar firmware PAC
- Apagar dispositivo, mantener Volumen Abajo e insertar USB
- Esperar modo descarga
- Clic en Flashear
¡Esta herramienta es solo para fines educativos e investigación!
El flasheo conlleva riesgos. El autor no es responsable de ningún daño.
|
|
||||||||||||||||||||||||
|
|
✅ Windows 10/11 (x64)
✅ .NET 8.0 Runtime
✅ USB драйверы (Qualcomm QDLoader / MTK VCOM / SPRD)
📥 Скачайте последнюю версию с Releases
git clone https://github.com/xiriovo/edlormtk.git
cd edlormtk
dotnet build -c Release📱 Устройство Qualcomm (Нажмите для раскрытия)
- Войти в режим EDL 9008
- При выключенном устройстве удерживать кнопку громкости и подключить USB
- Или использовать ADB:
adb reboot edl
- Выбрать или автоподобрать Programmer Loader
- Выбрать разделы и образы для прошивки
- Нажать Прошить
📱 Устройство MediaTek (Нажмите для раскрытия)
- Выключить устройство
- Выбрать Scatter файл
- Удерживать Громкость Вниз и подключить USB
- Дождаться подключения устройства и начать прошивку
📱 Устройство Unisoc (Нажмите для раскрытия)
- Выбрать прошивку PAC
- Выключить устройство, удерживать Громкость Вниз и подключить USB
- Дождаться режима загрузки
- Нажать Прошить
Этот инструмент предназначен только для образовательных целей!
Прошивка несёт риски. Автор не несёт ответственности за любой ущерб.
MultiFlash-TOOL/
├── 📂 Modules/
│ ├── 📂 Common/ # 🔧 Common / 公共组件 / 共通
│ │ ├── DeviceWatcher # USB device monitor / 设备监听
│ │ └── SerialPortManager# Serial port management / 串口管理
│ ├── 📂 Qualcomm/ # 📱 Qualcomm EDL / 高通 ✅ STABLE
│ │ ├── SaharaProtocol # Sahara protocol / 握手协议
│ │ ├── FirehoseClient # Firehose XML protocol / XML协议
│ │ ├── GptParser # GPT partition parser / 分区表解析
│ │ ├── Authentication/ # VIP/Xiaomi auth / 认证策略
│ │ ├── Strategies/ # Device strategies / 设备策略
│ │ └── Services/ # Cloud loader, Super flash / 云服务
│ ├── 📂 MTK/ # 📱 MediaTek / 联发科 ✅ STABLE
│ │ ├── Protocol/ # Preloader, XFlash, Legacy DA
│ │ ├── Authentication/ # SLA/DAA bypass / 认证绕过
│ │ ├── Hardware/ # SEJ, DXCC, GCPU, CQDMA engines
│ │ ├── Security/ # SecCfg bootloader unlock
│ │ ├── Storage/ # Scatter parser / 配置解析
│ │ └── Exploit/ # Kamakiri exploit
│ ├── 📂 Unisoc/ # 📱 Unisoc / 展讯 ⚠️ WIP
│ │ ├── Protocol/ # SPRD download protocol
│ │ ├── Diag/ # Diagnostic protocol / IMEI
│ │ ├── Firmware/ # PAC extractor / 固件解析
│ │ └── Exploit/ # RSA signature bypass
│ └── 📂 AdbFastboot/ # 📲 ADB/Fastboot ⚠️ WIP
│ ├── AdbProtocol # ADB over USB/TCP
│ └── FastbootProtocol # Fastboot commands
├── 📂 Dialogs/ # 💬 Dialogs / 对话框
├── 📂 Utils/ # 🛠️ Log formatter, helpers
├── 📂 Localization/ # 🌐 Multi-language support
├── 📄 MainWindow.xaml # 🖼️ Main UI (WPF)
└── 📄 App.xaml # 🚀 Application entry
🏗️ Architecture Overview / 架构概述 (Click to expand)
┌─────────────────────────────────────────────────────────────────┐
│ WPF UI Layer │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────┐ │
│ │ Qualcomm │ │ MTK │ │ Unisoc │ │ ADB │ │
│ │ Panel │ │ Panel │ │ Panel │ │ Panel │ │
│ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ └────┬────┘ │
└─────────┼────────────────┼────────────────┼──────────────┼──────┘
│ │ │ │
┌─────────▼────────────────▼────────────────▼──────────────▼──────┐
│ UI Service Layer │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────┐ │
│ │ Qualcomm │ │ MTK │ │ Unisoc │ │ ADB │ │
│ │ UIService │ │ UIService │ │ UIService │ │UIService│ │
│ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ └────┬────┘ │
└─────────┼────────────────┼────────────────┼──────────────┼──────┘
│ │ │ │
┌─────────▼────────────────▼────────────────▼──────────────▼──────┐
│ Protocol Layer │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────┐ │
│ │ Sahara │ │ Preloader │ │ SPRD │ │Fastboot │ │
│ │ Firehose │ │XFlash/Legacy│ │ Diag │ │ ADB │ │
│ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ └────┬────┘ │
└─────────┼────────────────┼────────────────┼──────────────┼──────┘
│ │ │ │
┌─────────▼────────────────▼────────────────▼──────────────▼──────┐
│ Hardware Layer │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ SerialPortManager | DeviceWatcher | USB HID/Serial │ │
│ └─────────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────┘
📱 Qualcomm EDL Protocol / 高通 EDL 协议 (Click to expand)
Device (EDL 9008) ◄──────────► Host (MultiFlash TOOL)
│ │
│ ◄─── Sahara Hello ──────── │ Step 1: Handshake
│ ────► Sahara Hello Resp ──► │
│ │
│ ◄─── Read Data ────────── │ Step 2: Transfer Programmer
│ ────► Data Packet ────────► │
│ ────► End of Image ───────► │
│ │
│ ◄─── Sahara Done ───────── │ Step 3: Execute Programmer
│ ────► Done Response ──────► │
│ │
│ ════ Firehose XML ════════ │ Step 4: Firehose Operations
│ <configure>, <read>, <program>, <erase>
│ │
| Command | Value | Description |
|---|---|---|
SAHARA_HELLO |
0x01 | Initial handshake from device |
SAHARA_HELLO_RESP |
0x02 | Host response with mode selection |
SAHARA_READ_DATA |
0x03 | Device requests programmer data |
SAHARA_END_OF_IMAGE |
0x04 | Transfer complete |
SAHARA_DONE |
0x05 | Session complete |
SAHARA_EXECUTE |
0x0D | Execute loaded image |
SAHARA_CMD_READY |
0x0B | Device ready for commands |
<!-- Configure Firehose -->
<configure MemoryName="ufs" MaxPayloadSizeToTargetInBytes="1048576"/>
<!-- Read GPT -->
<read SECTOR_SIZE_IN_BYTES="4096" num_partition_sectors="6"
physical_partition_number="0" start_sector="0"/>
<!-- Program Partition -->
<program SECTOR_SIZE_IN_BYTES="4096" filename="boot.img"
num_partition_sectors="65536" physical_partition_number="0"
start_sector="131072"/>
<!-- Erase Partition -->
<erase SECTOR_SIZE_IN_BYTES="4096" num_partition_sectors="65536"
physical_partition_number="0" start_sector="131072"/>┌────────────────────────────────────────────────────────────────┐
│ VIP 6-Step Authentication │
├────────────────────────────────────────────────────────────────┤
│ Step 1: Digest - Send hash algorithm configuration │
│ Step 2: TransferCfg - Transfer device-specific config │
│ Step 3: Verify - Verify device credentials │
│ Step 4: Signature - RSA signature validation │
│ Step 5: SHA256Init - Initialize secure hash │
│ Step 6: Configure - Apply final configuration │
├────────────────────────────────────────────────────────────────┤
│ Spoof Strategy: gpt_backup > gpt_main > ssd > buffer │
│ ⚠️ Backup GPT spoofing prioritized for better compatibility │
└────────────────────────────────────────────────────────────────┘
📱 MediaTek BROM Protocol / 联发科 BROM 协议 (Click to expand)
Device (BROM/Preloader) ◄──────────► Host (MultiFlash TOOL)
│ │
│ ◄─── 0xA0 (Sync) ────────────── │ Step 1: BROM Handshake
│ ────► 0x5F (ACK) ────────────────► │
│ │
│ ◄─── DA Address ───────────────── │ Step 2: Send DA
│ ────► DA Binary ─────────────────► │
│ ────► Jump to DA ────────────────► │
│ │
│ ════ DA Protocol ════════════════ │ Step 3: DA Operations
│ (XFlash or Legacy mode) │
│ │
| Mode | Description | Use Case |
|---|---|---|
| XFlash | Modern DA protocol | MT6765, MT6768, MT6785+ |
| Legacy | Classic DA protocol | MT6580, MT6735, MT6737 |
┌──────────────────────────────────────────────────────────────┐
│ MTK Security Engines │
├──────────────────────────────────────────────────────────────┤
│ SEJ (Security Engine for JTAG) │
│ ├── AES-128/256 encryption │
│ ├── RPMB key generation │
│ └── Secure boot verification │
├──────────────────────────────────────────────────────────────┤
│ DXCC (Discretix CryptoCell) │
│ ├── Key derivation (KDF) │
│ ├── Secure storage keys │
│ └── Newer chipsets (MT6785+) │
├──────────────────────────────────────────────────────────────┤
│ GCPU (Graphics Crypto Processing Unit) │
│ ├── AES-CBC decryption │
│ ├── Memory read via decrypt (Amonet) │
│ └── Exploit target │
├──────────────────────────────────────────────────────────────┤
│ CQDMA (Crypto Queue DMA) │
│ ├── Arbitrary memory R/W │
│ ├── DMA-based operations │
│ └── Exploit target (Hashimoto) │
└──────────────────────────────────────────────────────────────┘
SLA (Serial Link Authorization)
├── RSA-2048 signature verification
├── Multiple key support (MTK keys, OEM keys)
└── Bypass: Key leaks, exploit chains
DAA (Download Agent Authorization)
├── Challenge-response authentication
├── Device-specific tokens
└── Bypass: Auth file injection
📱 Unisoc SPRD Protocol / 展讯 SPRD 协议 (Click to expand)
Device (Download Mode) ◄──────────► Host (MultiFlash TOOL)
│ │
│ ◄─── Handshake ───────────────── │ Step 1: Connection
│ ────► Version Check ─────────────► │
│ │
│ ◄─── FDL1 Address ────────────── │ Step 2: Send FDL1
│ ────► FDL1 Binary ──────────────► │
│ ────► Execute ──────────────────► │
│ │
│ ◄─── FDL2 Address ────────────── │ Step 3: Send FDL2
│ ────► FDL2 Binary ──────────────► │
│ ────► Execute ──────────────────► │
│ │
│ ════ FDL2 Protocol ═════════════ │ Step 4: Flash Operations
│ (Read/Write/Erase partitions) │
│ │
| Series | Chipsets | FDL1 Address | Exploit |
|---|---|---|---|
| SC (Legacy) | SC7731, SC9832E | 0x5000 |
✅ BROM |
| Tiger | T310, T606, T610, T618 | 0x65000800 |
✅ BootROM |
| T7xx | T700, T760, T770, T820 | 0x9efffe00 |
// Legacy Platform (SC7731/SC9832E)
// Target: 0x4ee8 - RSA_Verify return value
// Effect: Force return 1 (success)
// ARM Thumb Instructions:
MOV R0, #1 // 0x2001
BX LR // 0x4770
// Modern Platform (SC9863A/T618)
// Target: 0x65015f08 - Secure boot verification
// Effect: Stack overflow -> ROP chain -> Bypass┌────────────────────────────────────────────────────────────┐
│ PAC File Structure │
├────────────────────────────────────────────────────────────┤
│ Header (512 bytes) │
│ ├── Magic: "BP_R1.0.0" or "BP_R2.0.1" │
│ ├── File count │
│ └── CRC32 checksum │
├────────────────────────────────────────────────────────────┤
│ File Table │
│ ├── File name (Unicode) │
│ ├── File offset │
│ ├── File size │
│ └── Partition type │
├────────────────────────────────────────────────────────────┤
│ File Data │
│ └── [FDL1] [FDL2] [boot] [system] [vendor] ... │
└────────────────────────────────────────────────────────────┘
📲 ADB/Fastboot Protocol / ADB/Fastboot 协议 (Click to expand)
┌─────────────────────────────────────────────────────────────┐
│ Application Layer │
│ shell, push, pull, install, logcat │
├─────────────────────────────────────────────────────────────┤
│ Service Layer │
│ shell:, sync:, reverse:, jdwp:, exec:, reboot: │
├─────────────────────────────────────────────────────────────┤
│ Transport Layer │
│ OPEN, READY, WRITE, CLOSE, AUTH │
├─────────────────────────────────────────────────────────────┤
│ Link Layer │
│ USB (bulk transfers) / TCP (5555) │
└─────────────────────────────────────────────────────────────┘
| Command | Description |
|---|---|
getvar:xxx |
Get device variable |
flash:partition |
Flash partition |
erase:partition |
Erase partition |
reboot |
Reboot device |
reboot-bootloader |
Reboot to bootloader |
oem xxx |
OEM-specific commands |
flashing unlock |
Unlock bootloader |
| Module | Status | Completion | Notes |
|---|---|---|---|
| Qualcomm EDL | ✅ Stable | 90% | VIP spoof, cloud loader working |
| MTK BROM | ✅ Stable | 85% | XFlash/Legacy, SLA bypass |
| MTK Hardware | ✅ Stable | 80% | SEJ, DXCC, GCPU, CQDMA |
| Unisoc SPRD | 60% | Basic flash, RSA bypass | |
| Unisoc Diag | 40% | IMEI read partial | |
| ADB | 50% | Shell, file transfer | |
| Fastboot | 50% | Flash, getvar |
- ✅ Stable - Production ready / 生产就绪
⚠️ WIP - Work in progress / 开发中- ❌ TODO - Not implemented / 未实现
// 1. Create Protocol Class / 创建协议类
public class NewProtocol : IDisposable
{
public event Action<string>? OnLog;
public event Action<int, int>? OnProgress;
public async Task<bool> ConnectAsync(CancellationToken ct) { ... }
public async Task<bool> FlashAsync(string partition, byte[] data, CancellationToken ct) { ... }
}
// 2. Create UI Service / 创建 UI 服务
public class NewUIService
{
private readonly Dispatcher _dispatcher;
public ObservableCollection<PartitionInfo> Partitions { get; }
public async Task StartFlashAsync() { ... }
}
// 3. Add to MainWindow.xaml / 添加到主窗口
<TabItem Header="New Platform">
<!-- Panel content -->
</TabItem>// ============================================================================
// MultiFlash TOOL - [Component Name]
// [中文名] | [日本語名] | [한국어명]
// ============================================================================
// [EN] English description
// [中文] 中文描述
// [日本語] 日本語説明
// [한국어] 한국어 설명
// ============================================================================
// ⚠️ STATUS: WORK IN PROGRESS (optional)
// TODO List: (optional)
// - [ ] Task 1
// - [ ] Task 2
// ============================================================================
// GitHub: https://github.com/xiriovo/edlormtk
// Contact: QQ 1708298587 | Email: 1708298587@qq.com
// License: MIT
// ============================================================================# Build debug version
dotnet build -c Debug
# Run with logging
dotnet run --project tools.csproj -- --verbose
# Check for issues
dotnet build -warnaserror| Resource | Description |
|---|---|
| Qualcomm EDL Wiki | EDL protocol documentation |
| MTKClient Wiki | MTK protocol documentation |
| Unisoc Research | Unisoc security research |
| Android Open Source | Official Android documentation |
( ´ ▽ ` )ノ 欢迎各路大佬来搞事情!
Issues / PRs / Ideas 统统欢迎~
| 🌐 | 来吧! |
|---|---|
| 🇨🇳 | 欢迎 PR!发现 bug 请开 issue,有想法也可以讨论~ |
| 🇺🇸 | PRs welcome! Found a bug? Open an issue. Ideas? Let's discuss! |
| 🇯🇵 | PRを歓迎します!バグ発見?Issueを開いてください! |
MIT License - 随便用,别忘了点个 ⭐ 就行
See LICENSE for full text
🇨🇳 肝代码不易,求打赏续命 (´;ω;`)
🇺🇸 Coding is hard, coffee keeps me alive!
🇯🇵 コーヒーで応援してください!
加好友请备注:GitHub |
Thank you! ♡ |
🪙 Crypto (点击展开)
| 💰 Coin | 🔗 Network | 📋 Address |
|---|---|---|
| USDT | TRC20 |
TS5Q3e8dXmYGuwrdc8KcWTxksj91WRN1Fx |
| BTC | Bitcoin |
bc1qaf5rlspk2t6npzsatk3vasenzh0fe59vfngq9df43hwkevaj8ypqvhu8hd |
| ETH | ERC20 |
0x5eaa81f7bd55c6108ceecd6deef4984c5c86daa4 |
| USDC | ERC20 |
0x5eaa81f7bd55c6108ceecd6deef4984c5c86daa4 |
您的支持让我有动力继续维护这个项目 (◕‿◕✿)
站在巨人的肩膀上 🦋
| 🎖️ Project | 📝 Description | 💕 |
|---|---|---|
| bkerler/edl | 高通 EDL 协议参考实现 | ⭐⭐⭐ |
| bkerler/mtkclient | 联发科协议参考实现 | ⭐⭐⭐ |
| HandyControl | 好看的 WPF 控件库 | ⭐⭐ |
| You | 正在看这个项目的你! | 💖 |