Как изменить scatter файл

Что такое scatter-файл?

Что такое scatter-файл?

Разметка памяти, то есть разбивка на разделы, на устройствах с чипсетом MediaTek происходит при помощи файла, который называется «scatter-файл». Данный файл используется программой по прошивке устройств на MeidiaTek, а именно SP Flash Tool, при прошивке полного образа памяти устройства или же его отдельных частей, так называемых разделов. Структура scatter-файла содержит описание всех существующих разделов памяти устройства. Существует две версии scatter-файла.

Scatter-файл первой версии

Данная версия scatter-файла используется на большинстве устройств на MediaTek. Полное описание раздела памяти представляет из себя следующее:

Код:

[__NODL_]name offset [length]
{
}

Здесь:

  • __NODL_ (No download) — означет что данный раздел памяти будет пропущен программой по прошивке и для работы данного раздела не требуется его наличие. Такой раздел можно вообще исключить из scatter-файла;
  • name — имя раздела;
  • offset — смещение раздела от начала памяти в 16-ричном виде (байт);
  • length — длина раздела в 16-ричном виде (байт);
  • параметры в квадратных скобках не обязательные

Описание раздела такого вида, предполагает что каждый раздел имеет длину до начала следующего и что между двумя разделами не существует третьего, скрытого раздела. Ниже приведёт пример scatter-файла первой версии для MediaTek MT6589:

Код:

PRELOADER 0x0
{
}
MBR 0x600000
{
}
EBR1 0x680000
{
}
__NODL_PMT 0x700000
{
}
__NODL_PRO_INFO 0xb00000
{
}
__NODL_NVRAM 0xe00000
{
}
__NODL_PROTECT_F 0x1300000
{
}
__NODL_PROTECT_S 0x1d00000
{
}
__NODL_SECCFG 0x2700000
{
}
UBOOT 0x2720000
{
}
BOOTIMG 0x2780000
{
}
RECOVERY 0x2d80000
{
}
SEC_RO 0x3380000
{
}
__NODL_MISC 0x3980000
{
}
LOGO 0x3a00000
{
}
EBR2 0x3d00000
{
}
__NODL_EXPDB 0x3d80000
{
}
ANDROID 0x4780000
{
}
CACHE 0x2d180000
{
}
USRDATA 0x34f80000
{
}
__NODL_FAT 0x74f80000
{
}
__NODL_BMTPOOL 0xffff00a8
{
}

Scatter-файл второй версии

В данном варианте scatter-файла, полное описание каждого отдельного раздела памяти представляет собой следующий набор строк:

Код:

partition_index: SYS1
  partition_name: MBR
  file_name: MBR
  is_download: true
  type: NORMAL_ROM
  linear_start_addr: 0x0
  physical_start_addr: 0x0
  partition_size: 0x80000
  region: EMMC_USER
  storage: HW_STORAGE_EMMC
  boundary_check: true
  is_reserved: false
  operation_type: UPDATE
  reserve: 0x00

Здесь:

  • partition_index — индексный номер раздела, в нашем примере SYS1;
  • partition_name — имя раздела, в нашем примере MBR;
  • file_name — имя файла который содержим образ данного раздела или «NONE» (значит нет раздела);
  • is_download — параметр определящий будет ли загружен раздел, по типу «__NODL_» из первого варианта scatter-файла;
  • type — тип раздела, параметр который указывает содержимое данного раздела, может принимать следующие значения:
    • EXT4_IMG — раздел содержащий часть файловой системы EXT4;
    • NORMAL_ROM — раздел содержащий сохранённый образ или отдельный файл;
    • SV5_BL_BIN — раздела содержащий, так называемый, «сырой код» (Raw code), то есть исполняемый код;

  • linear_start_addr — начальный адрес размещения раздела в файле прошивки (байт);
  • physical_start_addr — начальный адрес размещения раздела в памяти устройства, то есть физический адрес (байт);
  • partition_size — размер раздела (байт);
  • region — размещение раздела, может иметь следующие значения:
    • EMMC_BOOT —
    • EMMC_USER —

  • storage —
  • boundary_check — означает необходимость отметки границ раздела;
  • is_reserved — нужно ли резервное копирование раздела;
  • operation_type — тип операции, может иметь следующие значения:
    • BINREGION — обасть «сырого кода» (raw code);
    • BOOTLOADERS — загрузчик;
    • INVISIBLE — невидимый раздел;
    • PROTECTED — защищённый раздел;
    • RESERVED — зарезервированный раздел;
    • UPDATE — обновляемый раздел:

  • reserve —

Работа со scatter-файлом:

SP Flash Tool использует scatter-файл, только для полной разметки памяти, если вы прошиваете один или несколько разделов, то программа по прошивке берёт расположение разделов из внутренней базы, а именно файла PMT (Partitions Map Table). Происходит считывание значения смещения раздела, то есть физический адрес, и прошивается образ раздела в память, начиная с физического адреса.

Поскольку scatter-файл содержит список всех физических адресов разделов, то изменив его можно произвести переразметку памяти. Делается это путем смены значений смещения необходимых разделов. Нарпимер, такой раздел как USRDATA содержит в себе данные программ пользователя, поэтому чаще всего переполняется и ползователь может увидеть сообщения типа «Память переполнена» и так далее. В обычном scatter-файле, данный раздел имеет смещение «0x34f80000» и размер «0x74f80000-0x34f80000=0х40000000» (или 1073741824= 1Гб). Если увеличить данный раздел на 256 Мб (268435456), то «1073741824+268435456=1342177280 (или 0х50000000 в hex), то есть мы добавили в раздел еще 0х10000000. При этом смещение данного раздела переместится на эту же величину: было 0х74f80000, а стало 0х84f80000. Если поступить таким образом со смещением всех разделов, то они все переместятся на данную величину, что увеличит общий размер памяти занимаемый прошивкой, а этого делать нельзя. Поэтому необходимо уменьшить размер какого-то из последующих разделов, в нашем случае это FAT (раздел пользователя)

Хорошо, значит, у вас есть устройство Android с чипом Mediatek внутри. Похоже, вы тот, кто любит рутировать, устанавливать пользовательские ПЗУ, модифицировать исправления и настраивать свое устройство Android, чтобы получить от него максимальную отдачу. Что ж, великий человек всегда должен быть готов к этому. В любом случае, если вы какое-то время занимались подобными вещами на своем Android-устройстве, то есть вероятность, что в какой-то момент вы, должно быть, встретили термин «Scatter File». Может быть, при прошивке стоковой прошивки или восстановлении IMEI / NVRAM.

Как бы то ни было, дело в том, что вы хотите создать Scatter-файл для своего Android-устройства, и вы хотите сделать это быстро. Не волнуйтесь, мы в GetDroidTips позаботимся о вас. Сегодня в этом посте мы рассмотрим тему, Что такое Scatter File txt? Как создать Scatter-файл для любого Android MediaTek устройство?.

Что такое Scatter File txt? Как создать файл Scatter для любого устройства Android MediaTek?

Теперь, если это звучит интересно, давайте приступим к делу. Сначала давайте взглянем на Что такое текстовый файл Scatter? можем ли мы?

Оглавление

  • 1 Что такое Scatter File txt?
  • 2 Как создать файл Scatter для любого устройства Android MediaTek?

    • 2.1 Предпосылки
    • 2.2 Как создать файл Scatter для любого устройства Android MediaTek?

Что такое Scatter File txt?

Scatter-файл — это файл .txt, который используется для описания множества регионов в устройстве Android, работающем на архитектуре MediaTek ARM. Обычно такие файлы необходимы во время прошивки с помощью таких инструментов, как SP Flash Tool. В большинстве случаев мы можем легко разблокировать Android-устройство, установив стандартную прошивку.

Итак, теперь, когда вы знаете, что на самом деле представляет собой файл разброса, давайте перейдем к Как создать файл Scatter для любого устройства Android MediaTek? Можем ли мы?

Как создать файл Scatter для любого устройства Android MediaTek?

Теперь, чтобы создать файл разброса для любого устройства Android MediaTek, вам потребуются некоторые из предварительных условий. Давайте посмотрим на них.

Предпосылки

  • Ваше устройство Android должно быть основано на структуре Mediatek ARM.
  • Кабель USB.
  • Для выполнения этой настройки вам потребуется ПК.
  • Вам необходимо загрузить и установить последнюю версию MTK Droid Tools на свой ПК с Windows. Вы можете посмотреть наш пост на Загрузить MTK Droid Tool [Доступна последняя версия]
  • Драйверы для вашего устройства Android должны быть установлены на вашем ПК с Windows. [Загрузите USB-драйверы для Android]

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

Как создать файл Scatter для любого устройства Android MediaTek?

