Инструмент 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/Ubuntusudo 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/mtkclientcd 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/mtkclientcd 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.gitcd 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.img2. Перезагрузите телефон
python mtk.py reset3. Скачайте последнюю версию 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/Download6. Запустите 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.empty9. Перезагрузите телефон
python mtk.py reset10. Отсоедините usb-кабель и наслаждайтесь своим рутированным телефоном :)
Загрузка в режиме meta через payload
python mtk.py payload --metamode FASTBOOTЧтение данных
python mtk.py da efuseUnlock bootloader1. Удаление метаданных и пользовательских данных (и 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