motofan logo
       
> 

Патчим Motorola C330, C350, C350L, C450, C550, E380, V150, Обход защит BlowFish и RSA в этих телефонах

EXL
сообщение 10.9.2024, 20:29 Закрепленное сообщение!


Rock The Microphone
********

Группа: Администраторы
Сообщений: 3 039
Регистрация: 12.5.2007
Из: г. Новосибирск
Пользователь №: 134 652

Рейтинг: 4623



Итак, прошёл целый 21 год после того как на рынок были выпущены телефоны Motorola C330, C350, C350L, C450, C550, E380, V150 и некоторые другие. И что же теперь нам остаётся делать? Конечно же самое время достать их с пыльных полок и глубоких ящиков стола, зарядить и начать патчить!

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

К моему большому сожалению, моддинг-сцена обошла эти телефончики стороной, несмотря на слабую защиту прошивок в них. Да и вообще сам процесс прошивки Motorola C350 был очень удобен, ведь для того чтобы прошить Motorola C350 не нужно было собирать схемки RS-232 <=> USB, паять колодки или же искать экзотические кабели подключения к компьютеру. Для прошивки нужен лишь обычный MiniUSB-кабель (любой), драйвера и официальный прошивальщик RSD Lite. Кроме того для моддинга прошивки телефона на современных Windows и Linux системах можно использовать виртуальную машину с предустановленным софтом.

1. Motorola USB Drivers 3.7.0: 32-bit | 64-bit
2. RSD Lite 3.8: Скачать
3. Образы виртуальных машин для телефонов Motorola, WinXP и Win2K для VirtualBox и VMware Player: Скачать из темы

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

1. Hardware / Железная часть

Телефоны Motorola C330, C350, C450, C550, E380, V150 используют процессор Neptune LT/LCA их прошивки защищены BlowFish. Телефон Motorola C350L использует процессор Neptune ULS и его прошивка подписана RSA. Низкоуровневые отличия разных телефонов этой ветки представлены в таблице ниже:

Phone
SoC
RAM
ROM
IROM
IRAM
BOOT
SW_Start
Crypt_Method
Motorola C330
Neptune LT (LCA)
1024 KiB, 0x11000000
8192 KiB, 0x00000000
3168 KiB, 0x10000000
564 KiB, 0x01F93000 (0x0006D000), 0x01400000 (0x00020000)
03.72, 0x00001640
0x00060000
BlowFish
Motorola C350
Neptune LT (LCA)
1024 KiB, 0x11000000
8192 KiB, 0x00000000
3168 KiB, 0x10000000
564 KiB, 0x01F93000 (0x0006D000), 0x01400000 (0x00020000)
03.72, 0x00001640
0x00060000
BlowFish
Motorola C350L
Neptune ULS
2048 KiB, 0x12000000
8192 KiB, 0x10000000
100 KiB, 0x00000000
64 KiB, 0x03FF0000
09.20, 0x10000000
0x10010000
RSA
Motorola C350 T-Mobile
Neptune LTS
2048 KiB, 0x12000000
8192 KiB, 0x10000000
1792 KiB, 0x00000000
512 KiB, 0x03F80000
03.72, 0x10000000
0x10010000
RSA
Motorola C350v
Neptune LT (LCA)
2048 KiB, 0x11000000
8192 KiB, 0x00000000
3168 KiB, 0x10000000
564 KiB, 0x01F93000 (0x0006D000), 0x01400000 (0x00020000)
03.72, 0x00001640
0x00020000
BlowFish
Motorola C355v
Neptune LT (LCA)
2048 KiB, 0x11000000
8192 KiB, 0x00000000
3168 KiB, 0x10000000
564 KiB, 0x01F93000 (0x0006D000), 0x01400000 (0x00020000)
03.72, 0x00001640
0x00020000
BlowFish
Motorola C359v
Neptune LT (LCA)
2048 KiB, 0x11000000
8192 KiB, 0x00000000
3168 KiB, 0x10000000
564 KiB, 0x01F93000 (0x0006D000), 0x01400000 (0x00020000)
03.72, 0x00001640
0x00020000
BlowFish
Motorola C450
Neptune LT (LCA)
4096 KiB, 0x11000000
16384 KiB, 0x00000000
3168 KiB, 0x10000000
564 KiB, 0x01F93000 (0x0006D000), 0x01400000 (0x00020000)
03.72, 0x00001640
0x00060000
BlowFish
Motorola C550
Neptune LT (LCA)
4096 KiB, 0x11000000
16384 KiB, 0x00000000
3168 KiB, 0x10000000
564 KiB, 0x01F93000 (0x0006D000), 0x01400000 (0x00020000)
03.72, 0x00001640
0x00060000
BlowFish
Motorola E380
Neptune LT (LCA)
4096 KiB, 0x11000000
16384 KiB, 0x00000000
3168 KiB, 0x10000000
564 KiB, 0x01F93000 (0x0006D000), 0x01400000 (0x00020000)
09.10, 0x00001640
0x00060000
BlowFish
Motorola V150
Neptune LT (LCA)
2048 KiB, 0x11000000
8192 KiB, 0x00000000
3168 KiB, 0x10000000
564 KiB, 0x01F93000 (0x0006D000), 0x01400000 (0x00020000)
03.72, 0x00001640
0x00060000
BlowFish

