motofan logo
10 страниц V < 1 2 3 4 5 > » 
Причина закрытия (Semenigor 15-03-2009):
       
> 

обход rsa на motomagx телефонах, проверено и работает на V8, E8, Z6, U9

yakk
сообщение 28.12.2008, 13:10 Закрепленное сообщение!



*****

Группа: Разработчики
Сообщений: 336
Регистрация: 6.7.2006
Из: Днепропетровск
Пользователь №: 90 408

Рейтинг: 904



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

Внимание: если вы собираетесь делать то что здесь описано со своим телефонам - вы делаете это на свой страх и риск.. я не отвечаю за убитые вами телефоны..

Немного теории wink.gif
Дыра обнаружилась в irom-загрузчике BP. При включении телефона бут (mbm AP-части) первым делом загружает в оперативную память bp-loader и передаёт BP команду выполнения bp-loader. irom-загрузчик BP проверяет подпись bp-loader и, если с ней всё в порядке - передает исполнение bp-loader'у. Важный момент - непосредственно перед проверкой подписи irom загрузчик BP проверяет наличие в заголовке bp-loader указателя на некоторую структуру и если этот указатель есть - разбирает эту структуру.. Эта структура, помимо заголовка, содержит набор адресов и значений; irom-загрузчик записывает в каждый из адресов (если адреса по его мнению корректные) соответствующее значение.. Таким образом есть возможность заполнить эту структуру самостоятельно и переложить на BP работу по "отпатчиванию" бута AP (бут AP в данный момент загружен в оперативку, его подпись уже проверена ранее и он ожидает ответ BP, что bp-loader прошел проверку подписи).. При этом саму структуру можно расположить за подписью и в ней же описать патч приводящий заголовок bp-loader к исходному состоянию, чтобы он нормально прошел проверку подписи..
Необходимые дополнения в bp-loader:
Размещаем за подписью bp-loader структуру следующего формата:
первые четыре байта от начала структуры - 0xB17219E9 - константа, по которой проверяется корректность структуры.
следующие четыре байта - размер структуры (должен быть кратен восьми, но не больше 256).
Дальше следует список адресов и значений (четыре байта на адрес и четыре - на значение).
В заголовке bp-loader необходимо поставить указатель на эту структуру, (четыре байта по адресу +0x14 от начала bp-loader) и указатель на этот указатель smile.gif (по адресу +0x0c от начала bp-loader).. Соответственно чтобы bp-loader прошел проверку подписи - нужно будет вернуть заголовок к изначальному виду (обычно в данных полях нули) и поэтому первыми патчами описанными в структуре - делается именно запись нулей в данные поля.. Дальше следуют патчи которые нужно применить к ап-буту..
После ряда экспериментов я получил минимальный набор патчей бута которые приводят к тому что телефон соглашается работать с неподписанной прошивкой для бутов 06.a3 (e8) и a3.cf (v8) - телефоны которые "дожили" до победы..
Патчи зависят от версии бута, при установке неправильных патчей, или правильных, но не соответствущих версии бута - получаете труп. У меня уже лежит убитый z6 - на нём пробовались ранние версии патчей, в которых я не учёл некоторых проверок в буте, у dimichxp - убитый е8. Получится ли восстановить эти телефоны - большой вопрос..
Ну, основные вещи вроде все написал, прилагаю полученные буты, которые нужно просто прошить в телефон, если версия бута Вашего телефона совпадает с одной из указанных.. Хотя даже если совпадает - подумайте лишний раз насколько Вам всё это нужно ))

если кто возьмется портировать это на другие версии бутов/телефоны - имейте в виду что нужно быть предельно внимательным и перепроверять всё что делаете, попытка скорее всего будет только одна!!!

a3.cc (z6) - проверил на своём восстановленном z6 - всё работает, только ругается на security-версии кодовых груп, если их затирать. т.е. можно просто их сохранять.. хотя я поправил в cdt требование не проверять rootfs и лэнг - лэнг пересобранный и ничем не дополненный, rootfs - не пересобирал, просто стер подпись и security-версию.. если не править cdt - валится с ошибками на проверке версий, после исправления cdt - нормально работает..

ps: патч для бута 06.2b (zn5) - пока находится в стадии тестирования, не гарантируется, что его применение приведет к обходу RSA, но будучи прошитим на телефон с соответствующей версией бута - трупов быть не должно.. (чуть инфы для интересующихся - на новых версиях патчей не делается подмены инженерности, т.е. патчатся только собственно функции проверки подписей)..
06.2b (zn5).

