WwR MTK | Программа работает с ROM файлами.



Реп: (659)
WwR MTK
версия: 2.51 Beta

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

!!!ВНИМАНИЕ!!!
Программу можно считать сервисной, которая предполагает наличие определённых знаний в этой области.

Уровень сложности темы: сложный

Краткое описание:
Программа работает с ROM файлами (считанные из аппарата при помощи SP Flash Tool), на базе процессоров MTK.
  • Вытаскивает Preloader.bin из дампа ROM файла.
  • Можно вырезать определённый сегмент считанного участка памяти.
  • Разрезать ROM файл на части, исходя из Scatter файла.
  • Находит разделы PMT, PGPT (SGPT), на основе информации из этих разделов создаёт Scatter файл.
  • Вычисляет из Recovery_log название разделов, их старты и длины.
  • Работает по ADB. Создаёт резервные копии разделов (Если есть root права).
  • Создание scatter файла для устройств, имеющих root права, на платформе MTK. Бэкап прошивки любых устройств.
  • Вырезает ненужные сектора (Spare) из считанного дампа памяти с телефонов с NAND памятью.
  • Просмотр разделов EXT4 в самом ROM файле, извлечение файлов (только файлов) из EXT4 в ROM.
  • Создание пустых разделов EXT4, по заданной длине, возможность конвертации в sparse образ.
  • Создание пустых разделов или файлов заполненные нулями или случайными числами.
  • При открытии файла ROM, моментальный просмотр таблицы разделов GPT,PMT,MBR.
  • Будут добавляться новые возможности.
Требования к ПК: Windows XP или выше
Требования к устройству: устройство на платформе МТК и ROM из SP Flash Tool
Интерфейс программы: Русский/English
Разработчик: vvaaavv@mail.ru

Скачать:
версия: 2.51 Beta:
Прикрепленный файлWwR_2.51_Rus.zip ( 46.78 МБ )
Прикрепленный файлWwR_2.51_Eng.zip ( 46.78 МБ )