Отличить Motorola C350 от Motorola C350L можно по следующим признакам:

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

1. Версия прошивок на C350 начинается с C350, тогда как прошивки C350L начинаются с R312
2. Если на этикетке под аккумулятором MSN/SE коды начинаются на С67/SE6 то это C350, а если на D22/SE7 то это C350L.
3. Если нет будильника и есть голосовой набор, то это C350, а если есть будильник, но нет голосового набора, то это C350L.
4. C350L чуть толще и тяжелее C350 за счёт более ёмкого аккумулятора.

2. Software / Программная часть

Касательно патчинга телефонов здесь будут рассматриваться в основном C350 и C350L, как самые распространённые. С упором на Motorola C350L, который был наиболее распространён на нашем рынке. Условно из 100% телефончиков похожих на Motorola C350 около 85% будут C350L, а остальные 15% — C350, C450, C550 и другие ещё более редкие модельки.

Перед внесением любых изменений в прошивку хорошим тоном будет сделать полный BackUp образа Flash-памяти телефона и отдельно BackUp калибровок. Сделать всё это можно следующими утилитами:

1. Программа Flash Terminal (подходит для снятия и залития Flash-образов): https://github.com/EXL/FlashTerminal/
2. Программа C350L_Backup: Скачать
3. Программа SeemXfer: Скачать

Подробно расписывать процесс снятия BackUp'а здесь не буду, так как в теме Бекапим наши телефоны и по соответствующим ссылкам всё подробно расписано. Рассматривать патчинг и обход защит будем на примерах с реальными прошивками, а не бинарными BackUp'ами.

2.1. Патчим Motorola C350

1. Скачиваем последнюю РСТ-прошивку C350_G_09.04.74R, например, по этой ссылке.

2. Распаковываем SHX-файл программой SBF-Recalc 1.2.9.1

3. Склеиваем CG0 и CG1 в один файл с помощью HEX-редактора или UNIX-like утилиты cat для удобного анализа в IDA:

Код
cat C350*CG0.smg C350*CG1.smg > C350_G_09.04.74R_FW.smg

4. Декриптуем файлы "C350*CG1.smg" и "C350_G_09.04.74R_FW.smg" убирая BlowFish утилитой fl_decr.exe из комплекта blowfish_flash_crypt.zip и сохраняя их как "C350*CG1.bin" и "C350_G_09.04.74R_FW.bin"

5. Загружаем в IDA Pro файл "C350_G_09.04.74R_FW.bin" со следующими параметрами, расставляем сегменты RAM и банки IRAM:

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

ROM: ROM start address: 0x00060000, Input file, Loading address: 0x00060000
RAM: Edit => Segments => Create segment...: RAM, 0x11000000-0x11100000
IRAM 1: Edit => Segments => Create segment...: IRAM 1, 0x01F93000-0x02000000
IRAM 2: Edit => Segments => Create segment...: IRAM 2, 0x01400000-0x01420000