Теперь, чтобы создать файл разброса для вашего устройства Android MediaTek, вам необходимо внимательно выполнить следующие действия:

  • Прежде всего, убедитесь, что вы загрузили и установили MTK Droid Tools на свой ПК с Windows сверху.
  • Теперь запустите файл MTK Droid Tool.exe на вашем ПК.
  • Подключите устройство Android Mediatek к компьютеру с помощью кабеля USB.
  • Теперь убедитесь, что у вас есть USB отладки включен на вашем устройстве. Вы можете включить его, просто перейдя в Настройки >> О телефоне >> нажмите на номер сборки 7 раз на вашем устройстве Android. Теперь вернитесь в настройки и нажмите на Параметры разработчика и включить USB отладки.
  • Когда вы увидите информацию о своем устройстве в MTK Droid Tool, просто нажмите на Карта блоков кнопка.

нажмите кнопку "Карта блоков"

  • Теперь откроется новое окно. Здесь нажмите на Создать Scatter кнопка.

нажмите на Create Scatter

  • Теперь выберите каталог, в котором вы хотите сохранить файл Scatter, и нажмите Сохранить

нажмите на Сохранить

  • Вот и все, теперь отключите смартфон Android от компьютера.

Теперь ваш файл разброса будет сохранен в выбранной вами папке.

Вот и все, ребята, это был наш подход Что такое Scatter File txt? Как создать файл Scatter для любого устройства Android MediaTek? Мы надеемся, что вы нашли это руководство полезным. На всякий случай, если вы застряли где-то между шагами или у вас есть какие-либо вопросы, связанные с темой, не стесняйтесь оставлять их в разделе комментариев ниже.

Привет! Я Абхинав Джайн, 19-летний веб-разработчик, дизайнер, специалист по цифровому маркетингу и энтузиаст технологий из Нью-Дели, Индия. Я студент компьютерных приложений, который также является фрилансером и работает над некоторыми классными веб-сайтами.

Listen to this article

В данной статье будет описан способ как удалить Google аккаунт со смартфона, который не удается активировать после сброса. Тут будет описан процесс сброса для смартфонов на базе процессоров MediaTek. Для начало работы нам потребуется программа для прошивки и скатер файл (скачать под свою модель процессора можно прямо из этой статьи)

Где взять адреса из памяти? Как узнать что именно вводить для форматирования? А ответ прост — открываем scatter-файл из заводской прошивки, находим блок FRP и переписываем оттуда размер и адрес.

Работа с FlashTool

1. Открыть SP Flash Tool и выбрать Scatter-файл.

2. Перейти во вкладку Format, далее отметить Manual Format Flash.

3. Выставить необходимые значения, нажать Start, подключить устройство. По окончанию будет маленькое окошко «ОК».

Далее вставляете эти значения в программу

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

«Симптомы»:
сделали полный сброс настроек в настройках телефона или в recovery и при включении телефона требуется ввести логин и пароль к учётке google, после ввода которого пишет, что логин и пароль неверен забыли пароль от аккаунта гугл или сам логин

Форматирование раздела FRP (Factory Reset Protection)

Переименованные файлы после скачивания, желательно вернуть к исходному, по шаблону — MTхххх_Android_scatter.txt

MT6570

MT6570
MT6570_Android_scatter.txt ( 9,17 КБ )
Region: EMMC_USER
Begin Address[HEX]: 0x4fa0000
Format Length[HEX]: 0x100000

MT6572

MT6572 Irbis TZ 55
MT6572_Android_scatter.txt ( 7,37 КБ )
Region: EMMC_USER
Begin Address[HEX]: 0x6b40000
Format Length[HEX]: 0x100000

MT6572 Tele2 Mini
MT6572_Android_scatter_Tele2_Mini.txt ( 7,05 КБ )
Region: EMMC_USER
Begin Address[HEX]: 0x3e40000
Format Length[HEX]: 0x100000

MT6572 Prestigio 3137
MT6572_Android_scatter_Prestigio_3137.txt

MT6580

MT6580
MT6580_Android_scatter.txt ( 9,17 КБ )
Region: EMMC_USER
Begin Address[HEX]: 0x4fa0000
Format Length[HEX]: 0x100000

MT6580 Alcatel 4034D
MT6580_Android_scatter_Alcatel_4034D.txt ( 10,06 КБ )
Region: EMMC_USER
Begin Address[HEX]: 0x9000000
Format Length[HEX]: 0x800000

MT6580 Alcatel 5010D
MT6580_Android_scatter_5010D.txt ( 9,57 КБ )
Region: EMMC_USER
Begin Address[HEX]: 0x9000000
Format Length[HEX]: 0x800000

MT6580 Alcatel 5025D
MT6580_Android_scatter_Alcatel_5025D.txt ( 9,93 КБ )
Region: EMMC_USER
Begin Address[HEX]: 0x41000000
Format Length[HEX]: 0x800000

MT6580 Archos 101b
MT6580_Android_scatter_Archos_101b.txt ( 8,84 КБ )
Region: EMMC_USER
Begin Address[HEX]: 0x5240000
Format Length[HEX]: 0x100000

MT6580 Fly FS504
MT6580_Android_scatter_FS504.txt ( 8,54 КБ )
Region: EMMC_USER
Begin address(HEX): 0x0000000004fa0000
Format length(HEX): 0x0000000000100000

MT6580 LG K7
MT6580_Android_scatter_LG_K7.txt ( 8,51 КБ )
Region: EMMC_USER
Begin address(HEX): 0x24fc0000
Format length(HEX): 0x100000

MT6582
MT6582_Android_scatter.txt ( 7,44 КБ )

MT6735

MT6735
MT6735_Android_scatter.txt ( 9,16 КБ )
Region: EMMC_USER
Begin Address[HEX]: 0x6a00000
Format Length[HEX]: 0x100000

MT6735M
MT6735M_Android_scatter.txt ( 9,17 КБ )
Region: EMMC_USER
Begin Address[HEX]: 0x6a00000
Format Length[HEX]: 0x100000

MT6735M Alcatel Pixi 3 5019D
MT6735M_Android_scatte_Alcatel_Pixi3_5019D.txt ( 10,2 КБ )
Region: EMMC_USER
Begin Address[HEX]: 0x4d000000
Format Length[HEX]: 0x800000

MT6735 Honor 4c Pro
MT6735_Android_scatter_Honor_4C_Pro.txt ( 10,47 КБ )
Download Agent: DA_SWSEC.zip
Region: EMMC_USER
Begin Address[HEX]: 0x1a600000
Format Length[HEX]: 0x100000
Если не помогло, то прошиваем чистый раздел FRP

MT6735P Lenovo C2/C2 Power
Lenovo_C2_K10A40.zip ( 2,54 МБ )
Download Agent — DA_SWSEC_CRYPTO20_K10a40.bin
Region: EMMC_USER
Begin Address[HEX]: 0x6a00000
Format Length[HEX]: 0x100000

MT6735P ZTE Blade A510
MT6735M_Android_scatter_ZTE_A510.txt ( 10,26 КБ )
Region: EMMC_USER
Begin Address[HEX]: 0x1FA80000
Format Length[HEX]: 0x100000

MT6737

MT6737M
MT6737M_Android_scatter.txt ( 9,86 КБ )
Region: EMMC_USER
Begin Address[HEX]: 0x6a00000
Format Length[HEX]: 0x100000

MT6737M Alcatel U5 5044D
MT6737M_Android_scatter_Alcatel_U5_5044D.txt ( 11,64 КБ )
Region: EMMC_USER
Begin Address[HEX]: 0xe000000
Format Length[HEX]: 0x800000

MT6737M Moto E4 Plus XT1771
MT6737M_Android_scatter_Moto_E4_Plus_XT1771.txt ( 11,92 КБ )
Region: EMMC_USER
Begin Address[HEX]: 0x9c80000
Format Length[HEX]: 0x100000

MT6737M ZTE Blade A520
MT6737M_Android_scatter_ZTE_Blade_A520.txt ( 10,2 КБ )
Region: EMMC_USER
Begin Address[HEX]: 0x6a80000
Format Length[HEX]: 0x100000

MT6737T
MT6737T_Android_scatter.txt ( 9,17 КБ )
Region: EMMC_USER
Begin Address[HEX]: 0x6a00000
Format Length[HEX]: 0x100000

MT6737T Asus ZenFone 3 MAX ZC520TL X008D
MT6737T_Android_scatter_Asus_ZC520TL.txt ( 10,15 КБ )
Region: EMMC_USER
Begin Address[HEX]: 0x13c00000
Format Length[HEX]: 0x100000

MT6750

MT6750
MT6750_Android_scatter.txt ( 12,68 КБ )
Region: EMMC_USER
Begin Address[HEX]: 0x1a88000
Format Length[HEX]: 0x100000

MT6750 Philips X588
MT6750_Android_scatter_Philips_X588.txt ( 12,68 КБ )
Region: EMMC_USER
Begin Address[HEX]: 0x1a88000
Format Length[HEX]: 0x100000

MT6750 Oukitel K6000 Plus
MT6750_Android_scatter_Oukitel_K6000_Plus.txt ( 12,68 КБ )
SP Flash Tool + Driver + Scatter — Oukitel_K6000_Plus_FRP.zip ( 87,01 МБ )
Download Agent: DA_PL.bin
Region: EMMC_USER
Begin Address[HEX]: 0x1a88000
Format Length[HEX]: 0x100000

MT6752
MT6752_Android_scatter.txt ( 8,84 КБ )
Region: EMMC_USER
Begin Address[HEX]: 0xafa0000
Format Length[HEX]: 0x800000

MT6753
MT6753_Android_scatter.txt ( 9,17 КБ )
Region: EMMC_USER
Begin Address[HEX]: 0x6a00000
Format Length[HEX]: 0x100000

MT6755

MT6755 v2
MT6755_Android_scatter.txt ( 1,06 КБ )
Region: EMMC_USER
Begin Address[HEX]: 0x3F88000
Format Length[HEX]: 0x100000

MT8127 Alcatel Pixi4 7′
MT8127_Android_scatter_Pixi4-7.txt ( 9,53 КБ )
Region: EMMC_USER
Begin address(HEX): 0x37d80000
Format length(HEX): 0x100000

MT8163
MT8163_Android_scatter.txt ( 9,12 КБ )
Region: EMMC_USER
Begin address(HEX): 0x85a0000
Format length(HEX): 0x100000

———-

ДОПОЛНИТЕЛЬНЫЙ КАТАЛОГ FRP

Всё, после включения устройства никакой привязки к аккаунту google не будет.


Если Вам понравилась статья — поделитесь с друзьями

15 901 просмотров

Отказ от ответственности: Автор или издатель не публиковали эту статью для вредоносных целей. Вся размещенная информация была взята из открытых источников и представлена исключительно в ознакомительных целях а также не несет призыва к действию. Создано лишь в образовательных и развлекательных целях. Вся информация направлена на то, чтобы уберечь читателей от противозаконных действий. Все причиненные возможные убытки посетитель берет на себя. Автор проделывает все действия лишь на собственном оборудовании и в собственной сети. Не повторяйте ничего из прочитанного в реальной жизни. | Так же, если вы являетесь правообладателем размещенного на страницах портала материала, просьба написать нам через контактную форму жалобу на удаление определенной страницы, а также ознакомиться с инструкцией для правообладателей материалов. Спасибо за понимание.

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

1.Просмотр параметров разделов памяти.

Давайте пройдемся по реальному файлу, содержащему GPT-таблицу. Я взял файл gpt_main0.bin от Lenovo K910 из прошивки K910_w_SS_S_2_040_0081_131202.qsb. Он содержит главную загрузочную запись MBR и таблицу разделов GPT.

1.1.MBR.

Вот как выглядит первый сектор файла. Согласно теории, эти первые 512 байт, т.е. с адреса 0х000 по 0х1FF, занимает MBR:

Гл.вид.png

Рис.1. Вид начала файла, открытого в Hex-редакторе.

Видно, что по адресу 0х1С2 расположен код раздела 0хЕЕ – код раздела GUID Partition Table.
Далее по адресам 0х1С6-0х1С9 расположено поле «Смещение», содержащее значение «01 00 00 00». Учитывая обратный порядок записи, получим смещение раздела – 0х00000001. Т.е. GPT располагается в секторе со смещением 1. А это следующий за MBR сектор, что и видно на рисунке 1, т.к. по адресу 0х200 можно уже заметить сигнатуру GPT.

1.2.Заголовок GPT
Рассмотрим hex-код файла далее:

Заголовок GPT.png

Рис.2. Заголовок GPT

Я немного «разукрасил» заголовок, чтобы выделить его поля.
В самом верху справа красным цветом выделен «остаток» предыдущего сектора – сигнатура MBR. Далее мы имеем:

  • с адреса 0х200, как и положено по теории, располагается заголовок  GPT, начинающийся сигнатурой «EFI PART», выделенной бирюзовым цветом;
  • по адресу 0х208 располагается поле «Версия», имеющее значение «00 00 01 00»=0х00010000  и выделенное светло-зеленым цветом;
  • по адресу 0х20С – поле «Размер заголовка», имеющее значение «5С 00 00 00»=0х5С  (92 байта). Оно выделено оранжевым цветом;
  • по адресу 0х210 расположено поле «CRC32 заголовка», имеющее значение «1F 8EBE 09»=0x09BE8E1F и бардовый цвет;
  • за ним по адресу 0х214 следует резервное поле, имеющее нулевое значение;
  • по адресу 0х218 расположено поле «текущий LBA сектор», хранящее номер сектора, где размещается первичная GPT (та, что мы рассматриваем). Оно имеет значение 0х01, как и положено;
  • далее (адрес 0х220) расположено поле «резервный LBA сектор», в котором должен храниться адрес размещения резервной копии заголовка. Мы видим сплошные нули. Вот тебе и теория! Но об этом мы поговорим позже;
  • по адресу 0х228 расположено поле «первый разрешенный для использования LBA сектор», выделенное красным цветом. Оно равно 0х22=34. Именно с этого сектора и будет размещаться первый раздел мобильного устройства, а все место до него зарезервировано под GPT. Владеющие калькулятором или искусством устного счета могут подсчитать, что таблица GPT вместе с MBR занимает с 0 по 33 сектор включительно и имеет размер 34*512=17408 байт. Странно, но именно такова длина файла, хранящего GPT, который мы и разглядываем;
  • по адресу 0х230 расположено поле «последний LBA-сектор, разрешенный для использования», который тоже почему-то «пустой»;
  • по адресу 0х238 расположено поле, содержащее GUIDдиска и выделенное голубым цветом;
  • по адресу 0х248 расположено поле«первый LBA сектор таблицы записей о разделах», указывающее с какого сектора начинаются записи параметров разделов. Оно имеет значение «02» и выделено красным цветом. При дальнейшем рассмотрении Вы увидите, что так оно и есть;
  • 0х250 – содержит число записей о разделах (зеленый цвет), т.е. вся память К910 разбита на 0х18=24 раздела;
  • 0х254 – содержит размер одной записи о разделе в байтах (сиреневый цвет). Как видим 0х80=128 байт;
  • 0х258 – содержит еще одно контрольное поле – «CRC32 таблицы записей о разделах»;
  • 0х25С – с этого адреса и до конца заголовка, т.е. до адреса 0х400, расположен резерв, заполненный нулями.

1.3.Таблица описания раздела памяти.

Каждый раздел имеет свою запись в таблице разделов. Одна запись занимает размер в 128 байт, который указан в поле заголовка по адресу 0х254 и имеет следующий вид:

Запись о разделе.png

Рис.3. Запись параметров раздела в таблице GPT.

Я опять разукрасил картинку:

  • по адресу 0х400 расположено поле «GUID типа раздела»;
  • далее по адресу 0х410 – «GUID раздела»;
  • по адресу 0х420 – поле, содержащее номер первого сектора размещения раздела, т.е. фактически его смещение в памяти;
  • по адресу 0х428 расположен номер последнего сектора раздела. Разность этих двух полей даст нам размер раздела;
  • по адресу 0х430 расположено поле флагов раздела;
  • по адресу 0х438 и до конца записи расположено поле, содержащее метку раздела. Каждый символ занимает два байта, т.к. поле содержит информацию в кодировке UTF-16LE.

С адреса 0х480 располагается запись о следующем разделе.
После описания всех разделов оставшееся место заполняется нулем до конца таблицы разделов, т.е. до размера

(максимальное число разделов=128)*(размер одного раздела=128)=16384 байта. 

Если добавить сюда размер заголовка и размер загрузочной записи, то получим общий размер GPT 16384+512+512=17408 байт или 34 сектора (с нулевого по 33 включительно).

2.Изменение параметров разделов памяти.

Эксперименты по изменению таблицы разделов начнем с описания расчета контрольных сумм, расположенных в заголовке. А уж затем попробуем передвигать разделы, изменяя их длину, или просто удалять их.
При всех экспериментах с разделами нужно помнить, что они расположены в памяти НЕПРЕРЫВНО и БЕЗ РАЗРЫВОВ между ними, т.е. если в каком-то секторе завершается один раздел, то в следующем обязательно начинается следующий.
Чтобы не производить все эти расчеты фирма Lenovo разработала особый механизм, позволяющий все делать автоматически. Об этом и файле, содержащем перечень ВСЕХ разделов памяти, поговорим в самом конце.

2.1.Подсчет контрольных сумм заголовка.

Т.к. контрольная сумма заголовка должна «оберегать» весь заголовок, то все его поля должны быть заполнены перед расчетом. Поэтому первой рассчитывается контрольная сумма таблицы разделов.
Для расчета CRC32 всей таблицы разделов нужно взять всю таблицу с первой записи и по последнюю включительно БЕЗ ЗАГОЛОВКА. Высчитаем последний адрес таблицы разделов:

число записей (поле 0х250)*длину одной записи (поле 0х254)+(стартовый адрес таблицы=0х400)=0х18*0х80+0х400=0х1000.

Следовательно, для расчета берем содержимое по адресам с 0х400 по 0х1000. Воспользуемся услугами WinHex-редактора.

  • открываем файл;
  • выделяем все поля указанного диапазона;
  • и выполняем команду «Инструменты->Подсчитать хеш->Выбрать метод расчета», указав на «CRC32 (32bit)»:

CRC таблицы.png

Рис.4. Данные для расчета CRC32 таблицы разделов.

Полученный результат вставляем в поле заголовка по адресу 0х258 (Рисунок 2).
Переходим к расчету контрольной суммы всего заголовка.
Для расчета CRC32 заголовка берутся все 92 байта заголовка, только само поле CRC32 заголовка предварительно заполняется нулями:

Подсчет CRC заголовка.png

Рис.5. Данные для расчета CRC32 заголовка GPT

А вот и результат, сравните со значением в заголовке:

CRC заголовка.png

Рис.6. Результат расчета.

Данные для Подсчет CRC заголовка.png

Рис.7. Первоначальное значение из файла по адресу 0х210.

Вся разница только в обратном способе записи…
Итак, с контрольными суммами разобрались. Можно попытаться поменять параметры самих разделов, например, размер.

2.2.Изменение размеров разделов памяти.

При выполнении таких работ нужно учитывать несколько правил:

  • Все разделы расположены непрерывно и строго друг за другом.
  • Общий размер памяти равен сумме размеров всех разделов.

Т.к. при изменении длины одного раздела нарушается второе правило, то для восстановления равновесия нужно уменьшить (увеличить) размеры одного или нескольких последующих разделов. Здесь может быть несколько случаев:

  • нужно уменьшить (увеличить) размер предыдущего раздела для смещения его конца и, следовательно, расширения (уменьшения) нашего раздела;
  • уменьшить (увеличить) размер последующего раздела, т.е. сместить его начало, что опять же приведет к увеличению (уменьшению) длины нашего.

Рассмотрим первый случай. Допустим, что необходимо расширить раздел «system» на 100 Мб за счет предыдущего раздела «cache». Это приводит к перемещению нижней границы раздела «system» в сторону начала памяти. Т.е. необходимо выполнить следующие действия:

  • рассчитать новое значение смещения, т.е. положение первого сектора раздела «system» (поле «первый LBA сектор размещения раздела»):
новое значение =старое значение  100Мб.
  • рассчитать новое значение поля «последний LBA сектор размещения раздела» для раздела«cache»:
новое значение=старое значение-100Мб;
  • внести изменения в запись таблицы разделов.

Посмотрим, как это выглядит в hex-редакторе на реальном файле, учитывая, что

100 Мб=104857600 (0х6400000) байт или 0х32000 секторов:

Рис.8.png

Рис.8. Параметры разделов до изменений

Размер раздела «system»:

0х41FFFF-0x120000+1=0x300000 или 1610612736 байт

Нижние границы обоих разделов выделены зеленым цветом («старт» раздела, его начало), а верхние – красным («стоп» раздела, его последний сектор).
Проведем расчеты:

  • для раздела «system» нижняя граница переместится на сектор
0х120000-0х032000=0х0EE000
  • для раздела «cache»имеем
0х11FFFF-0х032000=0х0EDFFF

Записываем новые значения на свои места, не забывая про обратный порядок:

Рис.9.png

Рис.9. Результаты сдвига нижней границы раздела System.

Проверим результаты работы. Длина раздела «system» стала:

0х41FFFF-0x0EE000=0x331FFF

Рассмотрим второй  случай – перемещение верхней границы раздела «system», но уже за счет другого соседа раздела «userdata».Необходимо выполнить следующее:

  • сместить вверх по памяти верхнюю границу («последний LBA сектор размещения раздела») «system»
новое значение =старое значение + 100Мб;
  • сместить вверх нижнюю границу («первый LBA сектор размещения раздела») «userdata»
новое значение =старое значение + 100Мб.

До изменений записи о разделах выглядели так:

Рис.10.png

Рис.10. Разделы system и userdata

Проведем расчеты:

  • для раздела «system» верхняя граница переместится в сектор
0х41FFFF+0х032000=0х451FFF
  • для раздела «userdata» нижняя граница переместится в сектор
0х420000+0х032000=0х452000

Записываем новые значения на свои места, не забывая про обратный порядок:

Рис.11.png

Рис.11. Разделы после перемещения границы вверх.

Проверим результаты работы:

0х451FFF-0x120000+1=0x332000 или 1715470336 байт

Разность составила 104875600байт или 100Мб. Расчеты выполнены правильно!
А теперь можно попробовать и совсем удалить раздел.

2.3.Удаление раздела.

«Разрушать» или удалять всегда легче. Считать ничего не требуется. Нужно только решить какому разделу будет отдано освободившееся место.
При удалении раздела верхняя граница предыдущего раздела просто перемещается на место верхней границы удаляемого. Или наоборот, нижняя граница последующего перемещается на место нижней границы удаляемого.
У меня нет под рукой хорошего примера прошивки, у которой можно удалить что-то «лишнее», поэтому используем предыдущий пример и, чисто теоретически конечно, представим, что нужно удалить раздел «system». Вот как выглядела таблица разделов до вмешательства:

Рис.12.png

Рис.12. Вид таблицы разделов до проведения «экзекуций».

Вот параметры разделов до изменений:

  • «cache» первый сектор – 0х0E0000, последний сектор – 0x11FFFF, длина –0х040000 (134217728 байт);
  • «system»первый сектор – 0х120000, последний сектор – 0x41FFFF, длина – 0х300000 (1610612736 байт=1,5Гб);
  • «userdata»первый сектор – 0х420000, последний сектор – 0x71FFFF, длина – 0х300000 (1610612736 байт=1,5Гб).

При удалении раздела «system» и расширении «cache»  это будет означать, что значение из поля «последний LBA сектор размещения раздела» «cache» примет значение из поля «последний LBA сектор размещения раздела» «system», а запись о разделе «system» будет полностью удалена из таблицы разделов:

Рис.13.png

Рис.13. Вот как выглядит таблица разделов после удаления System и расширения Cache

Видно, что данные о разделе «system» полностью исчезли из таблицы, поле «последний LBA сектор размещения раздела» предыдущего раздела «cache» получило новое значение, а параметры последующего раздела «userdata» остались без изменений. Проверим параметры разделов:

  • «cache»первый сектор – 0х0E0000, последний сектор – 0x41FFFF, длина – 0х340000 (1744830464 байт). Т.е. этот раздел УВЕЛИЧИЛСЯ на размер удаленного раздела;
  • «userdata»первый сектор – 0х420000, последний сектор – 0x71FFFF, длина – 0х300000 (1610612736 байт=1,5Гб). Этот раздел ОСТАЛСЯ без изменений

Если за счет удаления «system» расширить «userdata», то тогда значение поля «первый LBA сектор размещения раздела»«userdata» примет значение из поля «первый LBA сектор размещения раздела» удаляемого «system»:

Рис.14.png

Рис.14. Вот как выглядит таблица разделов после удаления раздела System

Видно, что на этот раз изменилось только поле «первый LBA сектор размещения раздела»  последующего раздела «userdata». Проверим параметры разделов:

  • «cache»первый сектор – 0х0E0000, последний сектор – 0x11FFFF, длина – 0х040000 (134217728 байт);. Т.е. этот раздел ОСТАЛСЯ без изменений;
  • «userdata»первый сектор – 0х120000, последний сектор – 0x71FFFF, длина – 0х600000 (3221225472 байт=3Гб). Этот раздел УВЕЛИЧИЛСЯ на размер удаленного раздела.

Понравилась статья? Поделить с друзьями:
  • Как изменить player joined the game
  • Как изменить sav файл
  • Как изменить play market аккаунт
  • Как изменить samsung cloud
  • Как изменить samsung account на samsung galaxy