motofan logo
> 

Ковыряем бут

igorCool
сообщение 11.3.2007, 8:12


Новичок
*

Группа: Пользователи
Сообщений: 12
Регистрация: 11.3.2007
Пользователь №: 126 394
Модель телефона: Motorola C390
Прошивка: R368_G_0B.A0.0FR

Рейтинг: 3



Сразу к делу.

Как(чем) слить ROM (0x00000000 по 0х001С0000)?
В команде READ во встроенном буте (0x10000000) идет проверка на выход параметра за границы:
0х10000000-0х12000000

Код

Boot:100012D8                 LDR     R0, =0x3FC836C
Boot:100012DA                 LDRB    R0, [R0]
Boot:100012DC                 CMP     R0, #0
Boot:100012DE                 BEQ     loc_1000130A
Boot:100012E0                 BL      PhoneType      ; 1-engn;2,8-prod;other-dsbl
Boot:100012E4                 CMP     R0, #2
Boot:100012E6                 BNE     loc_1000130A
Boot:100012E8                 LDR     R0, =off_10000000    
Boot:100012EA                 CMP     R7, R0                       -здесь
Boot:100012EC                 BCC     error_83
Boot:100012EE                 MOVL    R3, 0x2000
Boot:100012F2                 ADD     R3, SP
Boot:100012F4                 LDR     R1, =off_10000000
Boot:100012F6                 MOVL    R2, 0x2000000
Boot:100012FA                 ADD     R1, R1, R2
Boot:100012FC                 LDR     R0, [R3,#0x38]
Boot:100012FE                 CMP     R0, R1                       -и здесь
Boot:10001300                 BCC     loc_1000130A
Boot:10001302
Boot:10001302 error_83                               ; CODE XREF: cmd_READ+64j
Boot:10001302                 MOV     R0, #0x83; 'Ã'
Boot:10001304                 BL      answer_err
Boot:10001308                 B       exit


В буте который загружается в телефон (ramldr) таже проблема.
При исправлении ramldr бута он не запускается, видимо идёт проверка CRC бута.
Вопрос: как отключить эту проверку, чтобы написать свой бут?
Где может находится эта проверка?

При изучении команды JUMP встроенного бута нашел, что он всегда прыгает на 03FD0010 и имеет в
своем теле процедуру обращающаюся по адресу 0x39023902 - что там? (может это и есть проверка)

Как видно из приведенного кода - если телефон имеет тип "engn" то проверки не происходит.
Можно ли указать телефону, что он "engn"?

Если я исправлю бут по 0x10000000 то тел загнется или все будет нормально?

И последнее:

Boot:100035BC LDR R12, =0x2189
Boot:100035C0 BX R12

Как передастся управление обратно после выполнения процедуры по 0x2189 или это IDA не правильно отобразила код? (это процедура проверки типа телефона "PhoneType")


Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
 
Ответ в темуСоздание новой темы
Ответов
igorCool
сообщение 13.3.2007, 4:22


Новичок
*

Группа: Пользователи
Сообщений: 12
Регистрация: 11.3.2007
Пользователь №: 126 394
Модель телефона: Motorola C390
Прошивка: R368_G_0B.A0.0FR

Рейтинг: 3



Несколько вопросов:
Как узнали адреса устройств? (Например что usb - 0x24852000)

При включении прыгаем на адрес 0x00015170
Код

ROM:00015170                 MOV     R0, #0
ROM:00015174                 MOV     R1, #0
ROM:00015178                 MOV     R2, #0
ROM:0001517C                 MOV     R3, #0
ROM:00015180                 MOV     R4, #0
ROM:00015184                 MOV     R5, #0
ROM:00015188                 MOV     R6, #0
ROM:0001518C                 MOV     R7, #0
ROM:00015190                 MOV     R8, #0
ROM:00015194                 MOV     R9, #0
ROM:00015198                 MOV     R10, #0
ROM:0001519C                 MOV     R11, #0
ROM:000151A0                 MOV     R12, #0
ROM:000151A4                 TEQP    R1, #0xD3                 -зачем это?
ROM:000151A8                 LDR     SP, =0x3FEFF80
ROM:000151AC                 LDR     R0, =0x24840000
ROM:000151B0                 LDR     R1, =0xFCAFF304
ROM:000151B4                 STR     R1, [R0]
ROM:000151B8                 LDR     R0, =0x24840004
ROM:000151BC                 LDR     R1, =0x7300CFF
ROM:000151C0                 STR     R1, [R0]
ROM:000151C4                 BL      sub_44

ROM:00000044 sub_44                                  
ROM:00000044                 ADR     R8, off_110
ROM:00000048                 LDMIA   R8, {R0,R1}
ROM:0000004C                 ADD     R0, R0, R8
ROM:00000050                 ADD     R1, R1, R8
ROM:00000054                 SUB     R11, R0, #1
ROM:00000058                 CMP     R0, R1
ROM:0000005C                 BEQ     loc_B0


При этом off_110 указывает на строку "open", и с этого адреса загружаются регистры R0 и R1. Тоесть надо расматривать off_110 как данные?

Далее идем по коду и встречаем:
Код

ROM:00013CB4                 BL      __rt_stackheap_init
ROM:00013CB8                 BL      sub_1509C
ROM:00013CBC                 LDR     R12, =0xFFFF19D7
ROM:00013CC0                 ADD     R12, R12, PC
ROM:00013CC4                 TST     R12, #1
ROM:00013CC8                 ADRNE   LR, (loc_13CDC+1)
ROM:00013CCC                 MOVEQ   LR, PC
ROM:00013CD0                 BX      R12
ROM:00013CD4                 ADR     R12, (loc_13CDC+1)
ROM:00013CD8                 BX      R12
ROM:00013CDC                 CODE16
ROM:00013CDC                 BL      sub_13ECC


Это преход на главную процедур?
По BX R12 мы попадаем на 0x5696 (0xFFFF19D7+0x00013CC0), но там:
Код

ROM:00005694                 BL      cmd_main_Start
ROM:00005698                 POP     {R1-R7}
ROM:0000569A                 POP     {R3}
ROM:0000569C                 BX      R3


Как видно 0x5696 - нету. При этом в cmd_main_Start имеется команда чтения из 0x3F80018, что не реально т.к. область RAM еще не инициализированна.

В чем загвоздка?

Сообщение отредактировал igorCool - 13.3.2007, 4:37
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить

Сообщений в этой теме
igorCool   Ковыряем бут   11.3.2007, 8:12
Random   igorCool, Проверка не CRC идет, а подписи по алго...   11.3.2007, 8:23
igorCool   Т.е. в загружаемом буте находится подпись? или она...   11.3.2007, 8:48
Vilko   igorCool, подпись находится и в буте что по адрес...   11.3.2007, 9:04
igorCool   Риторический вопрос (хотя ответ приветствуется): И...   12.3.2007, 7:53
Vilko   Риторический вопрос (хотя ответ приветствуется): ...   12.3.2007, 8:38
igorCool   обработчик memacs похож на обработчик READ? А то я...   12.3.2007, 10:36
Vilko   обработчик memacs похож на обработчик READ? А то ...   12.3.2007, 11:22
igorCool   Несколько вопросов: Как узнали адреса устройств? (...   13.3.2007, 4:22
Vilko   итак, несколько ответов ;) 1: эту команду ина неп...   13.3.2007, 7:00
igorCool   Интересно, по адресу 0x20000 код повторяется, Dual...   13.3.2007, 8:28
Vilko   igorCool, скорее просто глюк чтения. заново начал...   13.3.2007, 11:29
igorCool   igorCool, скорее просто глюк чтения. заново нача...   17.3.2007, 2:40
Vilko   igorCool, гм. пример? я - не нашел таковых   17.3.2007, 5:29
igorCool   [b]igorCool, гм. пример? я - не нашел таковых ...   17.3.2007, 7:17
Vilko   это не указатели, это числовые константы просто ;)...   17.3.2007, 8:48
igorCool   Пара вопросов: 1. Имеет ли смысл функция начинающ...   17.3.2007, 9:14
Vilko   igorCool, 1й фрагмент - видимо не имеет смысла. 2...   17.3.2007, 9:59
igorCool   В кодовых групах, сразу за указателем на начало, с...   18.3.2007, 3:09
Vilko   igorCool, B1 это метка, признак "правильност...   18.3.2007, 6:24
igorCool   В буте есть функция (см. ниже) по результату котор...   18.3.2007, 7:12
Vilko   гм. не совсем понял что это за фрагмент, но если о...   18.3.2007, 7:19
borisk   ja pitajus raskrit Motorolovskuju proshivku RAZR V...   30.3.2007, 16:41
Vilko   borisk, Учимся Патчить Прошивку.   30.3.2007, 19:25

Ковыряем бут · Ломаем и строим! · Forum
 

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

 



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

Форум живёт: