Как известно, в C390 изначально прошит бут 08.26 с достаточно высоким уровнем защиты. В частности, он не позволяет обойти RSA традиционным для LTE способом и заливать полные бекапы.
Мной разработана методика, а затем и комплект для понижения бута до 07.B0 и испытан на своей C380 (специально прошил в неё бут 08.26), затем DmT этот процесс автоматизировал, за что ему мега-респект.
Для желающих сделать это вручную: требуется только Flash&Backup 3.x.x (проверял на 3.0.4) и приложенный мной в архиве файл step2.shx
Алгоритм:
1) Flash&Backup-ом снимаем бекап всех кодовых групп
2) Им же прошиваем приложенный мной файл step2.shx
После окончания прошивания дисплей погаснет на несколько секунд, компьютер может сообщить "Неопознанное USB-устройство". Всё нормально, как раз в это время и происходит понижение версии бута. Через несколько секунд должен запуститься уже бут 07.B0 с ошибкой "MEM_MAP Blank, Service req'd", но я реально наблюдал чёрный дисплей, подсветка включена. Телефон нормально определяется и прошивается, как в буте.
3) Прошиваем либо наш бекап, сделанный на шаге 1, либо понравившийся рефлеш или монстр (можно патченый, но не забываем отключать RSA).
Ни в коем случае не прошивайте файл step2.shx в телефон с другой версией бута! Получите "Неопознанное USB устройство" и необходимость ТП.
Как это работает.
В буте 08.26 (C390) по адресу 10003ABC находится последовательность байт:
Для того чтобы таким способом наш код запустить, нужно:
1) В первые 4 байта CG1 и в неё же по смещению +C4, также в первые 4 байта CG3 записать адрес 10003ABC - адрес точки входа в прошивку
2) В первые 4 байта CG18 записать адрес 1000E800 - адрес подписи бута.
Всё. Поскольку адрес 10003ABC покрывается подписью бута, бут вместо прошивки проверит сам себя и перейдёт на этот адрес, а оттуда - на 104C7904.
Мой файл step2.shx представляет собой:
1) CG1: в начале MEM_MAP с применёнными патчами, после неё - бут 07.B0, от которого "отрезаны" последние 256 байт (они все FF)
2) CG2: на самом деле это кусок CG1, вписывает мой программный код по адресу 104С7904
3) CG3: первые 16 байт скопированы из оригинальной прошивки, первые 4 изменены, дальше FF до 64 КБ
4) CG18: первые 16 байт перенесены из оригинальной (кроме изменённых первых 4 байт), дальше FF до 2 КБ.
Ключевой момент в том программном коде, который записывается по адресу 104С7904. Что он делает:
1) Копирует бут 07.B0 из адреса 10080100 в адрес 03FD0000 (в оперативную память)
2) Стирает диапазоны памяти 10000000-10010000 и 10080000-100A0000
3) Прошивает бут 07.B0 по адресу 10000000 (его законному)
4) Запускает бут 07.B0
Жду отзывов, вопросов, пожеланий, предложений.
Над пустым дисплеем буду работать
Приложил ещё исходники
Сообщение отредактировал motoprogger - 10.2.2008, 4:03
Мной разработана методика, а затем и комплект для понижения бута до 07.B0 и испытан на своей C380 (специально прошил в неё бут 08.26), затем DmT этот процесс автоматизировал, за что ему мега-респект.
Для желающих сделать это вручную: требуется только Flash&Backup 3.x.x (проверял на 3.0.4) и приложенный мной в архиве файл step2.shx
Алгоритм:
1) Flash&Backup-ом снимаем бекап всех кодовых групп
2) Им же прошиваем приложенный мной файл step2.shx
После окончания прошивания дисплей погаснет на несколько секунд, компьютер может сообщить "Неопознанное USB-устройство". Всё нормально, как раз в это время и происходит понижение версии бута. Через несколько секунд должен запуститься уже бут 07.B0 с ошибкой "MEM_MAP Blank, Service req'd", но я реально наблюдал чёрный дисплей, подсветка включена. Телефон нормально определяется и прошивается, как в буте.
3) Прошиваем либо наш бекап, сделанный на шаге 1, либо понравившийся рефлеш или монстр (можно патченый, но не забываем отключать RSA).
Ни в коем случае не прошивайте файл step2.shx в телефон с другой версией бута! Получите "Неопознанное USB устройство" и необходимость ТП.
Как это работает.
В буте 08.26 (C390) по адресу 10003ABC находится последовательность байт:
Код
EA 53 0F 90
. Если интерпретировать её как код ARM, получим переход на адрес 114C7904. После 11000000 видно "вторую копию" флешки, то есть записав любой код по адресу 104С7904, мы получим по адресу 10003ABC переход на наш код.Для того чтобы таким способом наш код запустить, нужно:
1) В первые 4 байта CG1 и в неё же по смещению +C4, также в первые 4 байта CG3 записать адрес 10003ABC - адрес точки входа в прошивку
2) В первые 4 байта CG18 записать адрес 1000E800 - адрес подписи бута.
Всё. Поскольку адрес 10003ABC покрывается подписью бута, бут вместо прошивки проверит сам себя и перейдёт на этот адрес, а оттуда - на 104C7904.
Мой файл step2.shx представляет собой:
1) CG1: в начале MEM_MAP с применёнными патчами, после неё - бут 07.B0, от которого "отрезаны" последние 256 байт (они все FF)
2) CG2: на самом деле это кусок CG1, вписывает мой программный код по адресу 104С7904
3) CG3: первые 16 байт скопированы из оригинальной прошивки, первые 4 изменены, дальше FF до 64 КБ
4) CG18: первые 16 байт перенесены из оригинальной (кроме изменённых первых 4 байт), дальше FF до 2 КБ.
Ключевой момент в том программном коде, который записывается по адресу 104С7904. Что он делает:
1) Копирует бут 07.B0 из адреса 10080100 в адрес 03FD0000 (в оперативную память)
2) Стирает диапазоны памяти 10000000-10010000 и 10080000-100A0000
3) Прошивает бут 07.B0 по адресу 10000000 (его законному)
4) Запускает бут 07.B0
Жду отзывов, вопросов, пожеланий, предложений.
Над пустым дисплеем буду работать
Приложил ещё исходники
Сообщение отредактировал motoprogger - 10.2.2008, 4:03