Переходим в начало 0x00060000, там лежит 4-байтное число (жмакаем d несколько раз), это точка входа в прошивку, её адрес. Нажимаем g и начинаем анализ/патчинг.

6. Сделав патчи, которые нам требовались, переносим их в ванильную CG1, обязательно помня про смещение на 0xC8 для заголовка CG0, так как CG1 лежит на 0x000600C8. Поэтому у патчи на CG1 без CG0 из адреса нужно вычитать 0xC8. Подробно про работу в IDA Pro можно почитать в этой теме, а скачать базу данных с неполным разбором на функции можно здесь: C350_G_09.04.74R_FW.bin.idb.zip

7. Получив отпаченный бинарный код в CG1, криптуем его обратно утилитой fl_crypt.exe из комплекта blowfish_flash_crypt.zip

2.2. Патчим Motorola C350L

1. Скачиваем последнюю РСТ-прошивку R312ULS_G_09.10.82R, например, по этой ссылке.

2. Распаковываем SHX-файл программой SBF-Recalc 1.2.9.1

3. Склеиваем CG0 и CG1 в один файл с помощью HEX-редактора или UNIX-like утилиты cat для удобного анализа в IDA:

Код
cat R312*CG0.smg R312*CG1.smg > R312ULS_G_09.10.82R_FW.bin

4. Загружаем в IDA Pro файл "R312ULS_G_09.10.82R_FW.bin" со следующими параметрами, расставляем сегменты RAM и IRAM:

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

ROM: ROM start address: 0x10010000, Input file, Loading address: 0x10010000
RAM: Edit => Segments => Create segment...: RAM, 0x12000000-0x12200000
IRAM: Edit => Segments => Create segment...: IRAM, 0x03FF0000-0x04000000

Переходим в начало 0x10010000, там лежит 4-байтное число (жмакаем d несколько раз), это точка входа в прошивку, её адрес. Нажимаем g и начинаем анализ/патчинг.

5. Сделав патчи, которые нам требовались, переносим их в ванильную CG1, обязательно помня про смещение на 0xC8 для заголовка CG0, так как CG1 лежит на 0x100100C8. Поэтому у патчи на CG1 без CG0 из адреса нужно вычитать 0xC8. Подробно про работу в IDA Pro можно почитать в этой теме, а скачать базу данных с неполным разбором на функции можно здесь: R312ULS_G_09.10.82R_FW.bin.idb.zip

6. Сделав изменения в CG1, нам нужно обойти RSA, пропатчив кодовые группы CG0, CG18 следующим образом:

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

Для обхода был портирован метод снятия RSA на LTE с багом зеркалирования адресации, который был обнаружен Vilko.

2.3. Как прошить пропатченную прошивку в телефон?

Итак, у нас имеется пропатченная и закриптованна CG1 или CG0, CG1, CG18 с обходом RSA в случае Motorola C350L. Как прошить их обратно в телефон? Лучшим решением для этого была бы сборка SHX, но поскольку подобная утилита всё ещё в разработке, можно схитрить и воспользоваться трюком подмены кодовых групп на патченные при прошивке телефона в RSD Lite 3.8, вот как он работает:

1. Коннектим телефон к компу/виртуалке во Flash-режиме ("*", "#", "Красная трубка").

2. Запускаем RSD Lite и выбираем оригинальный SHX-файл прошивки.

3. Жмём Start и через секунду вынимаем кабель из телефона на стадии "Create Image File".

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

5. Подменяем оригинальные SMG-файлы нашими патченными (имена должны совпадать!).

6. Снова коннектим телефон к компу/виртуалке и нажимаем Start.

7. Телефон прошивается, в конце могут идти ошибки чексумм, игнорируем их.

7.1. Для Motorola C350L нужно ещё чтобы при неправильном подсчёте чексумм в CG0 записалась точка входа в прошивку. Проще всего это сделав слив BackUp в C350L_Backup, поправив и залив обратно. Способ неудобный, поэтому лучше подождите решения со сборкой SHX-файлов.

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

Ура, наш телефон пропатчен!

3. Спасибо
  • Vilko и Evy за взлом и обход BlowFish и RSA защит и теорию.
  • motoprogger за полезные программы и теорию.
Прикреплённые файлы:
Прикрепленный файл seemxfer.rar   ( 11.6 килобайт ) Кол-во скачиваний: 4
Прикрепленный файл c350l_backup.rar   ( 196.93 килобайт ) Кол-во скачиваний: 7
Прикрепленный файл SBF-Recalc_1.2.9.1.zip   ( 995.37 килобайт ) Кол-во скачиваний: 5
Прикрепленный файл blowfish_flash_crypt.zip   ( 28.13 килобайт ) Кол-во скачиваний: 4
Прикрепленный файл C350_G_09.04.74R_FW.bin.idb.zip   ( 17.88 мегабайт ) Кол-во скачиваний: 12
Прикрепленный файл R312ULS_G_09.10.82R_FW.bin.idb.zip   ( 19.86 мегабайт ) Кол-во скачиваний: 7
Юзер в онлайне!В друзьяВизиткаП/Я
К началу страницы
+Ответить
EXL
сообщение 11.9.2024, 0:15


Rock The Microphone
********

Группа: Администраторы
Сообщений: 3 039
Регистрация: 12.5.2007
Из: г. Новосибирск
Пользователь №: 134 652

Рейтинг: 4623



А вот и первый полезный патчик для Motorola C350 и Motorola C350L!

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

Код
; C350_G_09.04.74R_Unlock_SIM-Lock_PDS_SEEMs.fpa

[Patch_Info]
SW_Ver=C350_G_09.04.74R
Author=EXL
Description=Unlock SIM-Lock PDS SEEMs

[Patch_Code]
005069F8: 0050DEF7
00506A08: 0050DEF7
00506A38: 0050DEF7
00506A48: 0050DEF7

[Patch_Undo]
005069F8: 0050DDF5
00506A08: 0050DDF5
00506A38: 0050DDF5
00506A48: 0050DDF5

Код
; R312ULS_G_09.10.82R_Unlock_SIM-Lock_PDS_SEEMs.fpa

[Patch_Info]
SW_Ver=R312ULS_G_09.10.82R
Author=EXL
Description=Unlock SIM-Lock PDS SEEMs

[Patch_Code]
003B1DB0: 1049D475
003B1DC0: 1049D475
003B1DF0: 1049D475
003B1E00: 1049D475

[Patch_Undo]
003B1DB0: 1049D369
003B1DC0: 1049D369
003B1DF0: 1049D369
003B1E00: 1049D369

Он позволяет быстро снять SIM-Lock без прошивки RFDI_Image (с затиранием родных калибровок) и без ужасной процедуры TestPoint.

Нужно просто пропатчить CG1 (адресация указана без CG0) и зашить модифицированную прошивку в телефон. После этого можно залить занулённые SEEM'ы 015C_0001, 015D_0001, 01C3_0001, 01C4_0001 в которых находится SIM-Lock на приложенные в архиве с помощью P2K Tools VS или P2K Seem и телефон разблокируется. Подробнее об этом в теме Программная разлочка Motorola P2K, Software way to remove SIM-lock (Subsidy Password)! или в YouTube-видеоролике Software way to remove SIM-Lock on Motorola SLVR L2, L6, V19x, V235 phones по таймкоду 01:48

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

Патч ищется в CG1 по паттерну "00 00 00 00 00 00 00 00 01 5D 00 00 XX XX XX XX", где XX -- произвольный байт данных.

В архиве уже пропатченные кодовые группы которые нужно прошить и SEEM'ы которые нужно залить.

Прикреплённые файлы:
Прикрепленный файл Unlock_SIM-Lock_PDS_SEEMs.zip   ( 7.66 мегабайт ) Кол-во скачиваний: 8
Юзер в онлайне!В друзьяВизиткаП/Я
К началу страницы
+Ответить
Патчим Motorola C330, C350, C350L, C450, C550, E380, V150, Обход защит BlowFish и RSA в этих телефонах · Motorola C23x, C25x, C26x, C33x, C35x, C350, C350L, C350i, C359, C450, C550, E380, V150 · Forum
 

Ответ в темуСоздание новой темы
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 19.10.2024, 18:51

Форум живёт: