Jump to content
Old Phone Forum
  • Login

    You are currently not logged in to the forum.

    To comment, download files, subscribe to answers - you need to login.

QMD - работа с запакованными/зашифрованными прошивками Swift 3G.


Recommended Posts

Арсик для броадкомов писал упаковщик..

но мне кажется проще в озу патчить

Жизнь - пьяный поэт, я - слово.

Я жесток и грустен, когда ему херово.

Жизнь - старый поэт, жизнь - усталый поэт,

А я... Что я? Его инструмент!...

 

Разработка Broadcom: http://www.rk-team.net/

Новости проекта QuB на Twitter

Link to comment
Share on other sites

  • 2 weeks later...

Арсик для броадкомов писал упаковщик..

Там тоже quram? А где этот упаковщик?

 

но мне кажется проще в озу патчить

Перепаковать мне кажется лучше, хотя отключать при загрузке патчи тоже хорошая возможность...

5073IA3.png
Link to comment
Share on other sites

В броадкомах и квалкомах тоже курам.. точнее его разновидности.. а паковщик - жуткий и страшный приват который он юзает в своем платном софте)))

Так что лучше в озу накладывать.. дешево и сердито )

Жизнь - пьяный поэт, я - слово.

Я жесток и грустен, когда ему херово.

Жизнь - старый поэт, жизнь - усталый поэт,

А я... Что я? Его инструмент!...

 

Разработка Broadcom: http://www.rk-team.net/

Новости проекта QuB на Twitter

Link to comment
Share on other sites

юзает в своем платном софте)))
А что за платный софт и кто его покупает?

Я бы например QMG дописал бы, если бы это было бы реально продавать :) Побочно - может и QMC/QMD получились бы…

А так вот как-то мотивации не хватает…

Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

Link to comment
Share on other sites

Побочно - может и QMC/QMD получились бы…

А сколько надо для мотивации?

 

А вот интересно...

У С3520, судя по сервис-мануалу, 1 гиг NAND. Но прошивки с файловой системой там мегабайт на 120. А остальное куда?

5073IA3.png
Link to comment
Share on other sites

А сколько надо для мотивации?
Это 2-3 месяца целенаправленной работы только над этим проектом…

 

У С3520, судя по сервис-мануалу, 1 гиг NAND.
Вообще они в сервисмануалах пишут биты…

в пересчёте на байты как раз и будет 128 на всё (вместе с пользовательским разделом).

И ОЗУ получается 64мб - тоже вполне правдоподобное…

 

Чипы памяти во всех даташитах (и импортных, и СССРовских) всегда обозначаются в битах (и в ширине шин адреса и данных).

  • Like 2

Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

Link to comment
Share on other sites

  • 3 weeks later...

алгоритмов этих куча (это я не только про свифт 3г говорю, а вобще про самсунги). и они постоянно меняются/появляются новые. замучаетесь переделывать то и дело. так что Русем прав - накладывать в раму проще и быстрее :(

  • Like 1
Link to comment
Share on other sites

  • 3 weeks later...

Ничего не понял… Для S5610 распаковка давно есть (и в принципе ничто не мешает делать туда патчи, я даже в BinEdit на него посмотрел и знакомый 3G-Swift увидел).

Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

Link to comment
Share on other sites

  • 4 weeks later...

Ничего не понял… Для S5610 распаковка давно есть (и в принципе ничто не мешает делать туда патчи, я даже в BinEdit на него посмотрел и знакомый 3G-Swift увидел).

так может сделаеш патчик? :(

Link to comment
Share on other sites

Для патча нужна еще и ЗАпаковка.. либо лоадер...

Учим матчасть 8)

Жизнь - пьяный поэт, я - слово.

Я жесток и грустен, когда ему херово.

Жизнь - старый поэт, жизнь - усталый поэт,

А я... Что я? Его инструмент!...

 

Разработка Broadcom: http://www.rk-team.net/

Новости проекта QuB на Twitter

Link to comment
Share on other sites

Для патча нужна еще и ЗАпаковка.. либо лоадер...

Не обязательно...

Можно залить незапакованную прошивку, уменьшив размер пользовательской памяти.

5073IA3.png
Link to comment
Share on other sites

  • 3 weeks later...

залить прошивку незапакованную

Родным флешером для данной модели.

Предварительно отредактировать .ptt файл с учетом новых смещений, размеров и признаков упаковки разделов.

В .bootloader тоже есть таблица разделов - ее тоже надо менять.

Какая из таблиц имеет приоритет - я не знаю, менял обе.

5073IA3.png
Link to comment
Share on other sites

Родным флешером для данной модели.

Предварительно отредактировать .ptt файл с учетом новых смещений, размеров и признаков упаковки разделов.

В .bootloader тоже есть таблица разделов - ее тоже надо менять.

Какая из таблиц имеет приоритет - я не знаю, менял обе.

и что получилось? можеш скинуть свои наработки?

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

Link to comment
Share on other sites

можеш скинуть свои наработки?

Нет.

И они для другого телефона.

 

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

Раз это свифт - зайди в тему с патчами для С3322, например, да посмотри.

5073IA3.png
Link to comment
Share on other sites

  • 1 month later...
Предварительно отредактировать .ptt файл с учетом новых смещений, размеров и признаков упаковки разделов.

В .bootloader тоже есть таблица разделов - ее тоже надо менять.

А вот интересно… место под непакованную CLA отбирается у TFS… Но TFS же там в виде .image, в которых лежит готовая партиция с MBR и т.п.

 

Телефон нормально переваривает если в MBR указан размер партиции больше чем было выделено флешером из .ptt ?

Он показывает что размер доступной памяти соответственно стал меньше ?

Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

Link to comment
Share on other sites

Телефон нормально переваривает если в MBR указан размер партиции больше чем было выделено флешером из .ptt ?

Он показывает что размер доступной памяти соответственно стал меньше ?

Показывал размер из MBR, при попытке записать свыше нового размера - выдавал ошибку.

Решил проблему установкой в .ptt флага partition_format_if_not_mounted_volume в 1 (в лоадере он вроде тоже есть). Не помню только, что подсовывал флешеру в качестве образа диска, кажется просто мусор.

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

  • Like 1
5073IA3.png
Link to comment
Share on other sites

  • 11 months later...

Возник вопрос по заголовку MAIN-партиции (сделал патчи на E2252 по аналогии с S5610, а оно не работает, стал копать и вот…).

 

По оффсету 0x000000C0 лежит некий массив байт, размером 0x84. Первое значение 0x00000080, очевидно размер остальных 0x80 байт. В разных прошивках они разные. На осмысленный асм не похоже.

Но вот у S5610 их нету, и поэтому я как-то не обратил на них внимания.

 

Однако, у C3520, C3782, E2252 - этот массив в заголовке есть.

Есть какие-нибудь мысли что это такое и что с этим делать при сборке патченного файла?

Копировать из исходного файла как есть - пробовал - не помогло… или что-то надо изменить в этом?

Оставить пустое место (как у S5610) тоже пробовал - не помогло.

Есть подозрение что какая-то подпись и связано с partition_protected=1… Выключать в буте соответствующий флаг?

 

Или можно вообще не копировать? Я может не там ищу проблему (хотя таблицы везде передвинул, распакованный PAGE и урезанный /C/ мобила нормально переваривает, а вот с распакованным MAIN что-то не получается (пакованный на его месте работает нормально))…

Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

Link to comment
Share on other sites

да, похоже предположение про подпись и protected-флаг было верным

снял только этот флаг в бутлоадере - и по сообщения тестеров мобила запустилась...

 

или это совпадение?...

Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

Link to comment
Share on other sites

  • 3 weeks later...

Систематизируем информацию.

 

Прошивка распаковывается при помощи QMDC_Util.

Партиции MAIN, PAGED, и если есть - DATA_RW (RAM_CB).

 

С размером распакованной PAGED есть тонкость - QMDC_Util дописывает остатки пустого места в последнем кластере, т.е. файл получается больше чем у него указано в заголовке Unpacked data. Однако уже поздно его отрезать, при последующей сборке с ним - проблем нету.

 

 

Итак, распакованные части склеиваем командой типа:

copy /b main.bin + page.bin S5610XXZZ1.cla

или

copy /b main.bin + page.bin + data.bin E2252XXZZ1.cla

 

BE-конфиг пишем так:

Bin ID="S5610XXZZ1" adr="(...)" base="(Load address для MAIN)" TYPE_ARM="LittleEndian"

RemapBlok Start="(размер распакованного MAIN-файла)" Len="(размер распакованного PAGE-файла)" Goto="(Load address для PAGE)"

или

Bin ID="E2252XXZZ1" adr="(...)" base="(Load address для MAIN)" TYPE_ARM="LittleEndian"

RemapBlok Start="(размер распакованного MAIN-файла)" Len="(размер распакованного PAGE-файла)" Goto="(Load address для PAGE)"

RemapBlok Start="(размер распакованного MAIN-файла + размер распакованного PAGE-файла)" Len="(размер распакованного DATA-файла)" Goto="(Load address для DATA)"

О том как найти и прописать MCCTable и MCCParam я тут не будут рассказывать - всё как раньше.

Итак, теперь в BinEdit можно работать со всеми основными частами прошивки. BinEdit нужен новый - старые версии неадекватно работают с адресами выше 0x80000000.

 

 

Теперь о превращении .CLA обратно в MAIN/PAGE/DATA для прошивки в мобилу. Соответствующий заголовок делается в FwPack (или вручную, для незнакомых прошивок). Но т.к. без компрессии размеры получаются выше - надо двигать таблицу партиций. Она в двух местах: в PTT-файле используется для прошивания в мобилу, и в файле bootnand/bootloader используется при работе мобилы.

 

Рассмотрим на примере E2252.

Читаем оригинальный PTT-файл E2252XXMG1 и вобщем должна нарисоваться такая вот табличка:

 

original E2252XXMG1

start + size = next_start

0x00020000 + 0x00020000 = 0x00040000 ; IMAGE

0x00040000 + 0x00020000 = 0x00060000 ; LCDACT

0x00060000 + 0x00020000 = 0x00080000 ; ROOT

0x00080000 + 0x00C00000 = 0x00C80000 ; MAIN

0x00C80000 + 0x00060000 = 0x00CE0000 ; DSP

0x00CE0000 + 0x00600000 = 0x012E0000 ; PAGE

0x012E0000 + 0x00080000 = 0x01360000 ; DATA_RW

0x01360000 + 0x013A0000 = 0x02700000 ; disk-A

0x02700000 + 0x01500000 = 0x03C00000 ; disk-B

0x03C00000 + 0x03200000 = 0x06E00000 ; disk-C

0x06E00000 + 0x00A00000 = 0x07800000 ; disk-D

0x07C00000 + 0x00100000 = 0x07D00000 ; sysv

 

А у нас после обратной сборки размеры партиций то уже другие получаются:

было -> стало

0x00BE2000 -> 0x01355C3C ; MAIN

0x004B23E8 -> 0x00863000 ; PAGE

0x00033000 -> 0x0009BF9C ; DATA

 

На старые места не влезает короче.

Поэтому вычисляем что и куда можно подвинуть. Причём размеры партиций должны быть кратны 0x20000, иначе после прошивки мобила падает с Err 607 Error CRC. Безболезненно можно только пользовательский диск (disk-C) урезать, уменьшаем его с ~50мб до 40мб, и за счёт этого раздвигаем место под партиции MAIN/PAGE/DATA.

 

patched E2252XXMG1

start + size = next_start

0x00020000 + 0x00020000 = 0x00040000 ; IMAGE

0x00040000 + 0x00020000 = 0x00060000 ; LCDACT

0x00060000 + 0x00020000 = 0x00080000 ; ROOT

0x00080000 + 0x01360000 = 0x013E0000 ; MAIN

0x013E0000 + 0x00060000 = 0x01440000 ; DSP

0x01440000 + 0x00880000 = 0x01CC0000 ; PAGE

0x01CC0000 + 0x000A0000 = 0x01D60000 ; DATA_RW

0x01D60000 + 0x013A0000 = 0x03100000 ; disk-A

0x03100000 + 0x01500000 = 0x04600000 ; disk-B

0x04600000 + 0x02800000 = 0x06E00000 ; disk-C

0x06E00000 + 0x00A00000 = 0x07800000 ; disk-D

0x07C00000 + 0x00100000 = 0x07D00000 ; sysv

 

Редактируем оффсеты и размеры в PTT.

Затем в bootnand/bootloader находим таблицу партиций.

 

Для E2252XXMG1 она лежит по адресу 0x000004E0

формат таблицы - блоки по 0x18:

+0 = оффсет начала партиции

+4 = размер партиции

+8 = флаги

+0xC = partition_id

+0x10 = имя партиции

 

Меняем там соответственно оффсеты и размеры.

 

 

Теперь о флагах. Некоторые партиции имеют подписи. Подписи мы просто отключаем (для тех партиций которые изменены).

В PTT для MAIN/PAGE/DATA где надо делаем partition_protected=0x0

И в флагах бутлоадера тоже.

 

Некоторые найденные маски флагов:

partition_format_if_not_mounted_volume - 00 02 00 00

partition_protected - 01 00 00 00

partition_load - 02 00 00 00

partition_header - 08 00 00 00

partition_exec - 04 00 00 00

 

Нам надо для MAIN снять флаг partition_protected. Изначально там флаги 0B 00 00 00, убираем этот флаг - пишем 0A 00 00 00.

На PAGE и DATA в случае E2252 со флагами всё как надо изначально.

 

Так как мы урезали размеры диска C, а он в дистрибутиве прошивки был в виде готового образа FAT с прописанными в MBR размерами - с этим надо тоже что-то делать. Итак, дистрибутивный образ C выкидываем вообще. Вместо него делаем пустой файл размером 512 байт, и его подсовываем в PTT вместо исходного образа.

Ставим в PTT флаг partition_format_if_not_mounted_volume=1

И в бутлоадере тоже для партиции C ставим этот флаг, изначально там флаги 40 0C 00 00, добавляем флаг - пишем 40 0E 00 00.

Теперь мобила сама правильно отформатирует уменьшенную партицию.

 

Осталось пересчитать MD5 для всего что мы изменили, и прошивка готова.

  • Like 5

Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

Link to comment
Share on other sites

  • 5 months later...

Народ а где взять упаковщик??? сделал все по инструкции, но как дошел до пункта "Упаковка модифицированной прошивки перед прошиванием" все встало!!!! подскажите!

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...