pps: добавил патч для бута 06.a9 (e8) - пока для тестирования, хотя в принципе я его проверил - телефон после установки патча работал с неподписанными группами. опять же следим за версиями кодовых групп и не зашиваем всё без разбору..

добавил патч для бута 06.2a (u9) - спасибо за тестирование andrey_moto.

Сообщение отредактировал yakk - 16.1.2009, 3:57
Прикрепленный файл e8___06a9.rar   ( 153.45 килобайт ) Кол-во скачиваний: 1371
Прикрепленный файл u9_062a.rar   ( 141.39 килобайт ) Кол-во скачиваний: 1221
Прикрепленный файл v8_a3cf.rar   ( 96.34 килобайт ) Кол-во скачиваний: 8083
Прикрепленный файл e8_06a3.rar   ( 153.6 килобайт ) Кол-во скачиваний: 1481
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
motofan-kz
сообщение 29.12.2008, 4:11


Ветеран
*****

Группа: Пользователи
Сообщений: 500
Регистрация: 25.2.2007
Пользователь №: 124 057
Модель телефона: Гнусмас
Прошивка: Android

Рейтинг: 289



yakk
Молодец!!! Хоть нету у меня V8 (или че там), но всеравно это прогресс!!! Бери "+"
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Pirantel
сообщение 29.12.2008, 7:45


Интересующийся
**

Группа: Пользователи
Сообщений: 74
Регистрация: 11.11.2008
Из: φ=59º55'
Пользователь №: 185 880
Модель телефона: Motorola Zet6
Прошивка: PE2

Рейтинг: 37.5



cmax24,
даже не думай,это только пока что(надеюсь)для Е8 и V8!
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
БАZА
сообщение 29.12.2008, 7:58


Мастер
****

Группа: Пользователи
Сообщений: 179
Регистрация: 8.3.2007
Из: Заречный
Пользователь №: 125 911
Модель телефона: /Е8/V8/CLIQ
Прошивка: /Z-Mod/??/2.1

Рейтинг: 3



А на Е8 с уже подписанной прошивкой ни кто не пробовал ставить? А то страшно... unsure.gif
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Teraflop
сообщение 29.12.2008, 8:28


Новичок
*

Группа: Начинающие
Сообщений: 3
Регистрация: 21.11.2008
Из: Киев
Пользователь №: 186 665
Модель телефона: ROKR E8
Прошивка: Своя на базе 72.07R

Рейтинг: 0



yakk, гениально! clap.gif Спасибо огромное за труд!

Эх, теперь бы приделать JSR82 (Bluetooth API) к яве, в JSR75 (Filesystem API) муть с подписями мидлетов убрать, к плееру Vorbis прикрутить (ну можно еще и "теплый ламповый FLAC" для особых эстетов), сделать опцию отключения Omega... Эх, что-то это я размечтался...
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
hobbit19
сообщение 29.12.2008, 9:36


квант истории
******

Группа: Пользователи
Сообщений: 1 043
Регистрация: 1.4.2005
Из: Рязань
Пользователь №: 39 980
Модель телефона: (M)oTorola
Прошивка: testing/unstable
Победитель конкурса 2008

Рейтинг: 739.5



Цитата
А на Е8 с уже подписанной прошивкой ни кто не пробовал ставить? А то страшно..

так все прошивки подписание. если ты про CG52 то с ней подписаной тоже все рабоотает прекрасно )
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
MOTOZ3
сообщение 29.12.2008, 11:08


Новичок
*

Группа: Пользователи
Сообщений: 25
Регистрация: 18.7.2007
Из: Волгодонск
Пользователь №: 141 767
Модель телефона: E8
Прошивка: 07R

Рейтинг: 4



А на какой проше Е8 может работать??? У меня 07R
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
hobbit19
сообщение 29.12.2008, 12:08


квант истории
******

Группа: Пользователи
Сообщений: 1 043
Регистрация: 1.4.2005
Из: Рязань
Пользователь №: 39 980
Модель телефона: (M)oTorola
Прошивка: testing/unstable
Победитель конкурса 2008

Рейтинг: 739.5



Цитата
А на какой проше Е8 может работать??? У меня 07R

на любой . есть готовый патч под бут 06.3а
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
zolookas
сообщение 29.12.2008, 13:36


Интересующийся
**

Группа: Пользователи
Сообщений: 38
Регистрация: 25.5.2005
Пользователь №: 43 073
Модель телефона: e398
Прошивка: R373_G_0E.30.49R

Рейтинг: 3.5



***Это перевод информации на английский язык.

If anyone is interested i have tried to translate first post by hand. Feel free to point any translation errors if i have made any.

QUOTE(yakk)

I have found a security hole in motomagx phones loaders which allows to run unsigned AP-firmwares.

Warning: if you are going to do this, you take your own responsobility for any damages that may occur to your phone.

A bit theory wink.gif
Hole exists in irom-loader BP. When you trun the phone on, boot (mbm AP-part) loads bp-loader into ram and sends BP command to execute bp-loader. irom-loader BP checks bp-loader's signature and if everything is ok, executes bp-loader. The important thing is that just before checking irom's signature, BP checks the header which has pointer to a special structure, if that pointer exists, it parses that structure. That structure has a header and contains a set of addresses and values; irom-loader writes in each of the addresses (if addresses are correct) appropriate value. That makes it possible for us to complete the structure and make BP work with patched AP boot (AP boot's signature was checked earlier, it is now loaded into memory and waiting a message from BP boot that it has completed signature check). The structure can be placed right after the signature and make this structure describe a patch that will change the BP-loader header into the initial state so that it can pass signature check.

Necessary additions to bp-loader:
After bp-loader signature place a structure like this:
first four bytes from structure's start - 0xB17219E9 - any other value would make signature check fail.
next four bytes - size of structure (must be a multiple of 8, but not more than 256)
Next comes a list of addresses and values (four bytes for address and four bytes for value).
You must make a pointer in bp-loader's header to that structure (for bytes to offset +0x14 from bp-loader's start) and pointer to that pointer smile.gif (to offset +0x0c from bp-loader's start). Then to allow bp-loader to successfully complete signature check we need to return header to a previous state (usually there are zeros) and the first thing we need to do then is to fill that part of memory with zeros. Then patch AP-boot.
After making a lot of tests i have succeeded to build a minimal set of patches to make phones with 06.a3 boot (e8) and a3.cf boot (v8) work without signed firmware.
Different boot loader versions require different patches, if you will use incorrect patch, you will kill your phone. I have a dead z6 which has earlier version of patch which didn't work, because then i did not notice a few checks in boot, dimichxp has bricked е8. Nobody knows if those phones will be recovered. So check if your boot loader version matches when you will try patch and seriously consider your decision

If you want to port this to other boot loaders, check your code, because you will have only one chance!!!


Patched files are attached to the first post.

There is one sentence which I was unable to translate (i understand the words, but not the whole sentence), this one:
QUOTE(yakk)
При этом саму структуру можно расположить за подписью и в ней же описать патч приводящий заголовок bp-loader к исходному состоянию, чтобы он нормально прошел проверку подписи..


EDIT: Thanks for people who helped! Translation is now complete.

Сообщение отредактировал zolookas - 29.12.2008, 21:10
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
motoprogger
сообщение 29.12.2008, 14:09


Гуру
******

Группа: Разработчики
Сообщений: 1 327
Регистрация: 20.7.2006
Из: Г. Омск
Пользователь №: 92 049
Модель телефона: C380 и Talkabout
Прошивка: разные

Рейтинг: 490



zolookas,
I can help you with translation:
Цитата
The structure can be placed right after the signature and make this structure describe a patch that will change the BP-loader header into the initial state to that it can pass signature check.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Abram
сообщение 29.12.2008, 15:15


Прелесть какая гадость
*******

Группа: Разработчики
Сообщений: 1 963
Регистрация: 24.6.2005
Из: .ru - рідна Україна
Пользователь №: 44 825
Модель телефона: Moto G XT1033
Прошивка: CyanogenMod
Победитель конкурса 2008

Рейтинг: 744



Цитата(motoprogger @ Сегодня, 16:09)

change the BP-loader header into the initial state to that it can pass signature check.
*


state so that tongue.gif
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
обход rsa на motomagx телефонах, проверено и работает на V8, E8, Z6, U9 · Ломаем и строим! · Forum
 

10 страниц V < 1 2 3 4 5 > » 
Причина закрытия (Semenigor 15-03-2009):
Закрытая темаСоздание новой темы
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 28.3.2024, 15:13

Форум живёт: