MotoFan.Ru — всё для Motorola > Разработки > Ломаем и строим!

обход rsa на motomagx телефонах Полная версия
Страницы: 1, 2, 3, 4, 5

 av yakk

 28.12.2008, 13:10

Итак, мне наконец-то удалось обнаружить дыру в загрузчике 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.

 av hobbit19

 28.12.2008, 13:16

спасибо
молодцы.

 av MOTOROKR

 28.12.2008, 13:20

Очень круто. Респект smile.gif

 av hobbit19

 28.12.2008, 13:32

прошился е8 жив )

yakk - в зеленую группу
а dimichxp неплохобы новый е8 подарить.

 av Ilya Petrov

 28.12.2008, 13:43

это офигенно.

 av Arch0n

 28.12.2008, 13:45

Отличная работа.
Сочувствую yakk и dimichxp.. Надеюсь, удастся оживить...

 av Nicron

 28.12.2008, 14:12

Оо Пацаны Красавы thumbsup.gif

 av Chacha_Ivanov

 28.12.2008, 15:06

Жаль Z6 в этом списке нет( Но все равно молодцы)

 av hobbit19

 28.12.2008, 15:17

Цитата
Жаль Z6 в этом списке нет( Но все равно молодцы)

так портируй патч на з6 )

Добавлено позже (28.12.2008, 18:37):
Цитата
Дальше следуют патчи которые нужно применить к ап-буту..

yakk можна чуть подробнее про эти патчи.

 av yakk

 28.12.2008, 16:07

Цитата(hobbit19 @ 28.12.2008, 17:17) *

yakk можна чуть подробнее про эти патчи.

попробую (не факт что то как делаю я проще всего -- но оно работает):
1. Функция hab_su_type, или get_su_type - кто смотрел эльф на LTE - поймет - проверка инженерности телфона.. начало выглядит так (адреса корректны для бута 06.a3):
Код
ROM:90019F04 88 48                       LDR     R0, =0x5001C810
ROM:90019F06 01 68                       LDR     R1, [R0]
ROM:90019F08 49 07                       LSLS    R1, R1, #0x1D
ROM:90019F0A 00 68                       LDR     R0, [R0]
ROM:90019F0C C9 0F                       LSRS    R1, R1, #0x1F

Заменяется кодом:
Код
MOVS R0, #1
BX LR

2. Бут проверяет не меняется ли инженерность в процессе работы (именно на этом с z6 всё закончилось..)
не знаю как проще объяснить, в общем вот в этом куске нужно убрать переход
Код
ROM:90011994 68 89                       LDRH    R0, [R5,#0xA]
ROM:90011996 8C 49                       LDR     R1, =0xA55A
ROM:90011998 88 42                       CMP     R0, R1
ROM:9001199A 01 D1                       BNE     loc_900119A0
ROM:9001199C 6C 81                       STRH    R4, [R5,#0xA]


переход "BNE loc_900119A0" я заменяю безобидным мусором типа
Код
MOVS R0, #1
MOVS R0, #1


3. и 4. функции проверки подписи (привожу фрагменты начала)..
Код
ROM:90016912 F3 B5                       PUSH    {R0,R1,R4-R7,LR}
ROM:90016914 7D 22                       MOVS    R2, #0x7D
ROM:90016916 85 B0                       SUB     SP, SP, #0x14
ROM:90016918 F0 24                       MOVS    R4, #0xF0
ROM:9001691A 07 46                       MOV     R7, R0

и
Код
ROM:90016A12 F8 B5                       PUSH    {R3-R7,LR}
ROM:90016A14 43 18                       ADDS    R3, R0, R1
ROM:90016A16 01 21                       MOVS    R1, #1
ROM:90016A18 4D 4A                       LDR     R2, =0x9001C8A8
ROM:90016A1A 00 25                       MOVS    R5, #0
ROM:90016A1C C9 03                       LSLS    R1, R1, #0xF
ROM:90016A1E 8B 42                       CMP     R3, R1

Заменяются кодом
Код

MOVS R0, #0x1F
LSLS R0, R0, #0x04
BX LR

что означает успешную проверку для инженерного телфона..

скорее всего можно обойтись только 3 и 4 патчем, но без первых двух нужно будет исправлять так чтобы была успешная проверка для серийного телефона (скорее всего smile.gif) у меня прямо сейчас нет желания проверять..

ну и вся эта ерунда прописана в bp-loader - т.е. cg32 прошивок, смотрите внимательно в чём различия - и следите за последовательностью байтов, т.к. у AP и BP разная endianness - там все байты перемешаны..

ps: в е8 еще патчится строка "Bootloader".. (если кто будет портировать - рекомендую начать именно с этого, перед тем как патчить непосредственно код бута - поможет усвоить правильную последовательность байтов wink.gif только не забывать про то что в заголовок bp-loader нужно возвращать нули, ну и длину блока с патчами соответственно менять если что)

 av telnet

 28.12.2008, 16:41

Гениально! Жаль у меня на МОТОМЕДЖИКе нет телефона.
Вдвойне приятно-что наши сделали-а не китайцы какие ...


Цитата
так портируй патч на з6 )

а инструкцию можно как портировать?

 no av jmoncayo

 28.12.2008, 16:56

would anyone please translate this to englsih? translate.google just sucks.
thanks

 av MOTOROKR

 28.12.2008, 17:05

jmoncayo, they made BP to patch AP boot on phone's startup using some weakness in pointer structure which BP parses before AP signature is checked. So any signature is now determined by phone as valid and RSA is hacked. Two patched boots (for E8 and V8) are now available, please be careful and don't flash them to incompatible phone model or boot version otherwise your phone won't work anymore.

 no av are_ed

 28.12.2008, 17:27

that means we can flash any firmware without problem or else...or phone will not lock

 av DmT

 28.12.2008, 18:36

Можно я тут встряну в разговор.
Цитата(hobbit19 @ Сегодня, 20:17)

так портируй патч на з6 )
*


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

 av GandjaFuzz

 28.12.2008, 19:14

ребята, мои поздравления! smile.gif молодцы )

 no av Джуманджи

 28.12.2008, 19:22

Молодцы парни! (= Уже и рейтинг повышать нельзя сегодня.. Объясните мне, как заядлому "п2кашнику" что дает
Цитата(yakk @ Сегодня, 16:10)

неподписанная AP-прошивка
*

? shuffle.gif

 av MIG~

 28.12.2008, 21:32

Цитата(Джуманджи @ 28.12.2008, 22:22) *

Уже и рейтинг повышать нельзя сегодня..
Добавь разработки на платформе POG дуалбут , самые сложные части ельфов , снятие ограничения с MP3 битрейт , порты нескольких самых сложных патчей и что у нас yakk получит ? Лучший разработчик

 av hobbit19

 28.12.2008, 23:13

Цитата
что у нас yakk получит ?

тогд уж Открытие года - человек-который за этот год достиг наилучших результатов

 av Abram

 29.12.2008, 0:45

Z6, A3.CC. Труп.
yakk, симптомы те же, что у тебя с первой попыткой. Сейчас будет ТП, а там посмотрим.
Страницы: 1, 2, 3, 4, 5

Полная версия:


MotoFan.ru (©) 2024    Слушать Radio