MTKClient | MTK reverse engineering and flash tool



Реп: (323)
MTKClient
Версия: 2.0.1

Последнее обновление программы в шапке: 02.04.2025

MTKClient » | ADB | fastboot - их использование » | SP Flash Tool - программа-прошивальщик для смартфонов на базе MTK. »


Прикрепленное изображение

Скриншоты
Прикрепленное изображение



Краткое описание:
Программа для работы с флеш-памятью смартфонов на базе процессора MTK.

Описание:
Программа для работы с флеш-памятью смартфонов на базе процессора MTK. Поддерживает чтение, запись, разблокировку и многое другое.
Кросс-платформенная, требует установку python >=3.8 и библиотек для него.
Установка ТОЛЬКО скриптами с сайта GITHUB.COM по инструкции.
Поддерживаются процессоры с протоколом v6 и включенной защитой DAA/SLA, включая MT6781, MT6789, MT6855, MT6886, MT6895, MT6983, MT8985.
Процессоры с версией протокола v5 должны работать.

Полезные ссылки и инструкции
Преревод инструкции
Инструмент mtk для эксплуатации, чтения/записи flash и других сумасшедших вещей.
Для Windows вам необходимо установить стандартный порт mtk и usb-драйвер (смотрите инструкции ниже).
Для Linux исправленное ядро требуется только при использовании старого kamakiri (см. папку установки)
(за исключением flash для чтения/записи).

После запуска скрипта mtk, загрузите телефон в режим brom, выключив устройство,
и нажмите и удерживайте либо vol up + power, либо vol down + power и подключите телефон к ПК.
Как только программа обнаружит подключение - отпустите кнопки.


Неподдерживаемые наборы микросхем

MT6781, MT6789, MT6855, MT6886, MT6895, MT6983, MT8985
  • Эти чипсеты используют новый протокол под названием V6, и bootrom пропатчен фирмой МТК, нужно использовать подписанный модуль DA через опцию --loader
  • На некоторых устройствах preloader деактивирован, но вы все равно используете его, запустив "adb reboot edl".
  • В настоящее время это работает только с UNFUSED устройствами.
  • Для всех устройств с активированными DAA, SLA и Remote-Auth в настоящее время не существует общедоступного решения (по разным причинам).


Установка
Используйте Re Live DVD (все готово к работе, основано на Ubuntu):
Пользователь: user, пароль:user (на основе Ubuntu 22.04 LTS)
Live DVD V4

Зеркало Live DVD V4