Взломанная безопасная версия: WwR MTK (Пост vvaaavv #127841556)

Для работы программы необходимо установить Visual C++, вот пост с ним: WwR MTK (Пост Domovoj #86594578)
Или скачайте с официального сайта под свою систему: https://support.micros…ted-visual-c-downloads


Внимание! Шапка темы и инструкции в ней будут меняться в связи с выходом новой версии программы

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

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

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

Прикрепленное изображение
Прикрепленное изображение
Список изменений
  • Версия 1.8
    • Улучшена работа по скорости: Разрезания ROM, Вырезки Spare, Поиск Разделов.
    • В Поиске разделов поиск регионов на шару, поиск PMT, PGPT, MBR+EBR1.
    • Возможность сделать скаттер файл из разделов PMT и PGPT.
    • Сделал Log программы.

  • Версия 2.0
    • Добавлена возможность сделать скаттер файл исходя из информации: dumchar_info или partinfo.
    • Так же добавлена возможность сравнивать файлы и скаттер файлы по значениям старта и длины.
    • Исправлены мелкие недочёты.
    • Изменён размер, чтобы на ноутбуках в длину влезало.
    • Размер программы: 910х640.

  • Версия 2.15
    • Исправлены мелкие недочёты. (Неправильно находил последнюю FF на концах. Исправление для MT6589 скаттер файл старого образца)

  • Версия 2.20
    • Реализовано автоматически вытаскивать Preloader из ROM файла, если он там есть, когда выполняется: <Разрезать ROM в папку..>.

  • Версия 2.30
    • Изменён интерфейс программы, добавлена поддержка English.
    • Реализован автопилот. Исправлены недочёты и ошибки.
    • Внедрено много изменений!!!

  • Версия 2.40
    • Изменён интерфейс программы. Переключение вкладок по старому, или из меню, или по кнопкам.
    • Реализован режим ADB. (Информация об устройстве, Список разделов, Список установленных приложений (просмотр, установка, удаление), Просмотр Build.prop, ...)
    • В режиме ADB при наличии root прав, реализовано создание бэкапа на всех платформах (Dumchar_info, Partinfo, Partitions, Full_ROM)
    • Исправлена ошибка по вытаскиванию Preloader, на некоторых моделях.
    • Доработана таблица Scatter файла, можно посмотреть все поля в Scatter файле. Включена поддержка новых строк.
    • В автопилоте доработано создание Scatter файла из информации Recovery_Log. Программа реально проверяет стартовые значения разделов LK, Boot, System, UserData, Cache и если совпадают, то делает Scatter файл. Если не совпадает, вычисляет смещение. Затем заново перепроверяет, и если совпадают значение стартов, то использует их для создания Scatter файла.
    • Исправлена ошибка, если при создание Scatter файла, используются больше 50 разделов.
    • Добавлено. Все разделы, которых нет в шаблонном файле, отмечаются как не прошивочные. Если выбран оригинальный, стоковый Scatter файл, то программа сама автоматически добавляет эти значения в шаблонный файл.
    • Исправлена ошибка автоопределения считанных разделов в ROM файле.
    • Переделан алгоритм поиска разделов. Найденные разделы Ext_4 имеют заданную длину образа, поэтому нет смысла в них искать другие разделы.
    • Задействован новый алгоритм определения платформы, не по LK (uboot), а по Recovery_Log. Если Recovery_Log отсутствует в ROM файле, то используется алгоритм определение по LK.
    • В автопилоте при создании scatter файла, программа распознаёт по факту, какая файловая система на разделах, т.е EXT4_IMG, UBI_IMG, NORMAL_ROM.
    • Внедрено много изменений!!!

  • Версия 2.50
    • Изменён интерфейс программы.
    • Автоматический выбор второго файла. При выборе ROM_1 (EMMC_USER) выбирается ROM_0 (EMMC_BOOT_1 или готовый Preloader).
    • Добавлены новые вкладки и возможности.
    • При открытии ROM файла, программа моментально распознаёт разметку (GPT, PMT, MBR), и выводит её структуру в специальную таблицу.
    • Автопилот изменён алгоритм работы почти всех функций.
    • Автопилот изменено определение платформы.
    • Просмотр разделов EXT4 в ROM файле. Извлечение файлов в EXT4.
    • Создание чистых разделов EXT4, с конвертацией в Spasre и без.
    • Создание пустых файлов любого размера, заполненных нулями или случайными числами.
    • Создание scatter файла из 1 мегабайта GPT разделов на MTK.
    • Просмотр build.prop за секунду.
    • Проверка соответствие ROM и scatter файла.
    • В режиме работы по ADB можно подключать более одного устройства.
    • В режиме работы по ADB автоматическое подключение устройства или переподключение, ожидание, добавление.
    • Улучшена работа по нарезке ROM, скорость считывания и записи теперь зависит от жёсткого диска и мат.платы.
    • Внедрено очень много изменений и дополнений!!!

  • Версия 2.51
    • Изменил функцию определения нулей и FF. Действует новый алгоритм. Три функции были переработаны, исправлены,и объёденены в одну.
    • В разделах MTK binary длина вычисляется по алгоритму MTK binary, до 5 вложений, если вложений больше - выбирается весь раздел целиком.
    • В разделах Android длина вычисляется исходя кратному 2048 байт, от последнего не нулевого значения.
    • Исправлен алгоритм выбора файлов. Были замечены ошибки. Сейчас выбор файлов действует по новому алгоритму.
    • Исправлены ошибки в <Поиске разделов>. Разделы с EXT4_FS, если размер блока всегда был равен 4096 байт. Сейчас эта информация берётся из супер блока файловой системы.
    • В просмотре EXT4_FS теперь есть информация о свободном месте по версии самой файловой системы.
    • Исправлен поиск количества нулей. Теперь в разделах с EXT4_FS указывается свободное место по версии самой файловой системы.
      Для закриптованных разделов всегда 0% нулей (Не стоит искать там пустоту)
    • Исправлена проверка на EXT4_FS в <Таблице разделов> и <Scatter файл>. Теперь в <Таблице разделов> определяются не только файловая EXT4_FS, но и MTK binary и Android,
      которые имеют свои алгоритмы по определению длины разделов.
    • В поиске разделов были добавлены более конкретные условия для определения EXT4_FS, замечались ложные сработки, и программа нереносила поиск в самый конец ROM (так ничего и не найдя)
    • Применил алгоритм просмотра PMT, если есть в нём какие-то ошибки. Для создания scatter файла не годится, а вот посмотреть что не так - можно.
    • Добавил подсказки в <Автопилоте> на кнопки для сбора прошивки.
    • Добавил в <Автопилоте> проверку по факту при нарезке разделов. Если раздел создался - Ок! Если нет, то - False!
    • Изменение интерфейса. Были замечены ошибки при переводе программы на английский язык. И сам перевод и кнопки (текст не вмещался)
    • Исправлены мелкие ошибки и недочёты по интерфейсу!

Инструкции. Общие принципы работы по версии 2.50
Выбор файла в программе (EMMC_USER)
При нажатии кнопки <Выбрать файл>. Необходимо выбрать файл ROM считанный из устройства дамп.
Программа сама определяет к какому типу относится ROM и выводит соответствующее сообщение. Пример:
Прикрепленное изображение
А также выводит параметры GPT раздела, его полный объём, старт разметки GPT, и резервную копию - SGPT.
Ещё сразу показывает разметку для GPT, PMT, MBR. в таблице разделов.
Автоматическое определение типа разметки при выборе ROM файла EMMC_USER
При выборе ROM файла (EMMC_USER), программа сразу определяет тип разметки, это GPT или MBR+EBR, Если в первых 26 Мегабайтах есть таблица разделов PMT, то покажет разметку по PMT.
Вот на примерах это выглядит так:
GPT разметка
Прикрепленное изображение
MBR разметка
Прикрепленное изображение
PMT разметка
Прикрепленное изображение
Если в таблице ничего не появилось, и программа открыла вкладку <Поиск разделов> здесь стоит задуматься - а всё ли в порядке с ROM файлом?!
Выбор файла в программе (EMMC_BOOT_1)
При выборе файла являющийся EMMC_BOOT_1, в котором зашит Preloader. Программа сканирует этот файл и если этот ROM в действительности является файлом в котором есть Preloader, программа выбирает этот файл вторым файлом и показывает его ниже. При этом открывается вкладка <Preloader> и происходит <Анализ Preloader>, после чего можно вытащить Preloader.
Пример
Прикрепленное изображение

Если файл является готовым Preloader, программа тоже откроет его вторым файлом, и откроет вкладку <Preloader>.
Пример с готовым Preloader
Прикрепленное изображение
Программа предупредит, что вы выбрали уже готовый Preloader. И кнопка <Вытащить Preloader и сохранить как..> будет не активна (так как нет смысла вытаскивать то, что уже вытащено).
Функция EMMC Parser, при анализе Preloader
Это нужно тем, кто меняет микросхемы памяти, которые вышли из строя. Потому как в Preloader находится информация о совместимости микросхем памяти с железом устройства.
Вот пример:
Пример EMMC Parser
Прикрепленное изображение
В данном примере, Preloader имеет 9 совместимых микросхем памяти, которые перечислены в таблице. CID микросхемы и CID имя показываются в любом случае, а вот их параметры содержаться в файле emmc.txt в папке с программой. Из-за того, что микросхем очень много, и каждый день появляются новые, и производители нигде не выдают параметры микросхемы по номеру CID, поэтому этот файл заполняется вручную.
Автовыбор второго файла
При выборе файла ROM_1 (EMMC_USER) программа сама выбирает EMMC_BOOT_1 (обычно ROM_0) или готовый Preloader. При условии, что файл находится в этом же каталоге.
При выборе файла ROM_0 (EMMC_BOOT_1) программа сама выбирает EMMC_USER (обычно ROM_1). При условии, что файл находится в этом же каталоге.
Если программа по каким-то причинам не выбрала второй файл (или первый) выберите файл сами, вручную, достаточно ещё раз нажать на <Выбор файла> и выбрать нужный файл.
Автопилот
1. Создание пустого scatter файла:
Пустой scatter файл - в нём нет никакой информации о разделах, только шапка scatter файла, где указывается тип платформы и тип памяти в устройстве и указан первый раздел с Preloader. Это всё необходимо для считывания дампа из памяти устройства.
Этот пустой scatter файл нужен только для считывания дампа памяти из устройства, прошивать таким scatter файлом - Нельзя!!!
Тип платформы устройства можно определить через ADB, для этого не надо root прав, или загуглить. Если указали неверно, то SP Flash Tool выдаст вам ошибку, при подключение устройства к ПК в режиме считывания.
Тип памяти используется только два типа: EMMC и NAND. В случае EMMC, блок выбирается в 0x20000. В случае NAND блок может быть любым, но обязательно надо выбрать верный. Можно воспользоваться scatter файлом из стоковой прошивки и посмотреть какой там. Если такого scatter файла нет, то можно считать прошивку с размерностью блока в 0x20000, потом выбрать этот дамп и запустить <Начать сканировать> во вкладке <Поиск разделов>. Программа сама определяет размерность блока. Затем необходимо в пустом scatter файле выставить верную размерность блока и заново считать дамп.
Пример на картинке:
Прикрепленное изображение
Только такой вариант у меня оказывался рабочим!
2. Считать прошивку из устройства:
Вот здесь написано как: WwR MTK (Пост vvaaavv #60035994)
3. Запуск автопилота:


Инструкции
Делаем Полный бэкап памяти телефона или планшета на базе процессоров MTK.

Необходимо считать из устройства всю доступную память, так называемые ROM файлы:
Обычно ROM_0 - это блок памяти где содержится Preloader (EMMC_BOOT_1),
а ROM_1 - это блок памяти где содержится всё остальное (EMMC_USER), есть много способов как это можно выполнить. Например через программу SP Flash Tool.
Примерная структура памяти устройств
Прикрепленное изображение

Если вообще ничего не знаем об устройстве:
При помощи SP Flash Tool, без scatter файла
При помощи SP Flash Tool, без scatter файла.
  • Инструкция подходит ко всем типам телефонов.
  • В том числе, когда на руках оказывается телефон непонятно какой (имеется в виду все различные подделки под известные бренды)

Представим:
Имеем телефон на руках. Не понятно какой. Название не знаем, телефон не включается. (Только подключается к компьютеру в режиме прошивки). Соответственно пользователь не знает, как можно вычитать данные из телефона. Для того, что бы вычитать данные с телефона, необходимо иметь Scatter File и Preloader. Как можно получить их? можно попытаться...
Итак, для этого нужно будет скачать программы: SP Flash Tool и WwR_MTK и конечно установить драйверы (VCOM) для телефона.
Желательно перед началом любых действий, зайти в Recovery на самом устройстве, там делать особо ничего не надо, просто когда заходите в него, если Recovery стоковый, он создаёт Log файл в кэше памяти устройства, который может пригодиться.
    Порядок действий такой:
  • 1. Узнать какой тип процессора используется в телефоне.
  • 2. В SP Flash Tool вычитать хотя бы первый мегабайт данных из телефона.
  • 3. В WwR_MTK вытащить родной Preloader.
  • 4. В SP Flash Tool выполнить RAM Test. (Он покажет какой объём памяти используется в телефоне)
  • 5. В SP Flash Tool считать весь дамп памяти (Сделать полный бэкап прошивки из телефона).

    Теперь более подробно:
  • 1. Узнать какой тип процессора используется в телефоне.
  • 2. В SP Flash Tool вычитать хотя бы первый мегабайт данных из телефона:
    2.1. Можно наугад попробовать узнать: т.е в WwR_MTK есть вкладка: <Пустой scatter файл> переходим на неё, без разницы какой процессор, выбираем любой, так же с памятью.
    Далее <Создать и сохранить как..>, выбираем куда и под каким названием сохранить.
    2.2. Далее в SP Flash Tool выбираем созданный пустой скаттер во вкладке <Download> в поле <Scatter-loading>, далее переходим во вкладку <ReadBack>, Нажимаем на кнопку <Add>. Появится новая строчка ниже. Кликаем на ней дважды и выбираем место сохранения так называемого ROM_0 блока.
    Нажимаем <Сохранить>, далее появляется выбор значений, по которым SP Flash Tool должен считать память с устройства (телефона или планшета).
    Далее выбираем:
    Type - HEX
    Region: - EMMC_BOOT_1, (Если есть такой выбор), или EMMC_USER.
    Start Address: - выбираем 0x0000000000000000, т.е самое начало.
    Lenght: - выбираем 0x0000000000100000, т.е длину.
    Более подробно
    Обычно на новых платформах (MT67xx и MT6580) Preloader находится в EMMC_BOOT_1, а все остальные данные в EMMC_USER.
    Нам нужен регион с Preloader. Он обычно, находится в самом начале памяти телефона и не превышает размера в Мегабайт (Preloader больше чем 200 Кбайт я не видел).
    1 Мегабайт: 1048576 байт в десятиричной форме
    1 Мегабайт: 0x100000 в шестнадцатеричной форме
    (параметр 0x - указывает на то что, число представленно в шестнадцатеричной форме)
    Можно указать и:
    512 Кбайт: 0x80000
    256 Кбайт: 0x40000.
    Можно указать больше, чем есть, ничего страшного не случится.
    Поэтому в SP Flash Tool выбираем значения:
    где <Start Address:> - выбираем <0x0000000000000000>, т.е самое начало
    и длину: <Lenght:> - <0x0000000000100000>
    Далее нажимаем <Ok> и <Read Back>. И полностью выключенный телефон подключаем к компьютеру. (Рисунок 200, 201).
    Рисунок 200, если память в устройстве EMMC:
    Прикрепленное изображение
    Рисунок 201, если память в устройстве NAND:
    Прикрепленное изображение
    2.3. Если выйдет ошибка (Рисунок 202), значит меняем в WwR_MTK тип процессора, на который показал SP Flash Tool. Повторяем действия с пункта 2.1.
    Рисунок 202:
    Прикрепленное изображение
    2.4. Если выйдет ошибка (Рисунок 203), значит меняем в WwR_MTK тип памяти, на который показал SP Flash Tool. Повторяем действия с пункта 2.1.
    Рисунок 203:
    Прикрепленное изображение
    2.5. При удачном считывание должно выйти окошко с зеленым кружочком и галочкой (Рисунок 204).
    Рисунок 204:
    Прикрепленное изображение

  • 3. В WwR_MTK вытащить родной Preloader:
    3.1. Если ROM файл считался нормально, продолжаем: В WwR_MTK выбираем наш файл, в самом верху программы. Переходим на вкладку <Preloader>, нажимаем кнопочку <Анализ Preloader>. Смотрим информацию:
    Название Preloader, тип процессора, тип памяти, и возможность его вытащить из ROM файла (Рисунок 205).
    Рисунок 205:
    Прикрепленное изображение

    *** Замечание:
    ** На новых платформах (MT67xx и MT6580) в Preloader всегда указан именно этот тип процессора (MT6752), на него не стоит обращать внимание,
    ** На платформах MT65xx показывает правильно тип процессора.

    3.2. Нажимаем кнопочку <Вытащить Preloader и сохранить как..>, указываем место сохранения. - Теперь у Вас есть родной свой Preloader, который точно ничего не повредит.

  • 4. В SP Flash Tool выполнить RAM Test. (Он покажет какой объём памяти используется в телефоне):
    4.1. Переходим В SP Flash Tool во вкладке <Download> нажимаем мышкой в пустом поле, ниже <Location> в таблице, где должно быть название файла с Preloader-ом.
    И выбираем наш родной Preloader, который только что вытащили (Рисунок 206)
    Рисунок 206:
    Прикрепленное изображение
    4.2. Очень внимательно читаем этот пункт, и тем более делаем!!!
    Далее переходим на вкладку <Memory Test>, убираем там все галочки, кроме <RAM Test> (Рисунок 207-1),
    Рисунок 207-1:
    Прикрепленное изображение
    нажимаем на старт. И подключаем полностью выключенный телефон к компьютеру.
    Должен пройти тест памяти, которая стоит в телефоне. Смотрим строчку:
    EMMC_PART_USER Size=0x................
    - там и есть полный объём памяти указанный в HEX. (Рисунок 207-2).
    Рисунок 207-2:
    Прикрепленное изображение

    Если у Вас платформа MT6757/MT6797 и вместо <RAM Test> выходит <DRAM Flip Test> (Рисунок 207-3).
    Рисунок 207-3:
    Прикрепленное изображение
    Тогда можно пойти по запасному пути: Считать первый мегабайт EMMC_USER, и указать его в WwR_MTK во вкладке <Автопилот>, программа проанализирует файл, и выдаст точную информацию о размере полной памяти в устройстве (Рисунок 207-4 и 207-5).
    Рисунок 207-4, 207-5:
    Прикрепленное изображение
    Прикрепленное изображение
    На данном примере используется разметка <GPT>, Она идёт в самом начале EMMC_USER, и в разделе PGPT есть информация о полном объёме памяти. В разметке MBR такой информации нет!!!

  • 5. В SP Flash Tool считать весь дамп памяти (Сделать полный бэкап прошивки из телефона):
    5.1. Теперь необходимо считать полный бэкап с телефона.
    5.2. Переходим на вкладку <ReadBack>, Нажимаем на кнопку <Add>. Появится ещё одна строчка в таблице ниже, так же щёлкаем по ней, и указываем место сохранения файла. Далее появляется выбор значений, по которым SP Flash Tool должен считать память с устройства. Выбираем:
    Type - HEX,
    Region: - EMMC_USER
    Start Address: - выбираем 0x0000000000000000, т.е самое начало,
    Lenght: - выбираем длину 0x................, которая у нас считалась в <RAM Test>
    (Например: 0x00000001d2000000, можно и так: 0x1d2000000, Нули спереди это для красоты и понятности, тоже самое что и 05 будет 5)
    5.3. Далее нажимаем <Ok> и <Read Back>. И полностью выключенный телефон подключаем к компьютеру. (Рисунок 208).
    Рисунок 208:
    Прикрепленное изображение
    5.4. Пойдёт процесс считывания полного дампа телефона. Процесс не быстрый. При удачном считывание должно выйти окошко с зеленым кружочком и галочкой (Рисунок 204).
    Рисунок 204:
    Прикрепленное изображение
Если всё прошло удачно, значит у вас есть полный ROM всей памяти устройства.

Если имеем представление об устройстве, есть scatter файл из стоковой (официальной) прошивки, в котором вы уверены, что именно это от вашего устройства:
При помощи SP Flash Tool, scatter файл имеется из стоковой прошивки
При помощи SP Flash Tool, scatter файл уже имеется.
Для этого нужно будет скачать программы: SP Flash Tool и WwR_MTK и конечно установить драйверы (VCOM) для телефона.
Желательно перед началом любых действий, зайти в Recovery на самом устройстве, там делать особо ничего не надо, просто когда заходите в него, если Recovery стоковый, он создаёт Log файл в кэше памяти устройства, который может пригодиться.
    Порядок действий такой:
  • 1. Подготовить scatter файл для полного считывания в SP Flash Tool.
  • 2. В SP Flash Tool считать ROM файл содержащий Preloader.
  • 3. В WwR_MTK вытащить родной Preloader.
  • 4. В SP Flash Tool выполнить RAM Test. (Он покажет какой объём памяти используется в телефоне)
  • 5. В SP Flash Tool считать весь дамп памяти (Сделать полный бэкап прошивки из телефона).

    Теперь более подробно:
  • 1. Подготовить scatter файл для полного считывания в SP Flash Tool:
    Необходимо открыть scatter файл текстовым редактором, желательно NotePad++ и удалить все строчки после первого раздела с Preloader. Сохранить отредактированный файл с другим названием, чтобы исключить перезапись стокового scatter файла (Рисунок 223)
    Рисунок 223:
    Прикрепленное изображение

  • 2. В SP Flash Tool вычитать хотя бы первый мегабайт данных из телефона:
    2.1. Далее в SP Flash Tool выбираем отредактированный пустой скаттер во вкладке <Download> в поле <Scatter-loading>, далее переходим во вкладку <ReadBack>, Нажимаем на кнопку <Add>. Появится новая строчка ниже. Кликаем на ней дважды и выбираем место сохранения так называемого ROM_0 блока.
    Нажимаем <Сохранить>, далее появляется выбор значений по которым SP Flash Tool должен считать память с устройства (телефона или планшета).
    Далее выбираем:
    Type - HEX
    Region: - EMMC_BOOT_1, (Если есть такой выбор), или EMMC_USER.
    Start Address: - выбираем 0x0000000000000000, т.е самое начало.
    Lenght: - выбираем 0x0000000000100000, т.е длину.
    Более подробно
    Обычно на новых платформах (MT67xx и MT6580) Preloader находится в EMMC_BOOT_1, а все остальные данные в EMMC_USER.
    Нам нужен регион с Preloader. Он обычно, находится в самом начале памяти телефона и не превышает размера в Мегабайт (Preloader больше чем 200 Кбайт я не видел).
    1 Мегабайт: 1048576 байт в десятиричной форме
    1 Мегабайт: 0x100000 в шестнадцатеричной форме
    (параметр 0x - указывает на то что, число представленно в шестнадцатеричной форме)
    Можно указать и:
    512 Кбайт: 0x80000
    256 Кбайт: 0x40000.
    Можно указать больше, чем есть, ничего страшного не случится.
    Поэтому в SP Flash Tool выбираем значения:
    где <Start Address:> - выбираем <0x0000000000000000>, т.е самое начало
    и длину: <Lenght:> - <0x0000000000100000>
    Далее нажимаем <Ok> и <Read Back>. И полностью выключенный телефон подключаем к компьютеру. (Рисунок 200, 201).
    Рисунок 200, если память в устройстве EMMC:
    Прикрепленное изображение
    Рисунок 201, если память в устройстве NAND:
    Прикрепленное изображение
    2.2. Если выйдет ошибка (Рисунок 202), значит вы используете scatter файл не от своего устройсва. Лучше всего воспользоваться инструкцией без scatter файла, которая находится выше.
    Рисунок 202:
    Прикрепленное изображение
    2.3. Если выйдет ошибка (Рисунок 203), значит вы используете scatter файл не от своего устройсва. Лучше всего воспользоваться инструкцией без scatter файла, которая находится выше.
    Рисунок 203:
    Прикрепленное изображение
    2.4. При удачном считывание должно выйти окошко с зеленым кружочком и галочкой (Рисунок 204).
    Рисунок 204:
    Прикрепленное изображение

  • 3. В WwR_MTK вытащить родной Preloader:
    3.1. Если ROM файл считался нормально, продолжаем: В WwR_MTK выбираем наш файл, в самом верху программы. Переходим на вкладку <Preloader>, нажимаем кнопочку <Анализ Preloader>. Смотрим информацию:
    Название Preloader, тип процессора, тип памяти, и возможность его вытащить из ROM файла (Рисунок 205).
    Рисунок 205:
    Прикрепленное изображение

    *** Замечание:
    ** На новых платформах (MT67xx и MT6580) в Preloader всегда указан именно этот тип процессора (MT6752), на него не стоит обращать внимание,
    ** На платформах MT65xx показывает правильно тип процессора.

    3.2. Нажимаем кнопочку <Вытащить Preloader и сохранить как..>, указываем место сохранения. - Теперь у Вас есть родной свой Preloader, который точно ничего не повредит.

  • 4. В SP Flash Tool выполнить RAM Test. (Он покажет какой объём памяти используется в телефоне):
    4.1. Переходим В SP Flash Tool во вкладке <Download> нажимаем мышкой в пустом поле, ниже <Location> в таблице, где должно быть название файла с Preloader-ом.
    И выбираем наш родной Preloader, который только что вытащили (Рисунок 206)
    Рисунок 206:
    Прикрепленное изображение
    4.2. Очень внимательно читаем этот пункт, и тем более делаем!!!
    Далее переходим на вкладку <Memory Test>, убираем там все галочки, кроме <RAM Test> (Рисунок 207-1),
    Рисунок 207-1:
    Прикрепленное изображение
    нажимаем на старт. И подключаем полностью выключенный телефон к компьютеру.
    Должен пройти тест памяти, которая стоит в телефоне. Смотрим строчку:
    EMMC_PART_USER Size=0x................
    - там и есть полный объём памяти указанный в HEX. (Рисунок 207-2).
    Рисунок 207-2:
    Прикрепленное изображение

    Если у Вас платформа MT6757/MT6797 и вместо <RAM Test> выходит <DRAM Flip Test> (Рисунок 207-3).
    Рисунок 207-3:
    Прикрепленное изображение
    Тогда можно пойти по запасному пути: Считать первый мегабайт EMMC_USER, и указать его в WwR_MTK во вкладке <Автопилот>, программа проанализирует файл, и выдаст точную информацию о размере полной памяти в устройстве (Рисунок 207-4 и 207-5).
    Рисунок 207-4, 207-5:
    Прикрепленное изображение
    Прикрепленное изображение
    На данном примере используется разметка <GPT>, Она идёт в самом начале EMMC_USER, и в разделе PGPT есть информация о полном объёме памяти. В разметке MBR такой информации нет!!!

  • 5. В SP Flash Tool считать весь дамп памяти (Сделать полный бэкап прошивки из телефона):
    5.1. Теперь необходимо считать полный бэкап с телефона.
    5.2. Переходим на вкладку <ReadBack>, Нажимаем на кнопку <Add>. Появится ещё одна строчка в таблице ниже, так же щёлкаем по ней, и указываем место сохранения файла. Далее появляется выбор значений, по которым SP Flash Tool должен считать память с устройства. Выбираем:
    Type - HEX,
    Region: - EMMC_USER
    Start Address: - выбираем 0x0000000000000000, т.е самое начало,
    Lenght: - выбираем длину 0x................, которая у нас считалась в <RAM Test>
    (Например: 0x00000001d2000000, можно и так: 0x1d2000000, Нули спереди это для красоты и понятности, тоже самое что и 05 будет 5)
    5.3. Далее нажимаем <Ok> и <Read Back>. И полностью выключенный телефон подключаем к компьютеру. (Рисунок 208).
    Рисунок 208:
    Прикрепленное изображение
    5.4. Пойдёт процесс считывания полного дампа телефона. Процесс не быстрый. При удачном считывание должно выйти окошко с зеленым кружочком и галочкой (Рисунок 204).
    Рисунок 204:
    Прикрепленное изображение
Если всё прошло удачно, значит у вас есть полный ROM всей памяти устройства.

Вот теперь необходимо вытащить из имеющихся ROM файлов(а) прошивку и создать scatter файл:
Создание scatter файла и извлечение разделов из ROM файла при помощи WwR_MTK
Автопилот в программе
    Необходимо выполнить:

  • В программе WwR_MTK во вкладке <Автопилот> нажимаем на кнопочку <Выбрать файл..> (синим цветом) и выбираем слитый ROM (EMMC_USER). Смотреть рисунок 213.
    Рисунок 213:
    Прикрепленное изображение
  • Программа сама выполнит поиск необходимой информации, и если найдёт таблицы PMT или PGPT, то выполнит все действия сама.
  • Если программа попросит файл, слитый регион памяти EMMC_BOOT_1, значит нужен, надо тоже выбрать. (Рисунок 214)
    Рисунок 214:
    Прикрепленное изображение
  • Ждём завершение всех процессов. И вникаем в написанное "Заключение" программы. Далее переходим во вкладку <Scatter файл> (Рисунок 215)
    Рисунок 215:
    Прикрепленное изображение
  • Далее снимаем флажки с разделов, которые вам не нужны (Обычно Cache, UserData (В разделе UserData содержится ваша личная информация - Фото, Видео и т.д)), и переходим обратно на вкладку <Автопилот> (Рисунок 216).
    Рисунок 216:
    Прикрепленное изображение
  • Там выбираем в пункте <4) Собрать прошивку:> Если нужно собрать прошивку: Разрезать ROM на разделы, создать Scatter файл, необходимо нажать на соответствующую кнопочку. Если нужен только Scatter файл соответственно кнопочку: <Создать Scatter файл..> (Рисунок 217). И дожидаемся завершение всех процессов.
    Рисунок 217:
    Прикрепленное изображение

    Программа WwR_MTK в режиме автопилота выполняет следующие действия:

    Если находит PGPT:
  • Проводит анализ на наличие preloader, и вызывает диалог выбора файла ROM (ROM_0 считанный регион EMMC_BOOT_1) содержащий preloader.
  • Проводит анализ preloader. Название preloader. Памяти. Возможность его вытащить из ROM_0.
  • Из раздела PGPT вытаскивает информацию о существующих разделах в ROM_1, название разделов позиция старта и длины.
  • Выполняет преобразование полученной информации о разделах, определяет какие разделы прошиваются, а какие нет (По шаблону).
  • Проводит переименование разделов в будущем scatter файле. (По шаблону).
  • Добавляет разделы которых нет в PGPT (Preloader, PGPT, SGPT).
  • Вычисляет полный размер памяти из информации в разделе PGPT.
  • Вычисляет разделы RESERVED (Разделы, которые не шьются в любом случае, но должны быть в scatter файле). Исправляет позиции старта и длины для них (FFFF0084 - например).
  • Определяет местоположение раздела LK.
  • Находит тип процессора в разделе LK.
  • Определяет на сколько считан ROM_1 файл, подготавливает ROM_1 файл к разделению на разделы, снимает флажочки с будущих разделов, которые не считанные.
    Собирает прошивку:
  • Создаёт scatter файл.
  • Разделяет ROM_1 файл на разделы.
  • Вытаскивает preloader.

    Если находит PMT:
  • Проводит анализ на наличие preloader, и вызывает диалог выбора файла ROM (ROM_0 считанный регион EMMC_BOOT_1) содержащий preloader.
  • Проводит анализ preloader. Название preloader. Памяти. Возможность его вытащить из ROM_0.
  • Из раздела PMT вытаскивает информацию о существующих разделах в ROM_1, название разделов позиция старта и длины.
  • Выполняет преобразование полученной информации о разделах, определяет какие разделы прошиваются, а какие нет (По шаблону).
  • Проводит переименование разделов в будущем scatter файле. (По шаблону).
  • Добавляет разделы которых нет в PMT (Preloader). Если есть необходимость.
  • Примерно вычисляет полный размер памяти исходя из длины всех разделов в прошивке.
  • Определяет местоположение раздела LK.
  • Находит тип процессора в разделе LK.
  • Определяет на сколько считан ROM_1 файл, подготавливает ROM_1 файл к разделению на разделы, снимает флажочки с будущих разделов, которые не считанные.
    Собирает прошивку:
  • Создаёт scatter файл.
  • Разделяет ROM_1 файл на разделы.
  • Вытаскивает preloader.

    Если находит Recovery_Log и нужную информацию о разделах прошивки:
  • Определяет нужную информацию о разделах прошивки, вытаскивает названия разделов, их позиции длины и старта.
  • Проводит анализ на соответствие найденных разделах и их стартах в ROM файле, если есть смещение, то вычисляет данное смещение.
  • Проводит анализ на наличие preloader, и вызывает диалог выбора файла ROM (ROM_0 считанный регион EMMC_BOOT_1) содержащий preloader.
  • Проводит анализ preloader. Название preloader. Памяти. Возможность его вытащить из ROM_0.
  • Выполняет преобразование полученной информации о разделах, определяет какие разделы прошиваются, а какие нет (По шаблону).
  • Проводит переименование разделов в будущем scatter файле. (По шаблону).
  • Добавляет разделы которых нет (например Preloader, если есть необходимость).
  • Примерно вычисляет полный размер памяти исходя из длины всех разделов в прошивке.
  • Определяет местоположение раздела LK.
  • Находит тип процессора в разделе LK.
  • Находит тип процессора в Recovery_Log, если такая информация там есть.
  • Определяет на сколько считан ROM_1 файл, подготавливает ROM_1 файл к разделению на разделы, снимает флажочки с будущих разделов, которые не считанные.
    Собирает прошивку:
  • Создаёт scatter файл.
  • Разделяет ROM_1 файл на разделы.
  • Вытаскивает preloader.

    Если находит Spare:
  • Автоматически исправляет его (Надо только указать папку для сохранения исправленного ROM). Тут же выбирает исправленный ROM файл и начинает сканирование заново.
    Что такое Spare:
    • В <SP Flash Tool> во вкладке <Memory Test> показывает что полная память устройства состовляет 512Мб (0х20000000 в HEX). А после его считывание, файл почему то становится больше на 16Мб - это и есть Spare, который не нужен. Его необходимо удалить. Делается это во вкладке: <Вырезка Spare>.
    • Для того, что бы <SP Flash Tool> считывал без этого <Spare>, нужно указать в параметрах считывания: <Read Page Only>.
    • Итак в программе WwR_MTK открываем вкладку <Вырезка Spare>, выбираем наверху файл считанный вместе со <Spare>, Нажимаем кнопочку <Вырезать и сохранить как..>, и дожидаемся завершение процесса (Рисунок 220)
      Рисунок 220:
      Прикрепленное изображение

    • Это пример <ROM> файла считанный вместе со <Spare>, открытый в HEX редакторе (Рисунок 221)
      Рисунок 221:
      Прикрепленное изображение

      *** Замечание: Программа WwR_MTK (версия 2.30 и выше) при любом сканирование определяет есть ли этот Spare в считанной прошивке или нет. Если есть, предлагает избавиться от него. Этот параметр считывание появляется, когда используется память <NAND>.
      ВНИМАНИЕ: Ещё надо знать размер блока считывания, он определяется по Scatter файлу (Мне известно что есть 0х20000 и 0х40000) от этого параметра зависит размерность блоков файловой системы UBIFS (Мои испытания на разность блоков этого параметра приводят к разным считанным ROM, т.е при сравнение - они РАЗНЫЕ, хотя считанные с одного и того же аппарата, и при чем ничего не менялось, даже аппарат не включался)
Полуавтоматический способ
    Необходимо выполнить:
  • В WwR_MTK выполнить сканирование дампа ROM с целью нахождения разделов (PMT, PGPT, SGPT).
    Если найдены разделы PMT, PGPT, SGPT:
  • Создание scatter файла.
  • Разделение ROM файла на разделы.
  • Использовать по назначению. (Монтирование разделов, извлечение нужных вам данных, и.т.д)

    Теперь подробнее:

  • Поиск разделов:
    Открываем программу WwR_MTK, выбираем наш полный бэкап (файл ROM_1) переходим на вкладку <Поиск разделов>, там нажимаем кнопочку <Начать сканирование> и ждём пока программа найдёт разделы PGPT или PMT,
    Затем можно остановить поиск кнопкой <Остановить> или дождаться конца процесса. Далее дважды щёлкнуть на синей надписи: <Есть!!! Найдена таблица разделов ...> и таблица разделов откроется в понятном виде.
    После этого активируется кнопка <Скопировать значения в - Scatter файл>, нажимаем на неё. Программа сама найдёт раздел LK (UBOOT) и вычитает достоверную информацию о типе процессора.
    И переходим на вкладку <Scatter файл>. (Рисунок 209), Старое название этой вкладки - <Разрезать ROM>
    Рисунок 209:
    Прикрепленное изображение

    Теперь имеем список всех разделов в понятном для восприятия виде (Рисунок 211).
    Рисунок 211:
    Прикрепленное изображение

  • Необходимо выполнить преобразование разделов RESERVED их стартовые адреса в нужные, от конца, а не от начала.
    То есть, если стартовый адрес указан в виде 0xFFFF0084 - то это от конца ROM файла. То есть FFFF - это типа минус. Для того, чтобы вычислить минусовое значение, необходимо знать и указать полный объём памяти.
    Сейчас он вычисляется автоматически, исходя из раздела PGPT. В Разделе PMT данной информации нет, так что придётся вручную вводить полный объём памяти, исходя из информации SP Flash Tool. (т.е смотреть Рисунок 207).
  • Также необходимо выполнить переименование названия разделов. Для этого тыкаем правой кнопкой мыши на таблице и выбираем <Переименовать названия разделов..> (Рисунок 219)
    *** Замечание: Если этот пункт проходит с ошибкой, то ошибка возникает только на новых платформах MT67xx. Всё дело в том, что там идёт разделение памяти на EMMC_BOOT_1, EMMC_BOOT_2, EMMC_RPMB, EMMC_USER. Все данные хранятся в EMMC_USER, а Preloader находится в EMMC_BOOT_1, а так как образ выбран EMMC_USER, то соответственно там нет Preloader, надо просто вручную указать на Preloader, который уже вытащили (т.е дважды щёлкнуть по полю и выбрать ранее вытащенный Preloader. (Рисунок 219))
    Рисунок 219:
    Прикрепленное изображение

  • Необходимо выполнить ещё проверку на EXT4_IMG. Для этого тыкаем правой кнопкой мыши на таблице и выбираем <Проверки> -> <Проверка на EXT4_IMG>.
    Программа смотрит ROM в начало стартов всех разделов и определяет раздел на файловую систему: EXT4_IMG, UBI_IMG, NORMAL_ROM.
  • Создание scatter файла:
    Создаём scatter файл:
    Открываем вкладочку: <Scatter первой версии:>, нажимаем кнопочку <Создать Scatter файл>, выбираем как называется и сохраняем.
    Если кнопка не активна, тогда:
    Открываем вкладочку: <Scatter второй версии:>, Проверяем правильно ли программа определила платформу (если не правильно, то исправляем).
    Нажимаем кнопочку <Создать Scatter файл>, выбираем как называется и сохраняем.
  • Разделение ROM файла на разделы:
    Теперь необходимо разделить ROM файл на разделы, для этого открываем вкладочку <Разрезать ROM> и нажимаем кнопочку <Разрезать ROM в папку>, выбираем место сохранения и дожидаемся завершение процесса разделения.
  • Использовать по назначению. (Монтирование разделов, извлечение нужных вам данных, и.т.д)
    На Ваш выбор, другими программами. :)

Если устройство включается:
Если устройство включается, root прав нет
Если телефон включается и Root прав нет
Итак для этого нам будет нужно подключить включенное устройство к ПК, установить необходимые драйвера (VCOM) для телефона, и скачать программу WwR_MTK
Желательно перед началом любых действий, зайти в Recovery на самом устройстве, там делать особо ничего не надо, просто когда заходите в него, если Recovery стоковый, он создаёт Log файл в кэше памяти устройства, который может пригодиться.
    Порядок действий такой:
  • 1. В устройстве необходимо активировать режим разработчика. В режиме разработчика включить <Отладка USB>. Подтвердить соединение ПК с устройством, на самом устройстве.
  • 2. В программе WwR_MTK получить информацию об устройстве.
  • 3. Создать пустой scatter файл.
  • 4. В SP Flash Tool считать блок содержащий Preloader.
  • 5. В SP Flash Tool считать весь дамп памяти (Сделать полный бэкап прошивки из телефона).
  • 6. В программе WwR_MTK создать scatter файл, создать прошивку.

    Внимание!!! Данный способ применим к устройствам только на MTK платформе. И имеющим таблицу разделов: Dumchar_info или Partinfo! Будьте Внимательны. Пункт 2.1. данной инструкции, т.е ниже

    Теперь более подробно:
  • 1. В устройстве необходимо активировать режим разработчика:
    1.1. Почти все знают как это можно сделать, в каждом устройстве это делается по разному, всё зависит от версии Android. Так что лучше будет, если вы прочитаете в профильной теме по своему устройству.
    Или вот например: Для того, чтобы активировать режим разработчика перейдите в: "Настройки" - "О телефоне" - 7 раз нажмите на номер сборки. В настройках для разработчиков активируйте отладку по USB. При подключении USB-кабеля выбираем Только зарядка.
    1.2. При удачном соединение ПК с устройством, на устройстве появится запрос на действия с ПК, необходимо подтвердить.
  • 2. В программе WwR_MTK получить информацию об устройстве:
    2.1. В программе WwR_MTK открыть вкладку <ADB>, нажать на кнопку <Подключить>. Если драйвера были установлены правильно, то программа увидит устройство и выдаст информацию о нём.
    Повторюсь ещё раз: данный способ применим только к устройствам на платформе MTK и имеющие таблицу разделов Dumchar_info и Partinfo. Вот тут посмотреть есть ли таблица разделов (Рисунок 224).
    Рисунок_224
    Прикрепленное изображение

  • 3. Создать пустой scatter файл:
    3.1. Перейти на вкладку <Автопилот> или <Пустой Scatter файл>, убедиться, что тип платформы выбран правильно, далее нажать на кнопку <Создать и сохранить как..> (В <Автопилоте> это первый пункт).
  • 4. В SP Flash Tool считать блок содержащий Preloader.:
    4.1. Для этого в SP Flash Tool выбираем этот пустой scatter файл во вкладке <Download> в поле <Scatter-loading>, далее переходим во вкладку <ReadBack>, Нажимаем на кнопку <Add>. Появится новая строчка ниже. Кликаем на ней дважды и выбираем место сохранения так называемого ROM_0 блока.
    Нажимаем <Сохранить>, далее появляется выбор значений по которым SP Flash Tool должен считать память с устройства (телефона или планшета).
    Далее выбираем для EMMC_BOOT_1:
    Type - HEX
    Region: - EMMC_BOOT_1, (Если есть такой выбор), или EMMC_USER.
    Start Address: - выбираем 0x0000000000000000, т.е самое начало.
    Lenght: - выбираем 0x0000000000100000, т.е длину.
    Более подробно
    Обычно на новых платформах (MT67xx и MT6580) Preloader находится в EMMC_BOOT_1, а все остальные данные в EMMC_USER.
    Нам нужен регион с Preloader. Он обычно, находится в самом начале памяти телефона и не превышает размера в Мегабайт (Preloader больше чем 200 Кбайт я не видел).
    1 Мегабайт: 1048576 байт в десятиричной форме
    1 Мегабайт: 0x100000 в шестнадцатеричной форме
    (параметр 0x - указывает на то что, число представленно в шестнадцатеричной форме)
    Можно указать и:
    512 Кбайт: 0x80000
    256 Кбайт: 0x40000.
    Можно указать больше, чем есть, ничего страшного не случится.
    Поэтому в SP Flash Tool выбираем значения:
    где <Start Address:> - выбираем <0x0000000000000000>, т.е самое начало
    и длину: <Lenght:> - <0x0000000000100000>
    Далее нажимаем <Ok> и <Read Back>. И полностью выключенный телефон подключаем к компьютеру. (Рисунок 200, 201).
    Рисунок 200, если память в устройстве EMMC:
    Прикрепленное изображение
    Рисунок 201, если память в устройстве NAND:
    Прикрепленное изображение
    4.2. Если выйдет ошибка (Рисунок 202), значит меняем в WwR_MTK тип процессора, на который показал SP Flash Tool. Повторяем действия с пункта 4.1.
    Рисунок 202:
    Прикрепленное изображение
    4.3. Если выйдет ошибка (Рисунок 203), значит меняем в WwR_MTK тип памяти, на который показал SP Flash Tool. Повторяем действия с пункта 4.1.
    Рисунок 203:
    Прикрепленное изображение
    4.4. При удачном считывание должно выйти окошко с зеленым кружочком и галочкой (Рисунок 204).
    Рисунок 204:
    Прикрепленное изображение

  • 5. В SP Flash Tool считать весь дамп памяти (Сделать полный бэкап прошивки из телефона):
    5.1. Теперь необходимо считать полный бэкап с телефона.
    5.2. Желательно на вкладке <ReadBack> убрать флажок с ROM_0.
    5.3. Переходим на вкладку <ReadBack>, Нажимаем на кнопку <Add>. Появится ещё одна строчка в таблице ниже, так же щёлкаем по ней, и указываем место сохранения файла. Далее появляется выбор значений, по которым SP Flash Tool должен считать память с устройства. Выбираем:
    Type - HEX,
    Region: - EMMC_USER
    Start Address: - выбираем 0x0000000000000000, т.е самое начало,
    Lenght: - выбираем длину 0x................, которая у нас считалась в WwR_MTK во вкладке <ADB>, в информационном поле: <Полная память ROM: 0x1D2000000 (7456 МБ)>. Смотреть Рисунок 225.
    Рисунок 225:
    Прикрепленное изображение
    5.4. Далее нажимаем <Ok> и <Read Back>. И полностью выключенный телефон подключаем к компьютеру. (Рисунок 208-1).
    Рисунок 208-1:
    Прикрепленное изображение
    5.5. Пойдёт процесс считывания полного дампа телефона. Процесс не быстрый. При удачном считывание должно выйти окошко с зеленым кружочком и галочкой (Рисунок 204).
    Рисунок 204:
    Прикрепленное изображение

  • 6. В программе WwR_MTK создать scatter файл, создать прошивку:
  • 6.1. Вариант 1: Выбрать файл ROM_1 (EMMC_USER) в <Автопилоте>, инструкция есть выше:
  • 6.2. Вариант 2: Если есть таблица разделов (Рисунок 226).
    Рисунок 226:
    Прикрепленное изображение
    Можно создать scatter файл, выбрать ROM файл и создать прошивку:
    • Для этого во вкладке <ADB> есть вкладка <Список разделов, собрать прошивку> - заходим туда. Нажимаем кнопку <Список разделов (Dumchar_info)> или <Список разделов (Partinfo)>.
    • Если всё нормально, то вы окажитесь на вкладке <Scatter файл>, если есть необходимость сохранить только определённые разделы, то необходимо снять флажки с разделов, которые вам не нужны. Затем вернуться обратно во вкладку <ADB>.
    • Далее нажимаем кнопку <Выбрать ROM из SPFT> и выбираем ROM_1 (EMMC_USER), если программа запросит файл с EMMC_BOOT_1, указываем ROM_0 содержащий Preloader. Программа выполнит все необходимые действия.
    • Далее нажимаем кнопку <Собрать прошивку (Бэкап)> выбрать папку для сохранения и дождаться завершение работы программы.
Если всё прошло удачно, значит у вас есть полный ROM всей памяти устройства. Собранная прошивка, в ней scatter файл и все остальные разделы.

Следующий способ вообще отдельная инструкция, т.к снять бэкап разделов можно с любых устройств, имеющих Root права:
Если устройство у вас на платформе MTK, и не одна из инструкций выше не помогли собрать прошивку, или по каким-то причинам не может работать с программой SP Flash Tool.
Если не MTK, то можно выполнить бэкап разделов, для чего они вам и как вы их будете использовать мне всё равно. Каждый решает сам. На данный момент речь идёт о бэкапе.
Если у меня появится информация, как можно в дальнейшем использовать бэкап от других платформ. Я дополню инструцию и возможно дополню программу.
Если устройство включается, root права есть
Если телефон включается и Root права есть
Итак для этого нам будет нужно подключить включенное устройство к ПК, установить необходимые драйвера (VCOM) для телефона, и скачать программу WwR_MTK
Желательно перед началом любых действий, зайти в Recovery на самом устройстве, там делать особо ничего не надо, просто когда заходите в него, если Recovery стоковый, он создаёт Log файл в кэше памяти устройства, который может пригодиться.
И ещё вставить flash память, подойдёт любой размер даже 128 Мегабайт.
    Порядок действий такой:
  • 1. В устройстве необходимо активировать режим разработчика. В режиме разработчика включить <Отладка USB>. Подтвердить соединение ПК с устройством, на самом устройстве.
  • 2. В программе WwR_MTK получить информацию об устройстве.
  • 3. В программе WwR_MTK выполнить бэкап нужных разделов.

    Теперь более подробно:
  • 1. В устройстве необходимо активировать режим разработчика:
    1.1. Почти все знают как это можно сделать, в каждом устройстве это делается по разному, всё зависит от версии Android. Так что лучше будет, если вы прочитаете в профильной теме по своему устройству.
    Или вот например: Для того, чтобы активировать режим разработчика перейдите в: "Настройки" - "О телефоне" - 7 раз нажмите на номер сборки. В настройках для разработчиков активируйте отладку по USB. При подключении USB-кабеля выбираем Только зарядка.
    1.2. При удачном соединение ПК с устройством, на устройстве появится запрос на действия с ПК, необходимо подтвердить.
  • 2. В программе WwR_MTK получить информацию об устройстве:
    2.1. В программе WwR_MTK открыть вкладку <ADB>, нажать на кнопку <Подключить>. Если драйвера были установлены правильно, то программа увидит устройство и выдаст информацию о нём (Рисунок 224).
    Рисунок_224
    Прикрепленное изображение

  • 3. В программе WwR_MTK выполнить бэкап нужных разделов:
    3.1. Выбираем вкладку <Резервное копирование>, убеждаемся о наличие действующих root прав.
    3.2. Если ничего не понимаем, для чего нужен <Размер буфера> и <Место сохранение буфера> - то лучше оставить как выбрала сама программа.
    Подробно
    Размер буфера нужен для считывания блоков из устройства в размер этого буфера, т.е например: если размер System будет 800Мб, а размер буфера будет 16Мб, то программа вычитает 50 блоков из раздела System и объединит в один раздел.
    Это нужно для того, чтобы пользователь не думал, что программа зависла. И чтобы сама программа тоже не думала, что она висит.
    Место сохранение буфера лучше выбирать flash накопитель, в системе он почти всегда идёт как: /sdcard. Если флешки не нашлось под рукой, обычно используется встроенная память устройства

    3.3. Выбор метода: Программа сама выбирает более нормальный метод, так что лучше оставить тот метод, который выбрался по умолчанию.
    3.4. Нажимаем кнопочку <Подготовить и проверить..>, Программа всё сделает автоматически, далее должна открыться вкладка <Scatter файл> с названиями разделов, их позиции старта и длины, а так же их доступности для сохранения.
    3.5. Далее снимаем флажки с разделов, которые не нужны для бэкапа.
    3.6. Переходим на вкладку <ADB> и нажимаем на кнопочку <Выбрать папку и начать..>, Выбираем место сохранение бэкапа, желательно пустую папку, и ждём завершение работы по сохранению.
    3.7. Если устройство на платформе MTK, необходимо сохранить scatter файл. Автоматически пока этого не делается. Так что, необходимо зайти на вкладку <Scatter файл>.
    Открываем вкладочку: <Scatter первой версии:>, нажимаем кнопочку <Создать Scatter файл>, выбираем как называется и сохраняем.
    Если кнопка не активна, тогда:
    Открываем вкладочку: <Scatter второй версии:>, Проверяем правильно ли программа определила платформу (если не правильно, то исправляем).
    Нажимаем кнопочку <Создать Scatter файл>, выбираем как называется и сохраняем.

    Теперь более подробно о методах по резервному копированию:
    Метод 1 (Dumchar_info)
    Для этого метода обязательно выполнение в ADB следующих команд:
    • 1. Dumchar_info. Исходя из этой информации программа знает с какой позиции начинать копирование, размер разделов и к какому блоку принадлежит раздел:
      >>adb shell cat /proc/dumchar_info
      Part_Name Size StartAddr Type MapTo
      preloader 0x0000000000600000 0x0000000000000000 2 /dev/misc-sd
      mbr 0x0000000000080000 0x0000000000000000 2 /dev/block/mmcblk0
      ebr1 0x0000000000080000 0x0000000000080000 2 /dev/block/mmcblk0p1
      pmt 0x0000000000400000 0x0000000000100000 2 /dev/block/mmcblk0
      pro_info 0x0000000000300000 0x0000000000500000 2 /dev/block/mmcblk0
      nvram 0x0000000000500000 0x0000000000800000 2 /dev/block/mmcblk0
      protect_f 0x0000000000a00000 0x0000000000d00000 2 /dev/block/mmcblk0p2
      protect_s 0x0000000000a00000 0x0000000001700000 2 /dev/block/mmcblk0p3
      seccfg 0x0000000000020000 0x0000000002100000 2 /dev/block/mmcblk0
      uboot 0x0000000000060000 0x0000000002120000 2 /dev/block/mmcblk0
      bootimg 0x0000000000600000 0x0000000002180000 2 /dev/block/mmcblk0
      recovery 0x0000000000600000 0x0000000002780000 2 /dev/block/mmcblk0
      sec_ro 0x0000000000600000 0x0000000002d80000 2 /dev/block/mmcblk0p4
      misc 0x0000000000080000 0x0000000003380000 2 /dev/block/mmcblk0
      logo 0x0000000000300000 0x0000000003400000 2 /dev/block/mmcblk0
      ebr2 0x0000000000080000 0x0000000003700000 2 /dev/block/mmcblk0
      expdb 0x0000000000a00000 0x0000000003780000 2 /dev/block/mmcblk0
      android 0x0000000028a00000 0x0000000004180000 2 /dev/block/mmcblk0p5
      cache 0x0000000007e00000 0x000000002cb80000 2 /dev/block/mmcblk0p6
      usrdata 0x0000000040000000 0x0000000034980000 2 /dev/block/mmcblk0p7
      fat 0x0000000071180000 0x0000000074980000 2 /dev/block/mmcblk0p8
      bmtpool 0x0000000001500000 0x00000000ff9f00a8 2 /dev/block/mmcblk0
      Part_Name:Partition name you should open;
      Size:size of partition
      StartAddr:Start Address of partition;
      Type:Type of partition(MTD=1,EMMC=2)
      MapTo:actual device you operate

    • 2. Getprop. Вывод этой информации помогает программе узнать, что за платформа используется. И применить это.
      >>adb shell getprop
      [curlockscreen]: [1]
      [dalvik.vm.heapgrowthlimit]: [128m]
      [dalvik.vm.heapsize]: [256m]
      [dalvik.vm.mtk-stack-trace-file]: [/data/anr/mtk_traces.txt]
      [dalvik.vm.stack-trace-file]: [/data/anr/traces.txt]
      [debug.MB.running]: [0]
      [debug.log2sd.defaultpath]: [/mnt/sdcard]
      [debug.mtklog.netlog.Running]: [0]
      [dev.bootcomplete]: [1]
      [dhcp.ipv6.wlan0.dns1]: [fe80::1]
      [dhcp.ipv6.wlan0.dns2]: []
      [dhcp.ipv6.wlan0.ipaddress]: []
      [dhcp.ipv6.wlan0.leasetime]: []
      [dhcp.ipv6.wlan0.reason]: [INFOREQ]
      [dhcp.ipv6.wlan0.result]: [ok]
      [dhcp.wlan0.dns1]: [192.168.1.1]
      [dhcp.wlan0.dns2]: []
      [dhcp.wlan0.dns3]: []
      [dhcp.wlan0.dns4]: []
      [dhcp.wlan0.gateway]: [192.168.1.1]
      [dhcp.wlan0.ipaddress]: [192.168.1.151]
      [dhcp.wlan0.leasetime]: [86400]
      [dhcp.wlan0.mask]: [255.255.255.0]
      [dhcp.wlan0.pid]: [930]
      [dhcp.wlan0.reason]: [REBOOT]
      [dhcp.wlan0.result]: [ok]
      [dhcp.wlan0.server]: [192.168.1.1]
      [dhcp.wlan0.vendorInfo]: []
      [drm.service.enabled]: [true]
      [external_sd_path]: [/storage/sdcard1]
      [fmradio.driver.chip]: [3]
      [fmradio.driver.enable]: [1]
      [gps.solution.combo.chip]: [1]
      [gsm.3gswitch]: [1]
      [gsm.baseband.capability2]: [3]
      [gsm.baseband.capability]: [55]
      [gsm.current.phone-type]: [1]
      [gsm.gcf.testmode]: [0]
      [gsm.network.type]: [unknown]
      [gsm.operator.alpha.2]: []
      [gsm.operator.alpha]: []
      [gsm.operator.iso-country.2]: []
      [gsm.operator.iso-country]: []
      [gsm.operator.isroaming.2]: [false]
      [gsm.operator.isroaming]: [false]
      [gsm.operator.numeric.2]: []
      [gsm.operator.numeric]: []
      [gsm.phone.created]: [true]
      [gsm.project.baseband.2]: [HEDY89_WE_JB2_MD1_HSPA_HW(DEFAULT)]
      [gsm.project.baseband]: [HEDY89_WE_JB2_MD1_HSPA_HW(DEFAULT)]
      [gsm.roaming.indicator.needed.2]: [false]
      [gsm.roaming.indicator.needed]: [false]
      [gsm.serial]: [ 10]
      [gsm.sim.inserted]: [0]
      [gsm.sim.ril.phbready.2]: [true]
      [gsm.sim.ril.phbready]: [false]
      [gsm.sim.state.2]: [ABSENT]
      [gsm.sim.state]: [ABSENT]
      [gsm.siminfo.ready]: [true]
      [gsm.version.baseband]: [MOLY.WR8.W1248.MD.WG.MP.V6, 2013/05/08 11:19]
      [gsm.version.ril-impl]: [mtk gemini ril 1.0]
      [init.svc.662x_launcher]: [running]
      [init.svc.DMAgent]: [running]
      [init.svc.GoogleOtaAgent]: [running]
      [init.svc.NvRAMAgent]: [running]
      [init.svc.adbd]: [running]
      [init.svc.agpsd]: [running]
      [init.svc.bootanim]: [stopped]
      [init.svc.bootlogoupdater]: [stopped]
      [init.svc.ccci2_fsd]: [stopped]
      [init.svc.ccci2_mdinit]: [stopped]
      [init.svc.ccci_fsd]: [running]
      [init.svc.ccci_mdinit]: [running]
      [init.svc.dbus]: [running]
      [init.svc.debuggerd]: [running]
      [init.svc.dhcp6cDNS_wlan0]: [running]
      [init.svc.dhcpcd_wlan0]: [running]
      [init.svc.dpfd]: [running]
      [init.svc.drm]: [running]
      [init.svc.flash_recovery]: [stopped]
      [init.svc.gsm0710muxd]: [running]
      [init.svc.hald]: [running]
      [init.svc.installd]: [running]
      [init.svc.keystore]: [running]
      [init.svc.matv]: [running]
      [init.svc.mdlogger]: [running]
      [init.svc.media]: [running]
      [init.svc.mobile_log_d]: [running]
      [init.svc.msensord]: [stopped]
      [init.svc.mtkGD]: [running]
      [init.svc.mtkbt]: [running]
      [init.svc.netd]: [running]
      [init.svc.netdiag]: [running]
      [init.svc.nvram_daemon]: [stopped]
      [init.svc.p2p_supplicant]: [running]
      [init.svc.permission_check]: [stopped]
      [init.svc.poad]: [stopped]
      [init.svc.pq]: [stopped]
      [init.svc.pvrsrvctl]: [stopped]
      [init.svc.ril-daemon]: [running]
      [init.svc.sbchk]: [stopped]
      [init.svc.servicemanager]: [running]
      [init.svc.stp_dump]: [running]
      [init.svc.surfaceflinger]: [running]
      [init.svc.thermal]: [running]
      [init.svc.thermal_manager]: [stopped]
      [init.svc.ueventd]: [running]
      [init.svc.vold]: [running]
      [init.svc.vtservice]: [running]
      [init.svc.wlanLoader]: [stopped]
      [init.svc.xlogboot]: [stopped]
      [init.svc.xlogdebugchanged]: [stopped]
      [init.svc.zygote]: [running]
      [internal_sd_path]: [/storage/sdcard0]
      [launcher2.allappsgrid]: [3d_20]
      [launcherplus.allappsgrid]: [2d]
      [mediatek.wlan.chip]: [MT6628]
      [mediatek.wlan.ctia]: [0]
      [mediatek.wlan.module.postfix]: [_mt6628]
      [mux.report.case]: [0]
      [net.bt.name]: [Android]
      [net.change]: [net.dnschange]
      [net.dns1]: [192.168.1.1]
      [net.dnschange]: [2]
      [net.hostname]: [android-c17da8d956f3a9f8]
      [net.ipv6.dns1]: [fe80::928d:78ff:fe0a:7480]
      [net.qtaguid_enabled]: [1]
      [net.tcp.buffersize.default]: [4096,87380,110208,4096,16384,110208]
      [net.tcp.buffersize.edge]: [4093,26280,35040,4096,16384,35040]
      [net.tcp.buffersize.evdo]: [4094,87380,262144,4096,16384,262144]
      [net.tcp.buffersize.gprs]: [4092,8760,11680,4096,8760,11680]
      [net.tcp.buffersize.hsdpa]: [4094,87380,262144,4096,16384,262144]
      [net.tcp.buffersize.hspa]: [4094,87380,262144,4096,16384,262144]
      [net.tcp.buffersize.hspap]: [4094,87380,1220608,4096,16384,1220608]
      [net.tcp.buffersize.hsupa]: [4094,87380,262144,4096,16384,262144]
      [net.tcp.buffersize.lte]: [524288,1048576,2097152,262144,524288,1048576]
      [net.tcp.buffersize.umts]: [4094,87380,110208,4096,16384,110208]
      [net.tcp.buffersize.wifi]: [524288,1048576,2097152,262144,524288,1048576]
      [net.wlan0.dns1]: [49.0.0.0]
      [net.wlan0.dns2]: []
      [nvram_init]: [Ready]
      [persist.first_boot]: [0]
      [persist.mtk.aee.aed]: [on]
      [persist.mtk.wcn.combo.chipid]: [0x6628]
      [persist.radio.default_sim]: [0]
      [persist.radio.default_sim_mode]: [12]
      [persist.radio.fd.counter]: [15]
      [persist.radio.fd.off.counter]: [5]
      [persist.radio.fd.off.r8.counter]: [5]
      [persist.radio.fd.r8.counter]: [15]
      [persist.service.acm.enable]: []
      [persist.service.adb.enable]: []
      [persist.sys.country]: [RU]
      [persist.sys.first_time_boot]: [false]
      [persist.sys.language]: [ru]
      [persist.sys.launcher-reset]: [2]
      [persist.sys.localevar]: []
      [persist.sys.mute.state]: [2]
      [persist.sys.profiler_ms]: [0]
      [persist.sys.screen.size]: [800x480]
      [persist.sys.sd.defaultpath]: [/storage/sdcard0]
      [persist.sys.timezone]: [Asia/Shanghai]
      [persist.sys.usb.config]: [mass_storage,adb]
      [ril.current.share_modem]: [2]
      [ril.external.md]: [0]
      [ril.fd.mode]: [1]
      [ril.first.md]: [1]
      [ril.flightmode.poweroffMD]: [1]
      [ril.iccid.sim1]: [N/A]
      [ril.iccid.sim2]: [N/A]
      [ril.radiooff.poweroffMD]: [0]
      [ril.ready.sim]: [false]
      [ril.specific.sm_cause]: [0]
      [ril.telephony.mode]: [1]
      [rild.libargs]: [-d /dev/ttyC0]
      [rild.libpath]: [/system/lib/mtk-ril.so]
      [ro.allow.mock.location]: [0]
      [ro.audio.silent]: [0]
      [ro.baseband]: [unknown]
      [ro.board.platform]: [exynos5]
      [ro.boot.serialno]: [0123456789ABCDEF]
      [ro.bootloader]: [unknown]
      [ro.bootmode]: [unknown]
      [ro.build.characteristics]: [default]
      [ro.build.date.utc]: [1373287134]
      [ro.build.date]: [2013年 07月 08日 星期一 20:38:54 CST]
      [ro.build.description]: [ja3gzs-user 4.2.2 JDQ39 I9500ZSUAMDE release-keys]
      [ro.build.display.id]: [JDQ39.I9500ZSUAMDF]
      [ro.build.fingerprint]: [samsung/ja3gzs/ja3g:4.2.2/JDQ39/I9500ZSUAMDE:user/release-keys]
      [ro.build.flavor]: []
      [ro.build.host]: [SEP-92]
      [ro.build.id]: [JDQ39]
      [ro.build.product]: [ja3gzs]
      [ro.build.tags]: [test-keys]
      [ro.build.type]: [user]
      [ro.build.user]: [se.infra]
      [ro.build.version.codename]: [REL]
      [ro.build.version.incremental]: [I9500ZSUAMDF]
      [ro.build.version.release]: [4.2.9]
      [ro.build.version.sdk]: [17]
      [ro.camera.sound.forced]: [0]
      [ro.config.alarm_alert]: [Good_Morning.ogg]
      [ro.config.notification_sound]: [S_Whistle.ogg]
      [ro.config.ringtone]: [S_Over_the_horizon.ogg]
      [ro.crypto.fs_flags]: [0x00000406]
      [ro.crypto.fs_mnt_point]: [/data]
      [ro.crypto.fs_options]: [noauto_da_alloc,discard]
      [ro.crypto.fs_real_blkdev]: [/emmc@usrdata]
      [ro.crypto.fs_type]: [ext4]
      [ro.crypto.state]: [unencrypted]
      [ro.custom.build.version]: [I9868.I9868.02.02.A.A-V05.3-0708]
      [ro.debuggable]: [0]
      [ro.factorytest]: [0]
      [ro.hardware]: [universal5410]
      [ro.mediatek.chip_ver]: [S01]
      [ro.mediatek.gemini_support]: [true]
      [ro.mediatek.platform]: [MT6589]
      [ro.mediatek.version.branch]: [ALPS.JB2.MP]
      [ro.mediatek.version.release]: [ALPS.JB2.MP.V1.2]
      [ro.mediatek.wlan.p2p]: [1]
      [ro.mediatek.wlan.wsc]: [1]
      [ro.mount.fs]: [EXT4]
      [ro.mtprof.disable]: [1]
      [ro.opengles.version]: [131072]
      [ro.product.board]: [smdk4x12]
      [ro.product.brand]: [samsung]
      [ro.product.cpu.abi2]: [armeabi]
      [ro.product.cpu.abi]: [armeabi-v7a]
      [ro.product.device]: [t03g]
      [ro.product.locale.language]: [en]
      [ro.product.locale.region]: [US]
      [ro.product.manufacturer]: [samsung]
      [ro.product.model]: [GT-I9500]
      [ro.product.name]: [t03gzs]
      [ro.revision]: [0]
      [ro.runtime.firstboot]: [1522389798976]
      [ro.secure]: [1]
      [ro.serialno]: [0123456789ABCDEF]
      [ro.sf.hwrotation]: [0]
      [ro.sf.lcd_density]: [240]
      [ro.sys.usb.bicr]: [yes]
      [ro.sys.usb.charging.only]: [yes]
      [ro.sys.usb.mtp.whql.enable]: [0]
      [ro.sys.usb.storage.type]: [mtp,mass_storage]
      [ro.wifi.channels]: []
      [ro.zygote.preload.enable]: [0]
      [service.bootanim.exit]: [1]
      [supolicy.loaded]: [1]
      [sys.boot.reason]: [0]
      [sys.boot_completed]: [1]
      [sys.ipo.pwrdncap]: [2]
      [sys.ipowin.done]: [1]
      [sys.settings_system_version]: [2]
      [sys.usb.config]: [mass_storage,adb]
      [sys.usb.state]: [mass_storage,adb]
      [sys.usb.vid]: [0BB4]
      [system_init.startsurfaceflinger]: [0]
      [vold.post_fs_data_done]: [1]
      [vold_swap_state]: [0]
      [wifi.direct.interface]: [p2p0]
      [wifi.interface]: [wlan0]
      [wifi.tethering.interface]: [ap0]
      [wlan.driver.status]: [ok]

    • 3. Далее программа проверяет каждый раздел на доступность:
      >>adb shell ls -l /dev/preloader
      crw-r----- root system 234, 0 2018-03-30 14:02 preloader

      >>adb shell ls -l /dev/mbr
      crw------- root root 234, 1 2018-03-30 14:02 mbr

      >>adb shell ls -l /dev/block/mmcblk0p1
      brw------- root root 179, 1 2018-03-30 14:02 mmcblk0p1

      >>adb shell ls -l /dev/pmt
      crw------- root root 234, 3 2018-03-30 14:02 pmt

      >>adb shell ls -l /dev/pro_info
      crw-rw---- root system 234, 4 2018-03-30 14:02 pro_info

      >>adb shell ls -l /dev/nvram
      crw-rw---- root system 234, 5 2018-03-30 14:02 nvram

      >>adb shell ls -l /dev/block/mmcblk0p2
      brw-r----- root system 179, 2 2018-03-30 14:02 mmcblk0p2

      >>adb shell ls -l /dev/block/mmcblk0p3
      brw------- root root 179, 3 2018-03-30 14:02 mmcblk0p3

      >>adb shell ls -l /dev/seccfg
      crw-rw---- root system 234, 8 2018-03-30 14:02 seccfg

      >>adb shell ls -l /dev/uboot
      crw------- root root 234, 9 2018-03-30 14:02 uboot

      >>adb shell ls -l /dev/bootimg
      crw-r----- root system 234, 10 2018-03-30 14:02 bootimg

      >>adb shell ls -l /dev/recovery
      crw-r----- root system 234, 11 2018-03-30 14:02 recovery

      >>adb shell ls -l /dev/block/mmcblk0p4
      brw------- root root 179, 4 2018-03-30 14:02 mmcblk0p4

      >>adb shell ls -l /dev/misc
      crw-rw---- root system 234, 13 2018-03-30 14:02 misc

      >>adb shell ls -l /dev/logo
      crw------- root root 234, 14 2018-03-30 14:02 logo

      >>adb shell ls -l /dev/ebr2
      crw------- root root 234, 15 2018-03-30 14:02 ebr2

      >>adb shell ls -l /dev/expdb
      crw------- root root 234, 16 2018-03-30 14:02 expdb

      >>adb shell ls -l /dev/block/mmcblk0p5
      brw------- root root 179, 5 2018-03-30 14:02 mmcblk0p5

      >>adb shell ls -l /dev/block/mmcblk0p6
      brw------- root root 179, 6 2018-03-30 14:02 mmcblk0p6

      >>adb shell ls -l /dev/block/mmcblk0p7
      brw------- root root 179, 7 2018-03-30 14:02 mmcblk0p7

      >>adb shell ls -l /dev/block/mmcblk0p8
      brw------- root root 179, 8 2018-03-30 14:02 mmcblk0p8

      >>adb shell ls -l /dev/bmtpool
      crw------- root root 234, 21 2018-03-30 14:02 bmtpool

    • 4. При копирование раздела использует именно те блоки, которые указаны в <Scatter файл> в таблице: <Block:>
    • 5. Копирование происходит поэтапно. То есть:
      • Если раздел меньше, чем размер буфера, указанного в программе, то раздел копируется целиком на карту памяти.
      • Затем с карты памяти копируется на ПК.
      • И удаляется с карты памяти.

      • Если раздел больше, чем размер буфера, указанного в программе, то программа вычисляет кратность буфера и размера раздела.
        Т.е например раздел имеет 156 Мегабайт, а буфер 16 Мегабайт, то программа выставит буфер в 13 Мегабайт, соответственно получается 12 блоков по 13 Мегабайт (12*13=156)
      • И будет 12 раз копировать блоки от раздела, размером по 13 Мегабайт на карту памяти.
      • Затем на ПК, объединять блоки.
      • И удалять блоки с карты памяти.
    Метод 2 (Full_ROM)
    Для этого метода обязательно наличие блока - mmcblk0:
    • Метод не сделан до конца, и он просто копирует блок mmcblk0 по этапно, разделив его на блоки.

    Метод 3 (Partinfo, Partitions, emmc)
    Для этого метода обязательно выполнение в ADB следующих команд:
    • 1. Partinfo.
      >>adb shell cat /proc/partinfo
      Name Start Size
      pgpt 0x0000000000000000 0x0000000000080000
      proinfo 0x0000000000800000 0x0000000000680000
      nvram 0x0000000000e80000 0x0000000000500000
      protect1 0x0000000001380000 0x0000000000a00000
      protect2 0x0000000001d80000 0x0000000000a00000
      para 0x0000000002780000 0x0000000000080000
      lk 0x0000000002800000 0x0000000000800000
      logo 0x0000000003000000 0x0000000000800000
      boot 0x0000000003800000 0x0000000001000000
      recovery 0x0000000004800000 0x0000000001000000
      oemkeystore 0x0000000005800000 0x0000000000800000
      secro 0x0000000006000000 0x0000000000800000
      keystore 0x0000000006800000 0x0000000000800000
      custpack 0x0000000007000000 0x0000000038000000
      seccfg 0x000000003f000000 0x0000000000800000
      expdb 0x000000003f800000 0x0000000001000000
      mobile_info 0x0000000040800000 0x0000000000800000
      frp 0x0000000041000000 0x0000000000800000
      nvdata 0x0000000041800000 0x0000000002000000
      metadata 0x0000000043800000 0x0000000002000000
      system 0x0000000045800000 0x000000004e800000
      cache 0x0000000094000000 0x0000000007000000
      userdata 0x000000009b000000 0x0000000133480000
      otp 0x00000001ce480000 0x0000000002b00000
      flashinfo 0x00000001d0f80000 0x0000000001000000
      sgpt 0x00000001d1f80000 0x0000000000080000

    • 2. Partitions.
      >>adb shell cat /proc/partitions
      major minor #blocks name
      254 0 499712 zram0
      7 0 21796 loop0
      179 0 7634944 mmcblk0
      179 1 6656 mmcblk0p1
      179 2 5120 mmcblk0p2
      179 3 10240 mmcblk0p3
      179 4 10240 mmcblk0p4
      179 5 512 mmcblk0p5
      179 6 8192 mmcblk0p6
      179 7 8192 mmcblk0p7
      179 8 16384 mmcblk0p8
      179 9 16384 mmcblk0p9
      179 10 8192 mmcblk0p10
      179 11 8192 mmcblk0p11
      179 12 8192 mmcblk0p12
      179 13 917504 mmcblk0p13
      179 14 8192 mmcblk0p14
      179 15 16384 mmcblk0p15
      179 16 8192 mmcblk0p16
      179 17 8192 mmcblk0p17
      179 18 32768 mmcblk0p18
      179 19 32768 mmcblk0p19
      179 20 1286144 mmcblk0p20
      179 21 114688 mmcblk0p21
      179 22 5034496 mmcblk0p22
      179 23 44032 mmcblk0p23
      179 24 16384 mmcblk0p24
      179 96 512 mmcblk0rpmb
      179 64 4096 mmcblk0boot1
      179 32 4096 mmcblk0boot0

    • 3. Emmc.
      >>adb shell cat /proc/emmc
      partno: start_sect nr_sects partition_name
      emmc_p1: 00004000 00003400 "proinfo"
      emmc_p2: 00007400 00002800 "nvram"
      emmc_p3: 00009c00 00005000 "protect1"
      emmc_p4: 0000ec00 00005000 "protect2"
      emmc_p5: 00013c00 00000400 "para"
      emmc_p6: 00014000 00004000 "lk"
      emmc_p7: 00018000 00004000 "logo"
      emmc_p8: 0001c000 00008000 "boot"
      emmc_p9: 00024000 00008000 "recovery"
      emmc_p10: 0002c000 00004000 "oemkeystore"
      emmc_p11: 00030000 00004000 "secro"
      emmc_p12: 00034000 00004000 "keystore"
      emmc_p13: 00038000 001c0000 "custpack"
      emmc_p14: 001f8000 00004000 "seccfg"
      emmc_p15: 001fc000 00008000 "expdb"
      emmc_p16: 00204000 00004000 "mobile_info"
      emmc_p17: 00208000 00004000 "frp"
      emmc_p18: 0020c000 00010000 "nvdata"
      emmc_p19: 0021c000 00010000 "metadata"
      emmc_p20: 0022c000 00274000 "system"
      emmc_p21: 004a0000 00038000 "cache"
      emmc_p22: 004d8000 0099a400 "userdata"
      emmc_p23: 00e72400 00015800 "otp"
      emmc_p24: 00e87c00 00008000 "flashinfo"

    • 4. Программа сама соединяет информацию со всех трёх выводов, проверяет размеры блоков, названия разделов.
    • 5. При копирование раздела использует именно те блоки, которые указаны в <Scatter файл> в таблице: <Block:>
    • 6. Копирование происходит поэтапно. То есть:
      • Если раздел меньше, чем размер буфера, указанного в программе, то раздел копируется целиком на карту памяти.
      • Затем с карты памяти копируется на ПК.
      • И удаляется с карты памяти.

      • Если раздел больше, чем размер буфера, указанного в программе, то программа вычисляет кратность буфера и размера раздела.
        Т.е например раздел имеет 156 Мегабайт, а буфер 16 Мегабайт, то программа выставит буфер в 13 Мегабайт, соответственно получается 12 блоков по 13 Мегабайт (12*13=156)
      • И будет 12 раз копировать блоки от раздела, размером по 13 Мегабайт на карту памяти.
      • Затем на ПК, объединять блоки.
      • И удалять блоки с карты памяти.

    • 7. Getprop. Вывод этой информации помогает программе узнать, что за платформа используется. И применить это.
      >>adb shell getprop
      [ro.sf.hwrotation]: [0]
      [ro.sf.lcd_density]: [320]
      [ro.adb.secure]: [1]
      [ro.apn.presetapn.edit.flag]: [true]
      [ro.com.idea.SP.call]: [false]
      [ro.com.google.gmsversion]: [5.1_r2]
      [ro.com.google.clientidbase]: [android-alcatel]
      [ro.com.google.clientidbase.am]: [android-alcatel]
      [ro.com.google.clientidbase.ms]: [android-alcatel]
      [ro.com.google.clientidbase.yt]: [android-alcatel]
      [ro.com.google.clientidbase.gmm]: [android-alcatel]
      [ro.com.android.dateformat]: [MM-dd-yyyy]
      [ro.com.android.mobiledata]: [false]
      [ro.com.android.dataroaming]: [0]
      [ro.com.android.dataroaming2]: [0]
      [ro.def.mms.autolink.extra]: [0]
      [ro.def.svn.countrycode]: []
      [ro.def.show.sim.change.dialog]: [true]
      [ro.def.show.plmn]: [1]
      [ro.def.russia.num.match.rule]: [0]
      [ro.def.browser]: [0]
      [ro.def.software.svn]: [01001]
      [ro.def.software.version]: [01001]
      [ro.def.phonenumber.Telstra]: [false]
      [ro.def.TelephonyProvider.match]: [0]
      [ro.dtv.support]: [false]
      [ro.frp.pst]: [/dev/block/platform/mtk-msdc.0/by-name/frp]
      [ro.oma.cp.authen_mandatory]: [true]
      [ro.oma.cp.userpin_acceptable]: [true]
      [ro.ssv.enabled]: [false]
      [ro.ssv.mccmncspnlist]: [20416-998(main),20416-999]
      [ro.ssv.config_operator]: [none]
      [ro.ssv.diag_sel_config]: [1]
      [ro.sys.usb.mtp.whql.enable]: [0]
      [ro.sys.usb.bicr]: [yes]
      [ro.sys.usb.storage.type]: [mtp,mass_storage]
      [ro.sys.usb.charging.only]: [yes]
      [ro.boot.hardware]: [mt6580]
      [ro.boot.serialno]: [65TW556D99999999 [128m]]


    Метод 4 (Partinfo, Partitions, Auto)
    Для этого метода обязательно выполнение в ADB следующих команд:
    • 1. Partinfo.
      >>adb shell cat /proc/partinfo
      Name Start Size
      pgpt 0x0000000000000000 0x0000000000080000
      proinfo 0x0000000000800000 0x0000000000680000
      nvram 0x0000000000e80000 0x0000000000500000
      protect1 0x0000000001380000 0x0000000000a00000
      protect2 0x0000000001d80000 0x0000000000a00000
      para 0x0000000002780000 0x0000000000080000
      lk 0x0000000002800000 0x0000000000800000
      logo 0x0000000003000000 0x0000000000800000
      boot 0x0000000003800000 0x0000000001000000
      recovery 0x0000000004800000 0x0000000001000000
      oemkeystore 0x0000000005800000 0x0000000000800000
      secro 0x0000000006000000 0x0000000000800000
      keystore 0x0000000006800000 0x0000000000800000
      custpack 0x0000000007000000 0x0000000038000000
      seccfg 0x000000003f000000 0x0000000000800000
      expdb 0x000000003f800000 0x0000000001000000
      mobile_info 0x0000000040800000 0x0000000000800000
      frp 0x0000000041000000 0x0000000000800000
      nvdata 0x0000000041800000 0x0000000002000000
      metadata 0x0000000043800000 0x0000000002000000
      system 0x0000000045800000 0x000000004e800000
      cache 0x0000000094000000 0x0000000007000000
      userdata 0x000000009b000000 0x0000000133480000
      otp 0x00000001ce480000 0x0000000002b00000
      flashinfo 0x00000001d0f80000 0x0000000001000000
      sgpt 0x00000001d1f80000 0x0000000000080000

    • 2. Partitions.
      >>adb shell cat /proc/partitions
      major minor #blocks name
      254 0 499712 zram0
      7 0 21796 loop0
      179 0 7634944 mmcblk0
      179 1 6656 mmcblk0p1
      179 2 5120 mmcblk0p2
      179 3 10240 mmcblk0p3
      179 4 10240 mmcblk0p4
      179 5 512 mmcblk0p5
      179 6 8192 mmcblk0p6
      179 7 8192 mmcblk0p7
      179 8 16384 mmcblk0p8
      179 9 16384 mmcblk0p9
      179 10 8192 mmcblk0p10
      179 11 8192 mmcblk0p11
      179 12 8192 mmcblk0p12
      179 13 917504 mmcblk0p13
      179 14 8192 mmcblk0p14
      179 15 16384 mmcblk0p15
      179 16 8192 mmcblk0p16
      179 17 8192 mmcblk0p17
      179 18 32768 mmcblk0p18
      179 19 32768 mmcblk0p19
      179 20 1286144 mmcblk0p20
      179 21 114688 mmcblk0p21
      179 22 5034496 mmcblk0p22
      179 23 44032 mmcblk0p23
      179 24 16384 mmcblk0p24
      179 96 512 mmcblk0rpmb
      179 64 4096 mmcblk0boot1
      179 32 4096 mmcblk0boot0

    • 3. Программа сама соединяет информацию со всех двух выводов, проверяет размеры блоков, названия разделов.
    • 4. При копирование раздела использует именно те блоки, которые указаны в <Scatter файл> в таблице: <Block:>
    • 5. Копирование происходит поэтапно. То есть:
      • Если раздел меньше, чем размер буфера, указанного в программе, то раздел копируется целиком на карту памяти.
      • Затем с карты памяти копируется на ПК.
      • И удаляется с карты памяти.

      • Если раздел больше, чем размер буфера, указанного в программе, то программа вычисляет кратность буфера и размера раздела.
        Т.е например раздел имеет 156 Мегабайт, а буфер 16 Мегабайт, то программа выставит буфер в 13 Мегабайт, соответственно получается 12 блоков по 13 Мегабайт (12*13=156)
      • И будет 12 раз копировать блоки от раздела, размером по 13 Мегабайт на карту памяти.
      • Затем на ПК, объединять блоки.
      • И удалять блоки с карты памяти.

    • 6. Getprop. Вывод этой информации помогает программе узнать, что за платформа используется. И применить это.
      >>adb shell getprop
      [ro.sf.hwrotation]: [0]
      [ro.sf.lcd_density]: [320]
      [ro.adb.secure]: [1]
      [ro.apn.presetapn.edit.flag]: [true]
      [ro.com.idea.SP.call]: [false]
      [ro.com.google.gmsversion]: [5.1_r2]
      [ro.com.google.clientidbase]: [android-alcatel]
      [ro.com.google.clientidbase.am]: [android-alcatel]
      [ro.com.google.clientidbase.ms]: [android-alcatel]
      [ro.com.google.clientidbase.yt]: [android-alcatel]
      [ro.com.google.clientidbase.gmm]: [android-alcatel]
      [ro.com.android.dateformat]: [MM-dd-yyyy]
      [ro.com.android.mobiledata]: [false]
      [ro.com.android.dataroaming]: [0]
      [ro.com.android.dataroaming2]: [0]
      [ro.def.mms.autolink.extra]: [0]
      [ro.def.svn.countrycode]: []
      [ro.def.show.sim.change.dialog]: [true]
      [ro.def.show.plmn]: [1]
      [ro.def.russia.num.match.rule]: [0]
      [ro.def.browser]: [0]
      [ro.def.software.svn]: [01001]
      [ro.def.software.version]: [01001]
      [ro.def.phonenumber.Telstra]: [false]
      [ro.def.TelephonyProvider.match]: [0]
      [ro.dtv.support]: [false]
      [ro.frp.pst]: [/dev/block/platform/mtk-msdc.0/by-name/frp]
      [ro.oma.cp.authen_mandatory]: [true]
      [ro.oma.cp.userpin_acceptable]: [true]
      [ro.ssv.enabled]: [false]
      [ro.ssv.mccmncspnlist]: [20416-998(main),20416-999]
      [ro.ssv.config_operator]: [none]
      [ro.ssv.diag_sel_config]: [1]
      [ro.sys.usb.mtp.whql.enable]: [0]
      [ro.sys.usb.bicr]: [yes]
      [ro.sys.usb.storage.type]: [mtp,mass_storage]
      [ro.sys.usb.charging.only]: [yes]
      [ro.boot.hardware]: [mt6580]
      [ro.boot.serialno]: [65TW556D99999999 [128m]]
    Метод 5 (Partinfo, Partitions, by-name)
    Для этого метода обязательно выполнение в ADB следующих команд:
    • 1. Partinfo.
      >>adb shell cat /proc/partinfo
      Name Start Size
      pgpt 0x0000000000000000 0x0000000000080000
      proinfo 0x0000000000800000 0x0000000000680000
      nvram 0x0000000000e80000 0x0000000000500000
      protect1 0x0000000001380000 0x0000000000a00000
      protect2 0x0000000001d80000 0x0000000000a00000
      para 0x0000000002780000 0x0000000000080000
      lk 0x0000000002800000 0x0000000000800000
      logo 0x0000000003000000 0x0000000000800000
      boot 0x0000000003800000 0x0000000001000000
      recovery 0x0000000004800000 0x0000000001000000
      oemkeystore 0x0000000005800000 0x0000000000800000
      secro 0x0000000006000000 0x0000000000800000
      keystore 0x0000000006800000 0x0000000000800000
      custpack 0x0000000007000000 0x0000000038000000
      seccfg 0x000000003f000000 0x0000000000800000
      expdb 0x000000003f800000 0x0000000001000000
      mobile_info 0x0000000040800000 0x0000000000800000
      frp 0x0000000041000000 0x0000000000800000
      nvdata 0x0000000041800000 0x0000000002000000
      metadata 0x0000000043800000 0x0000000002000000
      system 0x0000000045800000 0x000000004e800000
      cache 0x0000000094000000 0x0000000007000000
      userdata 0x000000009b000000 0x0000000133480000
      otp 0x00000001ce480000 0x0000000002b00000
      flashinfo 0x00000001d0f80000 0x0000000001000000
      sgpt 0x00000001d1f80000 0x0000000000080000

    • 2. Partitions.
      >>adb shell cat /proc/partitions
      major minor #blocks name
      254 0 499712 zram0
      7 0 21796 loop0
      179 0 7634944 mmcblk0
      179 1 6656 mmcblk0p1
      179 2 5120 mmcblk0p2
      179 3 10240 mmcblk0p3
      179 4 10240 mmcblk0p4
      179 5 512 mmcblk0p5
      179 6 8192 mmcblk0p6
      179 7 8192 mmcblk0p7
      179 8 16384 mmcblk0p8
      179 9 16384 mmcblk0p9
      179 10 8192 mmcblk0p10
      179 11 8192 mmcblk0p11
      179 12 8192 mmcblk0p12
      179 13 917504 mmcblk0p13
      179 14 8192 mmcblk0p14
      179 15 16384 mmcblk0p15
      179 16 8192 mmcblk0p16
      179 17 8192 mmcblk0p17
      179 18 32768 mmcblk0p18
      179 19 32768 mmcblk0p19
      179 20 1286144 mmcblk0p20
      179 21 114688 mmcblk0p21
      179 22 5034496 mmcblk0p22
      179 23 44032 mmcblk0p23
      179 24 16384 mmcblk0p24
      179 96 512 mmcblk0rpmb
      179 64 4096 mmcblk0boot1
      179 32 4096 mmcblk0boot0

    • 3. Программа ищёт папку (директорию) с именем <by-name> после папки (директории) </dev/block>. Имеет примерный вывод:
      >>adb shell ls -l /dev/block
      /dev/block: Permission denied

      >>adb shell su -c ls -l /dev/block
      brw------- root root 253, 0 2015-01-26 16:07 dm-0
      brw------- root root 7, 0 2015-01-26 16:07 loop0
      brw------- root root 7, 1 2015-01-26 16:07 loop1
      brw------- root root 7, 2 2015-01-26 16:07 loop2
      brw------- root root 7, 3 2015-01-26 16:07 loop3
      brw------- root root 7, 4 2015-01-26 16:07 loop4
      brw------- root root 7, 5 2015-01-26 16:07 loop5
      brw------- root root 7, 6 2015-01-26 16:07 loop6
      brw------- root root 7, 7 2015-01-26 16:07 loop7
      brw-rw---- root system 179, 0 2015-01-26 16:07 mmcblk0
      brw-rw---- root system 179, 32 2015-01-26 16:07 mmcblk0boot0
      brw-rw---- root system 179, 64 2015-01-26 16:07 mmcblk0boot1
      brw-rw---- root system 179, 1 2015-01-26 16:07 mmcblk0p1
      brw------- root root 179, 10 2015-01-26 16:07 mmcblk0p10
      brw-r----- root system 179, 11 2015-01-26 16:07 mmcblk0p11
      brw------- root root 179, 12 2015-01-26 16:07 mmcblk0p12
      brw-rw---- root system 179, 13 2015-01-26 16:07 mmcblk0p13
      brw------- root root 179, 14 2015-01-26 16:07 mmcblk0p14
      brw------- root root 179, 15 2015-01-26 16:07 mmcblk0p15
      brw-rw---- root system 179, 16 2015-01-26 16:08 mmcblk0p16
      brw------- root root 179, 17 2015-01-26 16:07 mmcblk0p17
      brw------- root root 179, 18 2015-01-26 16:07 mmcblk0p18
      brw------- root root 179, 19 2015-01-26 16:07 mmcblk0p19
      brw-rw---- root system 179, 2 2015-01-26 16:07 mmcblk0p2
      brw------- root root 179, 20 2015-01-26 16:07 mmcblk0p20
      brw------- root root 179, 21 2015-01-26 16:07 mmcblk0p21
      brw-r----- root system 179, 22 2015-01-26 16:07 mmcblk0p22
      brw------- root root 179, 23 2015-01-26 16:07 mmcblk0p23
      brw------- root root 179, 3 2015-01-26 16:07 mmcblk0p3
      brw------- root root 179, 4 2015-01-26 16:07 mmcblk0p4
      brw-rw---- root system 179, 5 2015-01-26 16:07 mmcblk0p5
      brw------- root root 179, 6 2015-01-26 16:07 mmcblk0p6
      brw-r----- root system 179, 7 2015-01-26 16:07 mmcblk0p7
      brw-r----- root system 179, 8 2015-01-26 16:07 mmcblk0p8
      brw-r----- root system 179, 9 2015-01-26 16:07 mmcblk0p9
      brw------- root root 179, 96 2015-01-26 16:07 mmcblk0rpmb
      drwxr-xr-x root root 2015-01-26 16:07 platform
      drwx------ root root 2015-01-26 16:07 vold
      brw------- root root 254, 0 2015-01-26 16:07 zram0

      >>adb shell su -c ls -l /dev/block/platform
      drwxr-xr-x root root 2015-01-26 16:07 mtk-msdc.0

      >>adb shell su -c ls -l /dev/block/vold

      >>adb shell su -c ls -l /dev/block/platform/mtk-msdc.0
      drwxr-xr-x root root 2015-01-26 16:07 11120000.msdc0

      >>adb shell su -c ls -l /dev/block/platform/mtk-msdc.0/11120000.msdc0
      drwxr-xr-x root root 2015-01-26 16:07 by-name
      drwxr-xr-x root root 2015-01-26 16:07 by-num
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0 -> /dev/block/mmcblk0
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0boot0 -> /dev/block/mmcblk0boot0
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0boot1 -> /dev/block/mmcblk0boot1
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0p1 -> /dev/block/mmcblk0p1
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0p10 -> /dev/block/mmcblk0p10
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0p11 -> /dev/block/mmcblk0p11
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0p12 -> /dev/block/mmcblk0p12
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0p13 -> /dev/block/mmcblk0p13
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0p14 -> /dev/block/mmcblk0p14
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0p15 -> /dev/block/mmcblk0p15
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0p16 -> /dev/block/mmcblk0p16
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0p17 -> /dev/block/mmcblk0p17
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0p18 -> /dev/block/mmcblk0p18
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0p19 -> /dev/block/mmcblk0p19
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0p2 -> /dev/block/mmcblk0p2
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0p20 -> /dev/block/mmcblk0p20
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0p21 -> /dev/block/mmcblk0p21
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0p22 -> /dev/block/mmcblk0p22
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0p23 -> /dev/block/mmcblk0p23
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0p3 -> /dev/block/mmcblk0p3
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0p4 -> /dev/block/mmcblk0p4
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0p5 -> /dev/block/mmcblk0p5
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0p6 -> /dev/block/mmcblk0p6
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0p7 -> /dev/block/mmcblk0p7
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0p8 -> /dev/block/mmcblk0p8
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0p9 -> /dev/block/mmcblk0p9
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0rpmb -> /dev/block/mmcblk0rpmb

      >>adb shell su -c ls -l /dev/block/platform/mtk-msdc.0/11120000.msdc0/by-name
      lrwxrwxrwx root root 2015-01-26 16:07 boot -> /dev/block/mmcblk0p8
      lrwxrwxrwx root root 2015-01-26 16:07 cache -> /dev/block/mmcblk0p20
      lrwxrwxrwx root root 2015-01-26 16:07 expdb -> /dev/block/mmcblk0p14
      lrwxrwxrwx root root 2015-01-26 16:07 flashinfo -> /dev/block/mmcblk0p23
      lrwxrwxrwx root root 2015-01-26 16:07 frp -> /dev/block/mmcblk0p16
      lrwxrwxrwx root root 2015-01-26 16:07 keystore -> /dev/block/mmcblk0p12
      lrwxrwxrwx root root 2015-01-26 16:07 lk -> /dev/block/mmcblk0p6
      lrwxrwxrwx root root 2015-01-26 16:07 logo -> /dev/block/mmcblk0p7
      lrwxrwxrwx root root 2015-01-26 16:07 metadata -> /dev/block/mmcblk0p18
      lrwxrwxrwx root root 2015-01-26 16:07 mobile_info -> /dev/block/mmcblk0p15
      lrwxrwxrwx root root 2015-01-26 16:07 nvdata -> /dev/block/mmcblk0p17
      lrwxrwxrwx root root 2015-01-26 16:07 nvram -> /dev/block/mmcblk0p2
      lrwxrwxrwx root root 2015-01-26 16:07 oemkeystore -> /dev/block/mmcblk0p10
      lrwxrwxrwx root root 2015-01-26 16:07 otp -> /dev/block/mmcblk0p22
      lrwxrwxrwx root root 2015-01-26 16:07 para -> /dev/block/mmcblk0p5
      lrwxrwxrwx root root 2015-01-26 16:07 proinfo -> /dev/block/mmcblk0p1
      lrwxrwxrwx root root 2015-01-26 16:07 protect1 -> /dev/block/mmcblk0p3
      lrwxrwxrwx root root 2015-01-26 16:07 protect2 -> /dev/block/mmcblk0p4
      lrwxrwxrwx root root 2015-01-26 16:07 recovery -> /dev/block/mmcblk0p9
      lrwxrwxrwx root root 2015-01-26 16:07 seccfg -> /dev/block/mmcblk0p13
      lrwxrwxrwx root root 2015-01-26 16:07 secro -> /dev/block/mmcblk0p11
      lrwxrwxrwx root root 2015-01-26 16:07 system -> /dev/block/mmcblk0p19
      lrwxrwxrwx root root 2015-01-26 16:07 userdata -> /dev/block/mmcblk0p21

    • 4. Программа сама соединяет информацию со всех трёх выводов, проверяет размеры блоков, названия разделов.
    • 5. При копирование раздела использует именно те блоки, которые указаны в <Scatter файл> в таблице: <Block:>
    • 6. Копирование происходит поэтапно. То есть:
      • Если раздел меньше, чем размер буфера, указанного в программе, то раздел копируется целиком на карту памяти.
      • Затем с карты памяти копируется на ПК.
      • И удаляется с карты памяти.

      • Если раздел больше, чем размер буфера, указанного в программе, то программа вычисляет кратность буфера и размера раздела.
        Т.е например раздел имеет 156 Мегабайт, а буфер 16 Мегабайт, то программа выставит буфер в 13 Мегабайт, соответственно получается 12 блоков по 13 Мегабайт (12*13=156)
      • И будет 12 раз копировать блоки от раздела, размером по 13 Мегабайт на карту памяти.
      • Затем на ПК, объединять блоки.
      • И удалять блоки с карты памяти.

    • 7. Getprop. Вывод этой информации помогает программе узнать, что за платформа используется. И применить это.
      >>adb shell getprop
      [ro.sf.hwrotation]: [0]
      [ro.sf.lcd_density]: [320]
      [ro.adb.secure]: [1]
      [ro.apn.presetapn.edit.flag]: [true]
      [ro.com.idea.SP.call]: [false]
      [ro.com.google.gmsversion]: [5.1_r2]
      [ro.com.google.clientidbase]: [android-alcatel]
      [ro.com.google.clientidbase.am]: [android-alcatel]
      [ro.com.google.clientidbase.ms]: [android-alcatel]
      [ro.com.google.clientidbase.yt]: [android-alcatel]
      [ro.com.google.clientidbase.gmm]: [android-alcatel]
      [ro.com.android.dateformat]: [MM-dd-yyyy]
      [ro.com.android.mobiledata]: [false]
      [ro.com.android.dataroaming]: [0]
      [ro.com.android.dataroaming2]: [0]
      [ro.def.mms.autolink.extra]: [0]
      [ro.def.svn.countrycode]: []
      [ro.def.show.sim.change.dialog]: [true]
      [ro.def.show.plmn]: [1]
      [ro.def.russia.num.match.rule]: [0]
      [ro.def.browser]: [0]
      [ro.def.software.svn]: [01001]
      [ro.def.software.version]: [01001]
      [ro.def.phonenumber.Telstra]: [false]
      [ro.def.TelephonyProvider.match]: [0]
      [ro.dtv.support]: [false]
      [ro.frp.pst]: [/dev/block/platform/mtk-msdc.0/by-name/frp]
      [ro.oma.cp.authen_mandatory]: [true]
      [ro.oma.cp.userpin_acceptable]: [true]
      [ro.ssv.enabled]: [false]
      [ro.ssv.mccmncspnlist]: [20416-998(main),20416-999]
      [ro.ssv.config_operator]: [none]
      [ro.ssv.diag_sel_config]: [1]
      [ro.sys.usb.mtp.whql.enable]: [0]
      [ro.sys.usb.bicr]: [yes]
      [ro.sys.usb.storage.type]: [mtp,mass_storage]
      [ro.sys.usb.charging.only]: [yes]
      [ro.boot.hardware]: [mt6580]
      [ro.boot.serialno]: [65TW556D99999999 [128m]]
    Метод 6 (GPT, Partitions, emmc)
    Для этого метода обязательно выполнение в ADB следующих команд:
    • 1. Программа копирует первый мегабайт раздела mmcblk0, и проверяет есть ли в нём GPT таблица. Если есть, то применяет их:
      >>adb shell su -c dd if=/dev/block/mmcblk0 of=/sdcard/rom_000 bs=1048576 count=1

      >>adb pull /sdcard/rom_000 C:/Rom/rom_000
      [ 6%] /sdcard/rom_000
      [ 12%] /sdcard/rom_000
      [ 18%] /sdcard/rom_000
      [ 25%] /sdcard/rom_000
      [ 31%] /sdcard/rom_000
      [ 37%] /sdcard/rom_000
      [ 43%] /sdcard/rom_000
      [ 50%] /sdcard/rom_000
      [ 56%] /sdcard/rom_000
      [ 62%] /sdcard/rom_000
      [ 68%] /sdcard/rom_000
      [ 75%] /sdcard/rom_000
      [ 81%] /sdcard/rom_000
      [ 87%] /sdcard/rom_000
      [ 93%] /sdcard/rom_000
      [100%] /sdcard/rom_000
      /sdcard/rom_000: 1 file pulled. 4.7 MB/s (1048576 bytes in 0.212s)

      >>adb shell su -c rm /sdcard/rom_000

    • 2. Partitions.
      >>adb shell cat /proc/partitions
      major minor #blocks name
      254 0 499712 zram0
      7 0 21796 loop0
      179 0 7634944 mmcblk0
      179 1 6656 mmcblk0p1
      179 2 5120 mmcblk0p2
      179 3 10240 mmcblk0p3
      179 4 10240 mmcblk0p4
      179 5 512 mmcblk0p5
      179 6 8192 mmcblk0p6
      179 7 8192 mmcblk0p7
      179 8 16384 mmcblk0p8
      179 9 16384 mmcblk0p9
      179 10 8192 mmcblk0p10
      179 11 8192 mmcblk0p11
      179 12 8192 mmcblk0p12
      179 13 917504 mmcblk0p13
      179 14 8192 mmcblk0p14
      179 15 16384 mmcblk0p15
      179 16 8192 mmcblk0p16
      179 17 8192 mmcblk0p17
      179 18 32768 mmcblk0p18
      179 19 32768 mmcblk0p19
      179 20 1286144 mmcblk0p20
      179 21 114688 mmcblk0p21
      179 22 5034496 mmcblk0p22
      179 23 44032 mmcblk0p23
      179 24 16384 mmcblk0p24
      179 96 512 mmcblk0rpmb
      179 64 4096 mmcblk0boot1
      179 32 4096 mmcblk0boot0

    • 3. Emmc.
      >>adb shell cat /proc/emmc
      partno: start_sect nr_sects partition_name
      emmc_p1: 00004000 00003400 "proinfo"
      emmc_p2: 00007400 00002800 "nvram"
      emmc_p3: 00009c00 00005000 "protect1"
      emmc_p4: 0000ec00 00005000 "protect2"
      emmc_p5: 00013c00 00000400 "para"
      emmc_p6: 00014000 00004000 "lk"
      emmc_p7: 00018000 00004000 "logo"
      emmc_p8: 0001c000 00008000 "boot"
      emmc_p9: 00024000 00008000 "recovery"
      emmc_p10: 0002c000 00004000 "oemkeystore"
      emmc_p11: 00030000 00004000 "secro"
      emmc_p12: 00034000 00004000 "keystore"
      emmc_p13: 00038000 001c0000 "custpack"
      emmc_p14: 001f8000 00004000 "seccfg"
      emmc_p15: 001fc000 00008000 "expdb"
      emmc_p16: 00204000 00004000 "mobile_info"
      emmc_p17: 00208000 00004000 "frp"
      emmc_p18: 0020c000 00010000 "nvdata"
      emmc_p19: 0021c000 00010000 "metadata"
      emmc_p20: 0022c000 00274000 "system"
      emmc_p21: 004a0000 00038000 "cache"
      emmc_p22: 004d8000 0099a400 "userdata"
      emmc_p23: 00e72400 00015800 "otp"
      emmc_p24: 00e87c00 00008000 "flashinfo"

    • 4. Программа сама соединяет информацию со всех трёх выводов, проверяет размеры блоков, названия разделов.
    • 5. При копирование раздела использует именно те блоки, которые указаны в <Scatter файл> в таблице: <Block:>
    • 6. Копирование происходит поэтапно. То есть:
      • Если раздел меньше, чем размер буфера, указанного в программе, то раздел копируется целиком на карту памяти.
      • Затем с карты памяти копируется на ПК.
      • И удаляется с карты памяти.

      • Если раздел больше, чем размер буфера, указанного в программе, то программа вычисляет кратность буфера и размера раздела.
        Т.е например раздел имеет 156 Мегабайт, а буфер 16 Мегабайт, то программа выставит буфер в 13 Мегабайт, соответственно получается 12 блоков по 13 Мегабайт (12*13=156)
      • И будет 12 раз копировать блоки от раздела, размером по 13 Мегабайт на карту памяти.
      • Затем на ПК, объединять блоки.
      • И удалять блоки с карты памяти.

    • 7. Getprop. Вывод этой информации помогает программе узнать, что за платформа используется. И применить это.
      >>adb shell getprop
      [ro.sf.hwrotation]: [0]
      [ro.sf.lcd_density]: [320]
      [ro.adb.secure]: [1]
      [ro.apn.presetapn.edit.flag]: [true]
      [ro.com.idea.SP.call]: [false]
      [ro.com.google.gmsversion]: [5.1_r2]
      [ro.com.google.clientidbase]: [android-alcatel]
      [ro.com.google.clientidbase.am]: [android-alcatel]
      [ro.com.google.clientidbase.ms]: [android-alcatel]
      [ro.com.google.clientidbase.yt]: [android-alcatel]
      [ro.com.google.clientidbase.gmm]: [android-alcatel]
      [ro.com.android.dateformat]: [MM-dd-yyyy]
      [ro.com.android.mobiledata]: [false]
      [ro.com.android.dataroaming]: [0]
      [ro.com.android.dataroaming2]: [0]
      [ro.def.mms.autolink.extra]: [0]
      [ro.def.svn.countrycode]: []
      [ro.def.show.sim.change.dialog]: [true]
      [ro.def.show.plmn]: [1]
      [ro.def.russia.num.match.rule]: [0]
      [ro.def.browser]: [0]
      [ro.def.software.svn]: [01001]
      [ro.def.software.version]: [01001]
      [ro.def.phonenumber.Telstra]: [false]
      [ro.def.TelephonyProvider.match]: [0]
      [ro.dtv.support]: [false]
      [ro.frp.pst]: [/dev/block/platform/mtk-msdc.0/by-name/frp]
      [ro.oma.cp.authen_mandatory]: [true]
      [ro.oma.cp.userpin_acceptable]: [true]
      [ro.ssv.enabled]: [false]
      [ro.ssv.mccmncspnlist]: [20416-998(main),20416-999]
      [ro.ssv.config_operator]: [none]
      [ro.ssv.diag_sel_config]: [1]
      [ro.sys.usb.mtp.whql.enable]: [0]
      [ro.sys.usb.bicr]: [yes]
      [ro.sys.usb.storage.type]: [mtp,mass_storage]
      [ro.sys.usb.charging.only]: [yes]
      [ro.boot.hardware]: [mt6580]
      [ro.boot.serialno]: [65TW556D99999999 [128m]]
    Метод 7 (GPT, Partitions, mmcblk0)
    Для этого метода обязательно выполнение в ADB следующих команд:
    • 1. Программа копирует первый мегабайт раздела mmcblk0, и проверяет есть ли в нём GPT таблица. Если есть, то применяет их:
      >>adb shell su -c dd if=/dev/block/mmcblk0 of=/sdcard/rom_000 bs=1048576 count=1

      >>adb pull /sdcard/rom_000 C:/Rom/rom_000
      [ 6%] /sdcard/rom_000
      [ 12%] /sdcard/rom_000
      [ 18%] /sdcard/rom_000
      [ 25%] /sdcard/rom_000
      [ 31%] /sdcard/rom_000
      [ 37%] /sdcard/rom_000
      [ 43%] /sdcard/rom_000
      [ 50%] /sdcard/rom_000
      [ 56%] /sdcard/rom_000
      [ 62%] /sdcard/rom_000
      [ 68%] /sdcard/rom_000
      [ 75%] /sdcard/rom_000
      [ 81%] /sdcard/rom_000
      [ 87%] /sdcard/rom_000
      [ 93%] /sdcard/rom_000
      [100%] /sdcard/rom_000
      /sdcard/rom_000: 1 file pulled. 4.7 MB/s (1048576 bytes in 0.212s)

      >>adb shell su -c rm /sdcard/rom_000

    • 2. Partitions.
      >>adb shell cat /proc/partitions
      major minor #blocks name
      7 0 21796 loop0
      7 1 98304 loop1
      254 0 493824 zram0
      179 0 7634944 mmcblk0
      179 1 6656 mmcblk0p1
      179 2 5120 mmcblk0p2
      179 3 10240 mmcblk0p3
      179 4 10240 mmcblk0p4
      179 5 512 mmcblk0p5
      179 6 8192 mmcblk0p6
      179 7 8192 mmcblk0p7
      179 8 16384 mmcblk0p8
      179 9 16384 mmcblk0p9
      179 10 8192 mmcblk0p10
      179 11 8192 mmcblk0p11
      179 12 8192 mmcblk0p12
      179 13 8192 mmcblk0p13
      179 14 16384 mmcblk0p14
      179 15 8192 mmcblk0p15
      179 16 8192 mmcblk0p16
      179 17 32768 mmcblk0p17
      179 18 32768 mmcblk0p18
      179 19 1761280 mmcblk0p19
      179 20 262144 mmcblk0p20
      179 21 5329408 mmcblk0p21
      179 22 44032 mmcblk0p22
      179 23 16384 mmcblk0p23
      179 96 512 mmcblk0rpmb
      179 64 4096 mmcblk0boot1
      179 32 4096 mmcblk0boot0
      253 0 5329408 dm-0

    • 3. Наличие блока mmcblk0 и mmcblk0boot0:
      >>adb shell ls -l /dev/block/mmcblk0
      /dev/block/mmcblk0: Permission denied (Доступ запрещен!)

      >>adb shell su -c ls -l /dev/block/mmcblk0
      brw-rw---- root system 179, 0 2015-01-26 16:07 mmcblk0

      >>adb shell su -c ls -l /dev/block/mmcblk0boot0
      brw-rw---- root system 179, 32 2015-01-26 16:07 mmcblk0boot0

    • 4. Программа сама соединяет информацию со всех двух выводов, копирование происходит только блока mmcblk0, но с разной позиции старта и длины. Позиция старта и длины берётся из GPT раздела.
      Не очень хороший метод, но как вариант пойдёт. Иногда на больших разделах вылетает ошибка: о невозможности копирования блока.
    • 5. При копирование раздела использует именно те блоки, которые указаны в <Scatter файл> в таблице: <Block:>
    • 6. Копирование происходит поэтапно. То есть:
      • Если раздел меньше, чем размер буфера, указанного в программе, то раздел копируется целиком на карту памяти.
      • Затем с карты памяти копируется на ПК.
      • И удаляется с карты памяти.

      • Если раздел больше, чем размер буфера, указанного в программе, то программа вычисляет кратность буфера и размера раздела.
        Т.е например раздел имеет 156 Мегабайт, а буфер 16 Мегабайт, то программа выставит буфер в 13 Мегабайт, соответственно получается 12 блоков по 13 Мегабайт (12*13=156)
      • И будет 12 раз копировать блоки от раздела, размером по 13 Мегабайт на карту памяти.
      • Затем на ПК, объединять блоки.
      • И удалять блоки с карты памяти.

    • 7. Getprop. Вывод этой информации помогает программе узнать, что за платформа используется. И применить это.
      >>>>adb shell getprop
      [gsm.version.baseband]: [MOLY.WR8.W1449.MD.WG.MP.V57, 2016/05/20 09:24]
      [gsm.version.baseband1]: [MOLY.WR8.W1449.MD.WG.MP.V57, 2016/05/20 09:24]
      [gsm.version.ril-impl]: [mtk gemini ril 1.0]
      [mediatek.wlan.chip]: [CONSYS_MT6735]
      [mediatek.wlan.ctia]: [0]
      [mediatek.wlan.module.postfix]: [_consys_mt6735]
      [mtk.md1.starttime]: [0s Mon Jan 26 16:07:40 2015]
      [mtk.md1.status]: [ready]
      [mtk.md2.status]: [init_done]
      [[ro.boot.hardware]: [mt6580]
      [ro.boot.mode]: [normal]
      [ro.boot.name]: [android]
      [ro.boot.serialno]: [4TEAD6L7Q86SF6AA]
      [ro.bootimage.build.date]: [Wed May 18 12:26:48 CST 2016]
      [ro.bootimage.build.date.utc]: [1463545608]
      [ro.bootimage.build.fingerprint]: [TCL/5010X/Pixi4-5:6.0/MRA58K/v5E2E-0:user/test-keys]
      [ro.bootloader]: [unknown]
      [ro.bootmode]: [normal]
      [ro.build.characteristics]: [default]
      [ro.build.date]: [Fri May 20 09:22:43 CST 2016]
      [ro.build.date.utc]: [1463707363]
      [ro.build.description]: [full_pixi4_5-user 6.0 MRA58K v5E2E-0 release-keys]
      [ro.build.display.id]: [Marshmallow]
      [ro.build.fingerprint]: [TCL/5010D/Pixi4-5:6.0/MRA58K/v5E2E-0:user/release-keys]
      [ro.build.flavor]: [full_pixi4_5-user]
      [ro.build.host]: [persauto-81]
      [ro.build.id]: [MRA58K]
      [ro.build.product]: [Pixi4-5]
      [ro.build.version.security_patch]: [2016-05-01]
      [ro.mediatek.chip_ver]: [S01]
      [ro.mediatek.gemini_support]: [true]
      [ro.mediatek.platform]: [MT6580]
      [ro.mediatek.project.path]: [device/jrdchz/pixi4_5]
      [ro.mediatek.version.branch]: [alps-mp-m0.mp1]
      [ro.mediatek.version.release]: [alps-mp-m0.mp1-V2.34_jhz6580.we.m_P20]
      [ro.mediatek.version.sdk]: [4]
      [ro.mediatek.wlan.p2p]: [1]
      [ro.mediatek.wlan.wsc]: [1]
      [ro.mount.fs]: [EXT4]
      [ro.mtk.dex2oat_white_list]: [com.facebook:com.google.android.gms:]
      [ro.mtk_shared_sdcard]: [1]
      [ro.mtk_sim_hot_swap]: [1]
      [ro.opengles.version]: [131072]
      [ro.product.board]: []
      [ro.product.brand]: [TCL]
      [ro.product.brand1]: [Orange]
      [ro.product.cpu.abi]: [armeabi-v7a]
      [ro.product.cpu.abi2]: [armeabi]
      [ro.product.cpu.abilist]: [armeabi-v7a,armeabi]
      [ro.product.cpu.abilist32]: [armeabi-v7a,armeabi]
      [ro.product.cpu.abilist64]: []
      [ro.product.device]: [Pixi4-5]
      [ro.product.internal.id]: [Pixi4_5_3G]
      [ro.product.locale.language]: [ru]
      [ro.product.locale.region]: [RU]
      [ro.product.manufacturer]: [TCL]
      [ro.product.model]: [5010D]
      [ro.product.name]: [5010D]
      [ro.product.orangecodename]: [NA58083]
      [ro.product.usb.model]: [Alcatel Pixi 4 (5)]
    Метод 8 (GPT, Partitions, Auto)
    Для этого метода обязательно выполнение в ADB следующих команд:
    • 1. Программа копирует первый мегабайт раздела mmcblk0, и проверяет есть ли в нём GPT таблица. Если есть, то применяет их:
      >>adb shell su -c dd if=/dev/block/mmcblk0 of=/sdcard/rom_000 bs=1048576 count=1

      >>adb pull /sdcard/rom_000 C:/Rom/rom_000
      [ 6%] /sdcard/rom_000
      [ 12%] /sdcard/rom_000
      [ 18%] /sdcard/rom_000
      [ 25%] /sdcard/rom_000
      [ 31%] /sdcard/rom_000
      [ 37%] /sdcard/rom_000
      [ 43%] /sdcard/rom_000
      [ 50%] /sdcard/rom_000
      [ 56%] /sdcard/rom_000
      [ 62%] /sdcard/rom_000
      [ 68%] /sdcard/rom_000
      [ 75%] /sdcard/rom_000
      [ 81%] /sdcard/rom_000
      [ 87%] /sdcard/rom_000
      [ 93%] /sdcard/rom_000
      [100%] /sdcard/rom_000
      /sdcard/rom_000: 1 file pulled. 4.7 MB/s (1048576 bytes in 0.212s)

      >>adb shell su -c rm /sdcard/rom_000

    • 2. Partitions.
      >>adb shell cat /proc/partitions
      major minor #blocks name
      7 0 21796 loop0
      7 1 98304 loop1
      254 0 493824 zram0
      179 0 7634944 mmcblk0
      179 1 6656 mmcblk0p1
      179 2 5120 mmcblk0p2
      179 3 10240 mmcblk0p3
      179 4 10240 mmcblk0p4
      179 5 512 mmcblk0p5
      179 6 8192 mmcblk0p6
      179 7 8192 mmcblk0p7
      179 8 16384 mmcblk0p8
      179 9 16384 mmcblk0p9
      179 10 8192 mmcblk0p10
      179 11 8192 mmcblk0p11
      179 12 8192 mmcblk0p12
      179 13 8192 mmcblk0p13
      179 14 16384 mmcblk0p14
      179 15 8192 mmcblk0p15
      179 16 8192 mmcblk0p16
      179 17 32768 mmcblk0p17
      179 18 32768 mmcblk0p18
      179 19 1761280 mmcblk0p19
      179 20 262144 mmcblk0p20
      179 21 5329408 mmcblk0p21
      179 22 44032 mmcblk0p22
      179 23 16384 mmcblk0p23
      179 96 512 mmcblk0rpmb
      179 64 4096 mmcblk0boot1
      179 32 4096 mmcblk0boot0
      253 0 5329408 dm-0

    • 3. Программа сама соединяет информацию со всех двух выводов, проверяет размеры блоков, их название.
    • 4. При копирование раздела использует именно те блоки, которые указаны в <Scatter файл> в таблице: <Block:>
    • 5. Копирование происходит поэтапно. То есть:
      • Если раздел меньше, чем размер буфера, указанного в программе, то раздел копируется целиком на карту памяти.
      • Затем с карты памяти копируется на ПК.
      • И удаляется с карты памяти.

      • Если раздел больше, чем размер буфера, указанного в программе, то программа вычисляет кратность буфера и размера раздела.
        Т.е например раздел имеет 156 Мегабайт, а буфер 16 Мегабайт, то программа выставит буфер в 13 Мегабайт, соответственно получается 12 блоков по 13 Мегабайт (12*13=156)
      • И будет 12 раз копировать блоки от раздела, размером по 13 Мегабайт на карту памяти.
      • Затем на ПК, объединять блоки.
      • И удалять блоки с карты памяти.

    • 6. Getprop. Вывод этой информации помогает программе узнать, что за платформа используется. И применить это.
      >>>>adb shell getprop
      [gsm.version.baseband]: [MOLY.WR8.W1449.MD.WG.MP.V57, 2016/05/20 09:24]
      [gsm.version.baseband1]: [MOLY.WR8.W1449.MD.WG.MP.V57, 2016/05/20 09:24]
      [gsm.version.ril-impl]: [mtk gemini ril 1.0]
      [mediatek.wlan.chip]: [CONSYS_MT6735]
      [mediatek.wlan.ctia]: [0]
      [mediatek.wlan.module.postfix]: [_consys_mt6735]
      [mtk.md1.starttime]: [0s Mon Jan 26 16:07:40 2015]
      [mtk.md1.status]: [ready]
      [mtk.md2.status]: [init_done]
      [[ro.boot.hardware]: [mt6580]
      [ro.boot.mode]: [normal]
      [ro.boot.name]: [android]
      [ro.boot.serialno]: [4TEAD6L7Q86SF6AA]
      [ro.bootimage.build.date]: [Wed May 18 12:26:48 CST 2016]
      [ro.bootimage.build.date.utc]: [1463545608]
      [ro.bootimage.build.fingerprint]: [TCL/5010X/Pixi4-5:6.0/MRA58K/v5E2E-0:user/test-keys]
      [ro.bootloader]: [unknown]
      [ro.bootmode]: [normal]
      [ro.build.characteristics]: [default]
      [ro.build.date]: [Fri May 20 09:22:43 CST 2016]
      [ro.build.date.utc]: [1463707363]
      [ro.build.description]: [full_pixi4_5-user 6.0 MRA58K v5E2E-0 release-keys]
      [ro.build.display.id]: [Marshmallow]
      [ro.build.fingerprint]: [TCL/5010D/Pixi4-5:6.0/MRA58K/v5E2E-0:user/release-keys]
      [ro.build.flavor]: [full_pixi4_5-user]
      [ro.build.host]: [persauto-81]
      [ro.build.id]: [MRA58K]
      [ro.build.product]: [Pixi4-5]
      [ro.build.version.security_patch]: [2016-05-01]
      [ro.mediatek.chip_ver]: [S01]
      [ro.mediatek.gemini_support]: [true]
      [ro.mediatek.platform]: [MT6580]
      [ro.mediatek.project.path]: [device/jrdchz/pixi4_5]
      [ro.mediatek.version.branch]: [alps-mp-m0.mp1]
      [ro.mediatek.version.release]: [alps-mp-m0.mp1-V2.34_jhz6580.we.m_P20]
      [ro.mediatek.version.sdk]: [4]
      [ro.mediatek.wlan.p2p]: [1]
      [ro.mediatek.wlan.wsc]: [1]
      [ro.mount.fs]: [EXT4]
      [ro.mtk.dex2oat_white_list]: [com.facebook:com.google.android.gms:]
      [ro.mtk_shared_sdcard]: [1]
      [ro.mtk_sim_hot_swap]: [1]
      [ro.opengles.version]: [131072]
      [ro.product.board]: []
      [ro.product.brand]: [TCL]
      [ro.product.brand1]: [Orange]
      [ro.product.cpu.abi]: [armeabi-v7a]
      [ro.product.cpu.abi2]: [armeabi]
      [ro.product.cpu.abilist]: [armeabi-v7a,armeabi]
      [ro.product.cpu.abilist32]: [armeabi-v7a,armeabi]
      [ro.product.cpu.abilist64]: []
      [ro.product.device]: [Pixi4-5]
      [ro.product.internal.id]: [Pixi4_5_3G]
      [ro.product.locale.language]: [ru]
      [ro.product.locale.region]: [RU]
      [ro.product.manufacturer]: [TCL]
      [ro.product.model]: [5010D]
      [ro.product.name]: [5010D]
      [ro.product.orangecodename]: [NA58083]
      [ro.product.usb.model]: [Alcatel Pixi 4 (5)]
    Метод 9 (GPT, Partitions, by-name)
    Для этого метода обязательно выполнение в ADB следующих команд:
    • 1. Программа копирует первый мегабайт раздела mmcblk0, и проверяет есть ли в нём GPT таблица. Если есть, то применяет их:
      >>adb shell su -c dd if=/dev/block/mmcblk0 of=/sdcard/rom_000 bs=1048576 count=1

      >>adb pull /sdcard/rom_000 C:/Rom/rom_000
      [ 6%] /sdcard/rom_000
      [ 12%] /sdcard/rom_000
      [ 18%] /sdcard/rom_000
      [ 25%] /sdcard/rom_000
      [ 31%] /sdcard/rom_000
      [ 37%] /sdcard/rom_000
      [ 43%] /sdcard/rom_000
      [ 50%] /sdcard/rom_000
      [ 56%] /sdcard/rom_000
      [ 62%] /sdcard/rom_000
      [ 68%] /sdcard/rom_000
      [ 75%] /sdcard/rom_000
      [ 81%] /sdcard/rom_000
      [ 87%] /sdcard/rom_000
      [ 93%] /sdcard/rom_000
      [100%] /sdcard/rom_000
      /sdcard/rom_000: 1 file pulled. 4.7 MB/s (1048576 bytes in 0.212s)

      >>adb shell su -c rm /sdcard/rom_000

    • 2. Partitions.
      >>adb shell cat /proc/partitions
      major minor #blocks name
      7 0 21796 loop0
      7 1 98304 loop1
      254 0 493824 zram0
      179 0 7634944 mmcblk0
      179 1 6656 mmcblk0p1
      179 2 5120 mmcblk0p2
      179 3 10240 mmcblk0p3
      179 4 10240 mmcblk0p4
      179 5 512 mmcblk0p5
      179 6 8192 mmcblk0p6
      179 7 8192 mmcblk0p7
      179 8 16384 mmcblk0p8
      179 9 16384 mmcblk0p9
      179 10 8192 mmcblk0p10
      179 11 8192 mmcblk0p11
      179 12 8192 mmcblk0p12
      179 13 8192 mmcblk0p13
      179 14 16384 mmcblk0p14
      179 15 8192 mmcblk0p15
      179 16 8192 mmcblk0p16
      179 17 32768 mmcblk0p17
      179 18 32768 mmcblk0p18
      179 19 1761280 mmcblk0p19
      179 20 262144 mmcblk0p20
      179 21 5329408 mmcblk0p21
      179 22 44032 mmcblk0p22
      179 23 16384 mmcblk0p23
      179 96 512 mmcblk0rpmb
      179 64 4096 mmcblk0boot1
      179 32 4096 mmcblk0boot0
      253 0 5329408 dm-0

    • 3. Программа ищёт папку (директорию) с именем <by-name> после папки (директории) </dev/block>. Имеет примерный вывод:
      >>adb shell ls -l /dev/block
      /dev/block: Permission denied

      >>adb shell su -c ls -l /dev/block
      brw------- root root 253, 0 2015-01-26 16:07 dm-0
      brw------- root root 7, 0 2015-01-26 16:07 loop0
      brw------- root root 7, 1 2015-01-26 16:07 loop1
      brw------- root root 7, 2 2015-01-26 16:07 loop2
      brw------- root root 7, 3 2015-01-26 16:07 loop3
      brw------- root root 7, 4 2015-01-26 16:07 loop4
      brw------- root root 7, 5 2015-01-26 16:07 loop5
      brw------- root root 7, 6 2015-01-26 16:07 loop6
      brw------- root root 7, 7 2015-01-26 16:07 loop7
      brw-rw---- root system 179, 0 2015-01-26 16:07 mmcblk0
      brw-rw---- root system 179, 32 2015-01-26 16:07 mmcblk0boot0
      brw-rw---- root system 179, 64 2015-01-26 16:07 mmcblk0boot1
      brw-rw---- root system 179, 1 2015-01-26 16:07 mmcblk0p1
      brw------- root root 179, 10 2015-01-26 16:07 mmcblk0p10
      brw-r----- root system 179, 11 2015-01-26 16:07 mmcblk0p11
      brw------- root root 179, 12 2015-01-26 16:07 mmcblk0p12
      brw-rw---- root system 179, 13 2015-01-26 16:07 mmcblk0p13
      brw------- root root 179, 14 2015-01-26 16:07 mmcblk0p14
      brw------- root root 179, 15 2015-01-26 16:07 mmcblk0p15
      brw-rw---- root system 179, 16 2015-01-26 16:08 mmcblk0p16
      brw------- root root 179, 17 2015-01-26 16:07 mmcblk0p17
      brw------- root root 179, 18 2015-01-26 16:07 mmcblk0p18
      brw------- root root 179, 19 2015-01-26 16:07 mmcblk0p19
      brw-rw---- root system 179, 2 2015-01-26 16:07 mmcblk0p2
      brw------- root root 179, 20 2015-01-26 16:07 mmcblk0p20
      brw------- root root 179, 21 2015-01-26 16:07 mmcblk0p21
      brw-r----- root system 179, 22 2015-01-26 16:07 mmcblk0p22
      brw------- root root 179, 23 2015-01-26 16:07 mmcblk0p23
      brw------- root root 179, 3 2015-01-26 16:07 mmcblk0p3
      brw------- root root 179, 4 2015-01-26 16:07 mmcblk0p4
      brw-rw---- root system 179, 5 2015-01-26 16:07 mmcblk0p5
      brw------- root root 179, 6 2015-01-26 16:07 mmcblk0p6
      brw-r----- root system 179, 7 2015-01-26 16:07 mmcblk0p7
      brw-r----- root system 179, 8 2015-01-26 16:07 mmcblk0p8
      brw-r----- root system 179, 9 2015-01-26 16:07 mmcblk0p9
      brw------- root root 179, 96 2015-01-26 16:07 mmcblk0rpmb
      drwxr-xr-x root root 2015-01-26 16:07 platform
      drwx------ root root 2015-01-26 16:07 vold
      brw------- root root 254, 0 2015-01-26 16:07 zram0

      >>adb shell su -c ls -l /dev/block/platform
      drwxr-xr-x root root 2015-01-26 16:07 mtk-msdc.0

      >>adb shell su -c ls -l /dev/block/vold

      >>adb shell su -c ls -l /dev/block/platform/mtk-msdc.0
      drwxr-xr-x root root 2015-01-26 16:07 11120000.msdc0

      >>adb shell su -c ls -l /dev/block/platform/mtk-msdc.0/11120000.msdc0
      drwxr-xr-x root root 2015-01-26 16:07 by-name
      drwxr-xr-x root root 2015-01-26 16:07 by-num
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0 -> /dev/block/mmcblk0
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0boot0 -> /dev/block/mmcblk0boot0
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0boot1 -> /dev/block/mmcblk0boot1
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0p1 -> /dev/block/mmcblk0p1
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0p10 -> /dev/block/mmcblk0p10
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0p11 -> /dev/block/mmcblk0p11
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0p12 -> /dev/block/mmcblk0p12
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0p13 -> /dev/block/mmcblk0p13
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0p14 -> /dev/block/mmcblk0p14
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0p15 -> /dev/block/mmcblk0p15
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0p16 -> /dev/block/mmcblk0p16
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0p17 -> /dev/block/mmcblk0p17
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0p18 -> /dev/block/mmcblk0p18
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0p19 -> /dev/block/mmcblk0p19
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0p2 -> /dev/block/mmcblk0p2
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0p20 -> /dev/block/mmcblk0p20
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0p21 -> /dev/block/mmcblk0p21
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0p22 -> /dev/block/mmcblk0p22
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0p23 -> /dev/block/mmcblk0p23
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0p3 -> /dev/block/mmcblk0p3
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0p4 -> /dev/block/mmcblk0p4
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0p5 -> /dev/block/mmcblk0p5
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0p6 -> /dev/block/mmcblk0p6
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0p7 -> /dev/block/mmcblk0p7
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0p8 -> /dev/block/mmcblk0p8
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0p9 -> /dev/block/mmcblk0p9
      lrwxrwxrwx root root 2015-01-26 16:07 mmcblk0rpmb -> /dev/block/mmcblk0rpmb

      >>adb shell su -c ls -l /dev/block/platform/mtk-msdc.0/11120000.msdc0/by-name
      lrwxrwxrwx root root 2015-01-26 16:07 boot -> /dev/block/mmcblk0p8
      lrwxrwxrwx root root 2015-01-26 16:07 cache -> /dev/block/mmcblk0p20
      lrwxrwxrwx root root 2015-01-26 16:07 expdb -> /dev/block/mmcblk0p14
      lrwxrwxrwx root root 2015-01-26 16:07 flashinfo -> /dev/block/mmcblk0p23
      lrwxrwxrwx root root 2015-01-26 16:07 frp -> /dev/block/mmcblk0p16
      lrwxrwxrwx root root 2015-01-26 16:07 keystore -> /dev/block/mmcblk0p12
      lrwxrwxrwx root root 2015-01-26 16:07 lk -> /dev/block/mmcblk0p6
      lrwxrwxrwx root root 2015-01-26 16:07 logo -> /dev/block/mmcblk0p7
      lrwxrwxrwx root root 2015-01-26 16:07 metadata -> /dev/block/mmcblk0p18
      lrwxrwxrwx root root 2015-01-26 16:07 mobile_info -> /dev/block/mmcblk0p15
      lrwxrwxrwx root root 2015-01-26 16:07 nvdata -> /dev/block/mmcblk0p17
      lrwxrwxrwx root root 2015-01-26 16:07 nvram -> /dev/block/mmcblk0p2
      lrwxrwxrwx root root 2015-01-26 16:07 oemkeystore -> /dev/block/mmcblk0p10
      lrwxrwxrwx root root 2015-01-26 16:07 otp -> /dev/block/mmcblk0p22
      lrwxrwxrwx root root 2015-01-26 16:07 para -> /dev/block/mmcblk0p5
      lrwxrwxrwx root root 2015-01-26 16:07 proinfo -> /dev/block/mmcblk0p1
      lrwxrwxrwx root root 2015-01-26 16:07 protect1 -> /dev/block/mmcblk0p3
      lrwxrwxrwx root root 2015-01-26 16:07 protect2 -> /dev/block/mmcblk0p4
      lrwxrwxrwx root root 2015-01-26 16:07 recovery -> /dev/block/mmcblk0p9
      lrwxrwxrwx root root 2015-01-26 16:07 seccfg -> /dev/block/mmcblk0p13
      lrwxrwxrwx root root 2015-01-26 16:07 secro -> /dev/block/mmcblk0p11
      lrwxrwxrwx root root 2015-01-26 16:07 system -> /dev/block/mmcblk0p19
      lrwxrwxrwx root root 2015-01-26 16:07 userdata -> /dev/block/mmcblk0p21

    • 4. Программа сама соединяет информацию со всех трёх выводов, проверяет размеры блоков, их название.
    • 5. При копирование раздела использует именно те блоки, которые указаны в <Scatter файл> в таблице: <Block:>
    • 6. Копирование происходит поэтапно. То есть:
      • Если раздел меньше, чем размер буфера, указанного в программе, то раздел копируется целиком на карту памяти.
      • Затем с карты памяти копируется на ПК.
      • И удаляется с карты памяти.

      • Если раздел больше, чем размер буфера, указанного в программе, то программа вычисляет кратность буфера и размера раздела.
        Т.е например раздел имеет 156 Мегабайт, а буфер 16 Мегабайт, то программа выставит буфер в 13 Мегабайт, соответственно получается 12 блоков по 13 Мегабайт (12*13=156)
      • И будет 12 раз копировать блоки от раздела, размером по 13 Мегабайт на карту памяти.
      • Затем на ПК, объединять блоки.
      • И удалять блоки с карты памяти.

    • 7. Getprop. Вывод этой информации помогает программе узнать, что за платформа используется. И применить это.
      >>>>adb shell getprop
      [gsm.version.baseband]: [MOLY.WR8.W1449.MD.WG.MP.V57, 2016/05/20 09:24]
      [gsm.version.baseband1]: [MOLY.WR8.W1449.MD.WG.MP.V57, 2016/05/20 09:24]
      [gsm.version.ril-impl]: [mtk gemini ril 1.0]
      [mediatek.wlan.chip]: [CONSYS_MT6735]
      [mediatek.wlan.ctia]: [0]
      [mediatek.wlan.module.postfix]: [_consys_mt6735]
      [mtk.md1.starttime]: [0s Mon Jan 26 16:07:40 2015]
      [mtk.md1.status]: [ready]
      [mtk.md2.status]: [init_done]
      [[ro.boot.hardware]: [mt6580]
      [ro.boot.mode]: [normal]
      [ro.boot.name]: [android]
      [ro.boot.serialno]: [4TEAD6L7Q86SF6AA]
      [ro.bootimage.build.date]: [Wed May 18 12:26:48 CST 2016]
      [ro.bootimage.build.date.utc]: [1463545608]
      [ro.bootimage.build.fingerprint]: [TCL/5010X/Pixi4-5:6.0/MRA58K/v5E2E-0:user/test-keys]
      [ro.bootloader]: [unknown]
      [ro.bootmode]: [normal]
      [ro.build.characteristics]: [default]
      [ro.build.date]: [Fri May 20 09:22:43 CST 2016]
      [ro.build.date.utc]: [1463707363]
      [ro.build.description]: [full_pixi4_5-user 6.0 MRA58K v5E2E-0 release-keys]
      [ro.build.display.id]: [Marshmallow]
      [ro.build.fingerprint]: [TCL/5010D/Pixi4-5:6.0/MRA58K/v5E2E-0:user/release-keys]
      [ro.build.flavor]: [full_pixi4_5-user]
      [ro.build.host]: [persauto-81]
      [ro.build.id]: [MRA58K]
      [ro.build.product]: [Pixi4-5]
      [ro.build.version.security_patch]: [2016-05-01]
      [ro.mediatek.chip_ver]: [S01]
      [ro.mediatek.gemini_support]: [true]
      [ro.mediatek.platform]: [MT6580]
      [ro.mediatek.project.path]: [device/jrdchz/pixi4_5]
      [ro.mediatek.version.branch]: [alps-mp-m0.mp1]
      [ro.mediatek.version.release]: [alps-mp-m0.mp1-V2.34_jhz6580.we.m_P20]
      [ro.mediatek.version.sdk]: [4]
      [ro.mediatek.wlan.p2p]: [1]
      [ro.mediatek.wlan.wsc]: [1]
      [ro.mount.fs]: [EXT4]
      [ro.mtk.dex2oat_white_list]: [com.facebook:com.google.android.gms:]
      [ro.mtk_shared_sdcard]: [1]
      [ro.mtk_sim_hot_swap]: [1]
      [ro.opengles.version]: [131072]
      [ro.product.board]: []
      [ro.product.brand]: [TCL]
      [ro.product.brand1]: [Orange]
      [ro.product.cpu.abi]: [armeabi-v7a]
      [ro.product.cpu.abi2]: [armeabi]
      [ro.product.cpu.abilist]: [armeabi-v7a,armeabi]
      [ro.product.cpu.abilist32]: [armeabi-v7a,armeabi]
      [ro.product.cpu.abilist64]: []
      [ro.product.device]: [Pixi4-5]
      [ro.product.internal.id]: [Pixi4_5_3G]
      [ro.product.locale.language]: [ru]
      [ro.product.locale.region]: [RU]
      [ro.product.manufacturer]: [TCL]
      [ro.product.model]: [5010D]
      [ro.product.name]: [5010D]
      [ro.product.orangecodename]: [NA58083]
      [ro.product.usb.model]: [Alcatel Pixi 4 (5)]
Пока на этом всё. Надеюсь программа вам поможет. Методы и инструкции будут пополняться!
Видео инструкции
Замеченные ошибки
2.30 версия
  • В <Автопилоте> после сканирования, поиска разделов, не правильно срабатывает функция определения считанных разделов, но можно поправить вручную, то есть, если раздел был считан включительно по систем (вместе с <system>), то авто выбор не включит флажок на нём, т.е авто выбор не включает последний считанный раздел.
    Способ решения: После сканирования в <Автопилоте>, когда программа предлагает зайти в <Scatter файл> и снять ненужные флажки на разделах, необходимо зайти и поставить флажок, на нужном последнем разделе, по который был считан ROM файл. Если у Вас полный ROM, то ничего страшного, всё пройдет нормально.

  • Иногда неправильно вытаскивает Preloader, ничего страшного не произойдёт, т.к SP Flash Tool скажет Вам об этом, что Preloader не Preloader.
    Ошибка исправлена, в новой версии всё будет хорошо.
    Способ решения: Воспользоваться вот этим: SP Flash Tool - программа-прошивальщик для смартфонов на базе MTK.(Пост RealYoti #62066982)

  • Программа крашится, если в разделе PGPT больше 50 позиций наименования разделов. Ошибка исправлена, в новой версии всё будет хорошо.
    Способ решения: Пока нету способов решения, так как это может только WwR_MTK (Вытаскивать информацию из PGPT), может конечно и есть решения, надо искать в темах или программах переразметки памяти устройств.

  • Когда программа создаёт Scatter файл из найденных значений, она прогоняет названия разделов по некоторому шаблону, файлу <Template.ini> в котором указаны какие разделы шьются, а какие нет. И если в этом файле шаблоне нет нужного раздела, то он автоматически выставляется как <Update>, т.е прошиваться. В Новой версии будет наоборот, все позиции разделов будут выставляться как не прошивочные и потом только будут проходить по шаблону.
Прошлые версии


Дополнение к созданным scatter файлам:
Если Вы используете созданный scatter файл для прошивки устройства, то необходимо уменьшить длину раздела UserData в самом scatter файле до 3Гб (0xC0000000), тема: WwR MTK (Пост vvaaavv #70864827)

О криптованном разделе UserData

Слить прошивку с одного устройства и прошить эту прошивку в другое устройство

Как правильно использовать режим <Write Memory> в SP Flash Tool

Пост про Разблокированный загрузчик, и почему не надо такие устройства форматировать!!!

Всем привет. Прошу протестировать. Может будут какие-то ошибки на разных версиях платформы. Всё не успел доработать.
Исправления и доработки продолжаются, чуть ли не каждый день

Для обращение в тему, формулируйте свои вопросы и пожелания более чётко, грамотно, подробно.. тем самым будет меньше вопросов.
Если в программе что-то не работает, или работает но не корректно, просьба заранее подготовить ваш Backup к рассмотрению. Для этого упакуйте его в архив (желательно *.7z), разместите где-нибудь на облачном хранилище (Яндекс диск, Облако Mail.Ru, Google диск) и дать ссылку автору программы в QMS. За ваши данные можете не переживать, ничего, никогда в народ не уходило. Или можете вырезать раздел UserData и всё после него (Для вашей уверенности).
И помните,.. каждый присланный backup улучшает работоспособность программы!


Большое спасибо UM4 за исправление шапки!

Сообщение отредактировал vvaaavv - 25.01.24, 10:44
Причина редактирования: Изменение шапки темы и инструкции в связи с выходом новой версии программы



Реп: (0)
круто, как проверю отпишусь ;)



Реп: (2)
Я правильно понял, что этой прогой можно, наподобие Victoria, не использовать (отключать) ненужные коцаные участки памяти NAND?



Реп: (659)
ilabuu03 @ 01.05.17, 02:53 *
Я правильно понял, что этой прогой можно, наподобие Victoria, не использовать (отключать) ненужные коцаные участки памяти NAND?


Я не понял тебя..
Victoria - это программа, для работы с жёсткими дисками.
Пиши в личку..

Сообщение отредактировал vvaaavv - 02.05.17, 01:01



Реп: (2046)
* vvaaavv,
Спасибо за работу. Попробовал на своём аппарате (в подписи) вытянуть preloader - утилита справилась без вопросов.



Реп: (18)
Отличная программа. Спасибо большое.



Реп: (659)
Всем привет. С праздником 9 мая.
Подправил программку.

В версии 2.15 Исправлены мелкие недочёты. (Неправильно находил последнюю FF на концах и исправление для MT6589 скаттер файл старого образца)
Вообще нужно проверить для платформы MT6589. (Найду буду тестировать)



Реп: (1506)
* vvaaavv,
доброго времени суток!
совершенно случайно наткнулся на вашу тему с данной програмкой, очень удобная штука..! за что вам отдельная благодарность в виде плюса!
когда то искал подобное но безуспешно...с появлением новых мтк процессоров иногда приходится и скаттер вручную делать и разделы сливать..
честно говоря уже давно научился делать все эти фокусы вручную но приложение будет очень популярным ,я в этом не сомневаюсь..и ссылку на данную тему давно нужно закинуть в тему флештула(хотя она может и там уже!?)
...ну и воспользовавшись случаем у меня к вам сразу же вопрос назрел..,испытав прогу ради спортивного интереса
я не совсем понял один нюанс:
допустим имею я 64битную платформу с камнем мтк6755..когда то в свое время слил ROM который валяется у меня на компе..
через какое то время(с появлением опыта) я узнал что раздел preloader находится в другом регионе нежели остальные разделы..соответственно в моем слитом роме его быть просто не должно!?
но при попытке разрезать ROM на куски по скаттеру ,ваша прога успешно создает образ preloader из rom-a что слит с региона EMMC_USER
и как так получается?..прелоадер ведь находится в регионе EMMC_BOOT1_BOOT2
думаю суть моего вопроса вам понятна!?

Сообщение отредактировал serg2327 - 10.05.17, 05:52



Реп: (659)
serg2327 @ 09.05.17, 20:01 *
прелоадер находится в регионе EMMC_BOOT1_BOOT2


Да именно EMMC_BOOT1_BOOT2
Просто во всех телефонах на MT67xx, если есть раздел PGPT, и по нему делать скаттер, то прога прописывает два раздела сама: 1) Preloader - EMMC_BOOT1 и 2) PGPT - EMMC_USER
Заметил, что везде, где есть раздел PGPT, он идёт в самом начале EMMC_USER, и в самом PGPT нет никакой информации о прелоадере и самом PGPT.

serg2327 @ 09.05.17, 20:01 *
но при попытке разрезать ром на куски по скаттеру ,ваша прога успешно создает образ preloader из рома что слит с региона EMMC_USER


И поэтому здесь может быть неправильно, прога просто не знает об этих нюансах, там в скаттере два первых раздела начинаются с 0х0 (это preloader и pgpt). Верным будет только PGPT....

Вообщем понял, добавлю именно для MT67xx с разделами PGPT, чтобы не выбирал раздел на разрезку EMMC_BOOT1_BOOT2.

Сообщение отредактировал vvaaavv - 09.05.17, 21:05



Реп: (1506)
* vvaaavv,

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

Конечно же если воспользоваться в программе вкладкой "preloader" подсунув нужный ROM с прелоадером то программа корректно вытаскивает его из рома..
В любом случае ,считаю что данный конструктор это шедевр который очень быстро станет популярным, потому как аналогов просто нет!

Сообщение отредактировал serg2327 - 09.05.17, 21:13



Реп: (2046)
vvaaavv @ 09.05.17, 20:49 *
именно для MT67xx
Не только для этих камней... К примеру 6580 так же имеет GPT разметку. Может стоит сделать какую-то проверку содержания начала ROM'а и уже исходя из того, какие данные содержатся, ну к примеру в первом мегабайте, обозначать пользователю, что он получит на выходе и что это за ROM (если это конечно возможно технически).
UPD. Вы же прелоадер именно так вырезаете? Соответственно, если утилита увидит содержание соответствующее sgpt - оповестит пользователя об этом. Ну как-то так...

Сообщение отредактировал Bodya-Kolibass - 09.05.17, 21:07



Реп: (659)
Bodya-Kolibass @ 09.05.17, 21:04 *
Соответственно, если утилита увидит содержание соответствующее sgpt - оповестит пользователя об этом. Ну как-то так...


Хорошая идея. буду реализовывать.



Реп: (659)
serg2327 @ 09.05.17, 21:02 *
неопытные юзеры могут нарезать свой ром и не дай бог воспользуются фальшивым прелоадером который создает прога из рома


Прелоадер ищется по определённым сигнатурам, если их нет, то и прелоадер вытащить из Rom файла не получится..
Ну тут я тоже всё понял.. допилю, для юзеров, если прелоадера нет в Rom`е то и разать его не надо...

Да и вообще резать раздел с прелоадером, тоже не правильно... Его ведь ещё и вытащить надо. Ладно я знаю, как сделать вообще правильно.

Сообщение отредактировал vvaaavv - 09.05.17, 21:28



Реп: (659)
Всё реализовано.
Теперь в версии 2.20 Автоматически при разрезании ROM (если флажок стоит на Preloader) Не просто режет раздел, а вытаскивает прелоадер, если он там есть конечно.
Если прелоадера там нет, а флажок стоит, то этот раздел будет проигнорирован.



Реп: (31)
* vvaaavv,
кнопка не доступна :blush:
Прикрепленное изображение

M
Правила раздела и FAQ по созданию тем
- при добавлении скриншотов в сообщение убирать изображения в спойлер Как убирать изображения под спойлер.


Сообщение отредактировал vadeus - 10.05.17, 12:46



Реп: (937)
* 82ronin, Кусок непонятно чего вы выбрали и хотите с него прошивку получить



Реп: (31)
* Sedy,
разрезать РОМ, я и показал РОМ ;)
или скатер должен первым показать?

Сообщение отредактировал 82ronin - 10.05.17, 12:03



Реп: (937)
* 82ronin, Вы уверены что это ром и его размер вас не смущает? И неизвестно с какого стартового адреса он считан.



Реп: (31)
* Sedy,
не смущает, там нету кэш и юзердата.
уже есть разрезанные регионы.
П.С.
я просто тестирую прогу, хочу узнать что она умеет...

Сообщение отредактировал 82ronin - 10.05.17, 12:41



Реп: (659)
82ronin @ 10.05.17, 12:40 *
я просто тестирую прогу, хочу узнать что она умеет...


Небольшая инструкция.
Скаттер файл из воздуха не получается пока сделать (то ли волшебство закончилось, то ли ещё что) :)
Поэтому, если идёт речь только о ROM файле, без соответствующего скаттер файла, которого у Вас нет.
Переходим во вкладку <Поиск разделов>, там тыкаем кнопочку <Начать поиск>, и надеемся (можно перекреститься и помолиться), чтобы нашлись разделы типа PMT или PGPT, только в них точно указаны какие регионы есть в ROM файле, и никак не иначе.. Там же можно примерно посмотреть какие разделы могут находиться по адресам, НО ЭТО ПРИМЕРНО, И НЕ ТОЧНО, И ПОЭТОМУ НЕЛЬЗЯ СОЗДАТЬ СКАТТЕР ФАЙЛ!!!
Скаттер файл создаётся только из разделов PMT или PGPT, или используйте скаттер который идёт к вашей прошивки, если вы в этом уверены, Если не уверены то сравните скаттер файл и результат поиска разделов по старту и длине...



Реп: (31)
* vvaaavv, спасибо, я так и понял.

Сообщение отредактировал 82ronin - 10.05.17, 17:24


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

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

Сейчас: 29.03.24, 14:13