Еще зеркало
MTKClient (Пост badcpp #130335136)

Linux/Mac OS - (рекомендуется Ubuntu, исправленное ядро не требуется, за исключением kamakiri)
Установите python >=3.8, git и другие deps

Для Debian/Ubuntu
sudo apt install python3 git libusb-1.0-0 python3-pip libfuse2

Для ArchLinux
(sudo) pacman -S python python-pip git libusb fuse2
или
yay -S python python-pip git libusb fuse2

Получение файлов
git clone https://github.com/bkerler/mtkclient
cd mtkclient
pip3 install -r requirements.txt
pip3 install .

Установка разрешений
sudo usermod -a -G plugdev $USER
sudo usermod -a -G dialout $USER
sudo cp Setup/Linux/*.rules /etc/udev/rules.d
sudo udevadm control -R

Обязательно перезагрузитесь после добавления пользователя в группы dialout/plugdev.
Если устройство имеет интерфейс поставщика 0xFF (например, LG),
обязательно добавьте "blacklist qcaux" в "/etc/modprobe.d/blacklist.conf".

Windows
Установка python + git
Установите python 3.9 и git
Если вы устанавливаете python из Microsoft Store, команда "python setup.py install" завершится ошибкой, но этот шаг не требуется сейчас.
Нажмите WIN+R

Установка Winfsp (для fuse)
Загрузите и установите отсуда

Получение файлов и установка
git clone https://github.com/bkerler/mtkclient
cd mtkclient
pip3 install -r requirements.txt


Загрузите последнюю версию 64-разрядного Sdk

Установите драйвер последовательного порта MTK "MTK Serial Port"
(или используйте COM-порт Windows по умолчанию, убедитесь, что восклицательный знак не отображается).
Получите установщик usbdk (.msi) отсюда и установите его
отсюда
Проверьте подключение устройства с помощью "UsbDkController -n" - вы должны увидеть устройство с 0x0E8D 0x0003
Отлично работает под Windows 10 и 11 :D

Building wheel issues (creds to @Oyoh-Edmond)

Загрузите и установите Build Tools:
Перейдите на страницу инструментов сборки Visual Studio https://visualstudio.m…visual-cpp-build-tools
Загрузите программу установки и запустите ее.

Выберите необходимые рабочие нагрузки:

В программе установки выберите рабочую нагрузку "Разработка на рабочем столе с использованием C++".
Убедитесь, что выбран компонент "Инструменты сборки MSVC версии 142 - VS 2019 C++ x64/x86" (или более поздней версии).
Вы также можете проверить "Windows 10 SDK", если он еще не выбран.

Завершите установку:

Нажмите на кнопку "Установить", чтобы начать установку.
Следуйте инструкциям, чтобы завершить установку.
При необходимости перезагрузите компьютер.


Использование kamakiri (нужно только для mt6260 и старее)
Для linux (kamakiri attack), нужно пересобрать ядро используя этот kernel patch :
sudo apt-get install build-essential libncurses-dev bison flex libssl-dev libelf-dev libdw-dev
git clone https://git.kernel.org…evel/pahole/pahole.git
cd pahole && mkdir build && cd build && cmake .. && make && sudo make install
sudo mv /usr/local/libdwarves* /usr/local/lib/ && sudo ldconfig

wget https://cdn.kernel.org…rnel/v5.x/linux-`uname -r`.tar.xz
tar xvf linux-`uname -r`.tar.xz
cd linux-`uname -r`
patch -p1 < ../Setup/kernelpatches/disable-usb-checks-5.10.patch
cp -v /boot/config-$(uname -r) .config
make menuconfig
make
sudo make modules_install
sudo make install


Это не нужно для текущей веосии ubuntu:
sudo update-initramfs -c -k `uname -r`
sudo update-grub

настройки ядра приведены в разделе Настройка/ядра - kernel setups
Reboot
sudo reboot

Использование
Использование инструментов MTK через графический пользовательский интерфейс:
Вы можете использовать графический интерфейс.
На данный момент поддерживается чтение разделов или полное чтение флэш-памяти.
Выполните следующую команду:

python mtk_gui.py

Использование стандартного функционала mtk без эксплойтов :
python mtk.py --stock

Выполнение нескольких команд
python mtk.py script run.example

Смотрите файл "run.example" о том, как структурировать файл скрипта
https://github.com/bke…/blob/main/run.example

Для рутирования телефона (протестировано с Android 9 - 12)

1. Загрузите с телефона разделы boot и vbmeta
python mtk.py r boot,vbmeta boot.img,vbmeta.img

2. Перезагрузите телефон
python mtk.py reset

3. Скачайте последнюю версию Magisk

4. Установите Magisk на телефон

- вам нужно включить usb-отладку через Настройки/ О телефоне/ версию, нажмите 7x раз на пункт "номер сборки"
- Перейдите в Настройки/Дополнительные настройки/ Параметры разработчика, включите "OEM unlock" и "USB Debugging".
- Установите magisk apk

adb install app-release.apk

- конечно, примите запрос auth rsa на экране мобильного устройства, чтобы разрешить подключение adb

5. Загрузите образ boot на /sdcard/Download

adb push boot.img /sdcard/Download

6. Запустите magisk, нажмите "Установить", выберите boot.img из /sdcard/Download, затем:

adb pull /sdcard/Download/[здесь отображается имя загрузочного файла с исправлениями magisk]
mv [здесь отображается имя загрузочного файла с исправлениями magisk] boot.patched

7. Выполните действия, описанные в разделе "Разблокировать загрузчик" ниже.

8. Запишите патченный boot-раздел (magisk-patched boot) и пустой раздел vbmeta

python mtk.py w boot,vbmeta boot.patched,vbmeta.img.empty

9. Перезагрузите телефон

python mtk.py reset

10. Отсоедините usb-кабель и наслаждайтесь своим рутированным телефоном :)

Загрузка в режиме meta через payload
python mtk.py payload --metamode FASTBOOT

Чтение данных
python mtk.py da efuse

Unlock bootloader
1. Удаление метаданных и пользовательских данных (и md_udc, если они существуют):

python mtk.py e metadata,userdata,md_udc

Разблокировать загрузчик:

python mtk.py da seccfg unlock

Заблокировать загрузчик:

python mtk.py da seccfg lock

Перезагрузите телефон:

python mtk.py reset

и отсоедините USB-кабель, чтобы телефон перезагрузился.

Если вы получаете ошибку dm-verity на Android 11, просто нажмите кнопку питания,
затем устройство должно загрузиться и отобразить желтое предупреждение о разблокированном загрузчике,
а затем устройство должно загрузиться в течение 5 секунд.

Чтение памяти
Считать загрузочный раздел в файл boot.bin с помощью команды загрузки
python mtk.py r boot boot.bin

Считать загрузочный раздел в файл boot.bin с помощью bootrom
python mtk.py r boot boot.bin [--preloader=Loader/Preloader/your_device_preloader.bin]

Считать раздел предварительной загрузки в файл preloader.bin с помощью bootrom

python mtk.py r preloader preloader.bin --parttype=boot1 [--preloader=Loader/Preloader/your_device_preloader.bin]

Считать полный образ flash в файл flash.bin (используйте --preloader для brom)

python mtk.py rf flash.bin

Считать полный образ flash в файл lash.bin (используйте --preloader для brom) для устройств Интернета вещей (MT6261/MT2301):

python mtk.py rf flash.bin --iot

Считать образ flash по смещению 0x128000 длиной 0x200000 в файл flash.bin (используйте --preloader для brom)

python mtk.py ro 0x128000 0x200000 flash.bin

Считать все разделы в каталог "out". (используйте --preloader для brom)

python mtk.py rl out

Показать gpt (используйте --preloader для brom)

python mtk.py printgpt

Запись flash

(используйте --preloader для brom)
Запись boot.bin в загрузочный раздел
python mtk.py w boot boot.bin

Запись полного образа flash.bin (в настоящее время работает только в режиме da)
python mtk.py wf flash.bin

Запись всех файлов из каталога "out" во флэш-разделы
python mtk.py wl out

Запись flash.bin в flash со смещением 0x128000 и длиной 0x200000 (используйте --preloader для brom)
python mtk.py wo 0x128000 0x200000 flash.bin

Стирание разделов

Стереть загрузочный раздел
python mtk.py e boot

Стереть загрузочные сектора
python mtk.py es boot [sector count]

DA команды:

Чтение памяти (ОЗУ)
python mtk.py da peek [addr in hex] [length in hex] [optional: -filename filename.bin for reading to file]

Запись в память
python mtk.py da poke [addr in hex] [data as hexstring or -filename for reading from file]

Чтение rpmb (пока только xflash)
python mtk.py da rpmb r [will read to rpmb.bin]

Запись rpmb [в настоящее время не работает, только xflash]
python mtk.py da rpmb w filename

Сгенерировать и отобразить ключи rpmb1-3
python mtk.py da generatekeys

Разблокировка / блокировка загрузчика
python mtk.py da seccfg [lock or unlock]

Bypass SLA, DAA and SBC (Обход SLA, DAA и SBC) (используя generic_patcher_payload)

python mtk.py payload
Если вы хотите впоследствии использовать SP Flash tool, убедитесь, что вы выбрали "UART" в настройках, а не "USB".

Дамп preloader
Устройство должно находиться в режиме bootrom, а preloader должен быть на устройстве
python mtk.py dumppreloader [--ptype=["amonet","kamakiri","kamakiri2","hashimoto"]] [--filename=preloader.bin]

Если есть проблемы - нужно выслать разработчику подробный лог.
Для этог запустите mtk в режиме --debug. Журнал будет записан в log.txt

СПИСОК КОМАНД
"printgpt": "Print GPT Table information",
"gpt": "Save gpt table to given directory",
"r": "Read flash to filename",
"rl": "Read all partitions from flash to a directory",
"rf": "Read whole flash to file",
"rs": "Read sectors starting at start_sector to filename",
"ro": "Read flash starting at offset to filename",
"fs": "Mount the device as a FUSE filesystem",
"w": "Write partition from filename",
"wf": "Write flash from filename",
"wl": "Write partitions from directory path to flash",
"wo": "Write flash starting at offset from filename",
"e": "Erase partition",
"es": "Erase partition with sector count",
"ess": "Erase sector with sector count",
"footer": "Read crypto footer from flash",
"reset": "Send mtk reset command",
"dumpbrom": "Try to dump the bootrom",
"dumpsram": "Try to dump the sram",
"dumppreloader": "Try to dump the preloader",
"payload": "Run a specific kamakiri / da payload, if no filename is given, generic patcher is used",
"crash": "Try to crash the preloader",
"brute": "Bruteforce the kamakiri var1",
"gettargetconfig": "Get target config (sbc, daa, etc.)",
"logs": "Get target logs",
"meta": "Set meta mode",
"peek": "Read memory in patched preloader mode",
"stage": "Run stage2 payload via boot rom mode (kamakiri)",
"plstage": "Run stage2 payload via preloader mode (send_da)",
"da": "Run da xflash/legacy special commands",
"script": "Run multiple commands using text script"
ПАРАМЕТРЫ
--preloader =Set the preloader filename for dram config
--loader =Use specific loader, disable autodetection
--filename =Filename to write data into
--auth =Use auth file (auth_sv5.auth)
--cert =Use cert file
--vid =Set usb vendor id used for MTK Preloader
--pid =Set usb product id used for MTK Preloader
--sectorsize =Set default sector size
--debugmode =Enable verbose mode
--gpt-num-part-entries =Set GPT entry count
--gpt-part-entry-size =Set GPT entry size
--gpt-part-entry-start-lba =Set GPT entry start lba sector
--skipwdt =Skip wdt init
--wdt =Set a specific watchdog addr
--mode =Set a crash mode (0=dasend1,1=dasend2,2=daread)
--var1 =Set kamakiri specific var1 value
--uart_addr =Set payload uart_addr value
--da_addr =Set a specific da payload addr
--brom_addr =Set a specific brom payload addr
--gpt_file =Use a gpt file instead of trying to read gpt from flash
--ptype =Set the payload type ("amonet","kamakiri","kamakiri2","carbonara" kamakiri2/da used by default)
--crash =Enforce crash if device is in pl mode to enter brom mode
--socid =Read Soc ID
Рекомендуемый шаблон сообщения о проблеме
  1. Предыстория возникновения проблемы.
  2. Полное название устройства, ссылка на тему устройства на 4PDA (при наличии), тип процессора в формате MT9999
  3. Тип и версия операционной системы
  4. Присутствуют ли русские буквы в путях к клиенту и прошивке? Присутствовать не должны, поэтому следует исправить все пути до публикации вопроса в теме.
  5. Установлены ли драйвера (если виндовс) именно для режима "PRELOADER/BROM" (не путать с adb-драйверами) ?
  6. Устройство в "Диспетчере устройств" определяется без восклицательного знака (для windows)?
  7. Прочитаны и понятны рекомендации к подключению аппарата при прошивке ?
  8. Какие мероприятия проводились при попытках решить проблему?
  9. Внятное описание проблемы
  10. К сообщению прилагайте скриншоты экрана и/или вывод терминала (командной строки).
Статьи по использованию MTKclient
MTK_GUI Графичесий клиент
После установки MTKclient можно использовать как в текстовом режиме, так и с графическим интерфейсом.

Для работы в графическом режиме нужно запустить программу
$mtk_gui
Стартует графическая оболочка в режиме ожидания подключения
Прикрепленное изображение

Поключаем ВЫКЛЮЧЕННЫЙ телефон
Прикрепленное изображение

В окне появляется информация о процессоре и закладки с действиями.
1. чтение разделов
Прикрепленное изображение

2. в самом конце - можно считать всю флешь-память (дамп ROM)
Прикрепленное изображение

3. запись разделов
Прикрепленное изображение

4. запись всего дампа ROM
Прикрепленное изображение

5. удаление разделов
Прикрепленное изображение

6. вкладка "flash tool"
чтени-запись флеша, удаление-чтение-запись прелоадера, удаление-чтение-запись boot-раздела, удаление-чтение-запись RPMB.

Так же есть функции залочить/разлочить загрузчик (справа внизу)
Прикрепленное изображение


7. Вкладка "Ключи" (не разбирался)
Прикрепленное изображение


8. Лог-файл
Прикрепленное изображение





Требуется Android: любая версия
Русский интерфейс: Нет

Разработчик: bkerler
Домашняя страница: https://github.com/bkerler/mtkclient


Скачать:
Версия: 2.0.1
Образ загрузочного диска с Ubuntu Linux и устанвленными MTKclient+SP flash tool
Образ загрузочного диска с Ubuntu Linux и уствановленным MTKclient

Прошлые версии


Сообщение отредактировал DuckGPTv4 - 16.03.26, 22:28
Причина редактирования: Автоматический установщик Mtkclient для Windows



Реп: (60)
Вещь хорошая,но не совсеми работает .



Реп: (23)
bron999 @ 17.10.23, 08:35 *
но не совсеми работает

а есть список протестированых рабочих и нерабочих?



Реп: (323)
aaaquarius @ 12.11.23, 17:07 *
Вижу там последнюю версию 1.52. Откуда 1.63?

1.52 это последний релиз.
текущая версия:
$mtk
MTK Flash/Exploit Client V1.6.3 (c) B.Kerler 2018-2023

MTK Flash/Exploit Client V1.6.3 (c) B.Kerler 2018-2023
-----------------------------------

Available commands are:

printgpt: Print GPT Table information
gpt: Save gpt table to given directory
r: Read flash to filename
rl: Read all partitions from flash to a directory
rf: Read whole flash to file
rs: Read sectors starting at start_sector to filename
ro: Read flash starting at offset to filename
w: Write partition from filename
wf: Write flash from filename
wl: Write partitions from directory path to flash
wo: Write flash starting at offset from filename
e: Erase partition
es: Erase partition with sector count
ess: Erase sector with sector count
footer: Read crypto footer from flash
reset: Send mtk reset command
dumpbrom: Try to dump the bootrom
dumpsram: Try to dump the sram
dumppreloader: Try to dump the preloader
payload: Run a specific kamakiri / da payload, if no filename is given, generic patcher is used
crash: Try to crash the preloader
brute: Bruteforce the kamakiri var1
gettargetconfig: Get target config (sbc, daa, etc.)
logs: Get target logs
meta: Set meta mode
peek: Read memory in patched preloader mode
stage: Run stage2 payload via boot rom mode (kamakiri)
plstage: Run stage2 payload via preloader mode (send_da)
da: Run da xflash/legacy special commands
script: Run multiple commands using text script



Реп: (323)
androtester @ 12.11.23, 16:47 *
а есть список протестированых рабочих и нерабочих?

в шапке список не поддерживаемых процессоров - которые работают по протоколу v6



Реп: (17)
* at0mix, есть небольшая неточность. из семейства mt678x не поддерживается только mt6789 (Helio G99). mt6781 и mt6785 (Helio G96 и G90) работают отлично, они на v5.



Реп: (323)
weegam @ 14.11.23, 23:20 *
из семейства mt678x не поддерживается только mt6789 (Helio G99).

сейчас посмотрел - есть файл
~/mtkclient/mtkclient/Loader/MTK_AllInOne_DA_mt6789.bin
внутри
MTK_DOWNLOAD_AGENT
MTK_DA_v6_2022-05-24 19:04:02



Реп: (17)
at0mix @ 08.10.23, 19:06 *
MT6781(Helio G99)

Повторюсь, не mt6781, а mt6789. В целом, тоже самое относится и к некоторым процессорам из семейства mt688x и mt689x. Полный список процессоров с возможностью обхода авторизации можно посмотреть ЗДЕСЬ.

Добавлено 14.11.2023, 23:42:
at0mix @ 15.11.23, 01:35 *
MTK_AllInOne_DA_mt6789.bin

это для прошивки, но обход на них пока не поддерживается.

Сообщение отредактировал weegam - 14.11.23, 23:44



Реп: (141)
Скачал архив из шапки, распаковал:
Прикрепленное изображение

Это шутка какая-то?



Реп: (323)
cross22 @ 16.11.23, 14:22 *
Это шутка какая-то?

Нет, это требование оформления темы - обязательно выкладывать архив ПО.
Но в этом случае - я могу конечно выложить архив скриптов на питоне - но он не будет работать без самого питона и настроек на него.
поэтому установка выполняется ПО ИНСТРУКЦИИ с репозитария github.com

ну или можно скачать загрузочный образ линукса с предустановленным пакетом, записать его на флешку и загрузиться с нее.



Реп: (0)
Удалось все сделать по инструкции и подключиться к китайскому телефону. Там есть boot_a и boot_b. Можно их вытянуть с расширением boot.bin. Но для дальнейших действий нужен boot.img. Может кто подскажет как его получить? И куда потом закачивать пропатченный boot.img? вместо обоих boot_a и boot_b (опять же img и bin)?

Сообщение отредактировал Power_ - 24.11.23, 16:32



Реп: (323)
Power_ @ 24.11.23, 15:43 *
Там есть boot_a и boot_b. Можно их вытянуть с расширением boot.bin. Но для дальнейших действий нужен boot.img. Может кто подскажет как его получить? И куда потом закачивать пропатченный boot.img? вместо обоих boot_a и boot_b (опять же img и bin)?

Для начала прочти про слоты А и В, зачем нужны
Разработка и портирование GSI-прошивок (Пост Displax #66127195)
узнать какой слот активен можно в режиме фастбут
ADB | fastboot - их использование (Пост Displax #15982669)
на новом фоне как правило активен слот А
нужно пропатченый boot.img переименовать в boot.bin и записать в слот А
а вот если что-то пойдет не так можно будет переключиться на родной слот В



Реп: (0)
Спасибо, все получилось!



Реп: (323)
Power_ @ 27.11.23, 21:57 *
все получилось!

на форуме не принято писать пустые сообщения.

Ось то хоть какая - винда или линух?



Реп: (0)
at0mix @ 27.11.23, 22:25 *
все получилось!

на форуме не принято писать пустые сообщения.

Ось то хоть какая - винда или линух?

Все удалось сделать на win10. Смартфон на android 13 на платформе mt6771 (Fossibot f101 pro).



Реп: (0)
доброго времени суток, что делать если не запускается mtk_gui, выдавая ошибку ModuleNotFoundError: No module named 'shiboken6.Shiboken'? все requirements установлены, последняя версия py

Сообщение отредактировал xsenix - 28.01.24, 16:26



Реп: (44)
* xsenix, замечаю подобное если при установке ты не поставил галочку при установке - (как то там ) установить как системное.



Реп: (0)
предлагаете переустановить полностью python?



Реп: (44)
* xsenix, просто запусти ещё раз инсталлер. Там поймёшь сразу галочка



Реп: (0)
успешно, спасибо за помощь



Реп: (4)
Что делать дальше?
USB DK устанавливаться после перезагрузки ПК ОТКАЗАЛСЯ! Хотя сам же попросил меня его перезагрузить для того чтобы продолжить установку всех драйверов,воот! :)

Прикрепленные изображения
Прикрепленное изображение


Полная версия   Текстовая версия

Помощь   Правила

Сейчас: 23.04.26, 15:35