motofan logo
21 страниц V « < 3 4 5 6 7 > »         
> 

Учимся Патчить Прошивку., Дисассемблируем ARM.

Arkasha18
сообщение 24.11.2005, 21:32 Закрепленное сообщение!



****

Группа: Администраторы
Сообщений: 242
Регистрация: 27.4.2004
Из: Санкт-Петербург
Пользователь №: 2

Рейтинг: 249.5



Всем привет.
И так будем учиться дисассемблировать прошивку. Тут все просто не чего сложного.

Я не буду объяснять как SHX разобрать, надеюсь все знают. Единственное условие… CG0(MemoryMap) должна быть слита с прошивкой, а то не чего не выйдет, т.е. один файл д.б.
--------------------------
ссылка на программу IDA Pro Advanced https://motofan.ru/soft/?action=view&id=246&parent=5
Запускаем IDA , выбираем файл прошивки (CG1), потом выбираем Processor type – ARMB, жмем ок.
Тут ставим галки на Create RAM section и Create ROM section.
Выставляем адреса:
RAM start address - 0x03FC0000
RAM size - 0x40000
ROM start address - 0x10080000
ROM size - 0x1F80000
Loading address - 0x10080000
Остальное оставьте так как есть.
Жмем Ок, и ждем.


По хорошему теперь еще оперативку будет правильно сделать, идем в меню:
Edit>segments>create>segment
Пишем:
Segment name – любое придумайте;
Start address - 0x12000000
End address - 0x12800000
Base – 0

Теперь переходи на сегмент ROM (жмем на Клаве ”g” пишем 10080000, должны перескочить на 10080000 адрес ).
Объявляем dword (жмем Alt-D, потом на кнопку Double word).
у меня это вылезло это
Код

ROM:10080000                 DCD 0x10BCD3D0

Появилось (оранжевым цветом).
Теперь жмем "O" (Буква латинская О ), должен появиться указатель на точку входа
у меня это вылезло это
Код

ROM:10080000                 DCD byte_10BCD3D0

Встаем на этот (byte_10BCD3D0) адрес курсором и жмем на Enter или просто двойной щелчок мышкой по этому адресу, вы перепрыгнете на адрес (10BCD3D0).

И так мы сейчас на 10BCD3D0.
Теперь сморим. ARM умеет работать в 2х режимах:
ARM - режим 32хразрядных опкодов и
THUMB - режим 16тиразрядных опкодов.
Для самой иды режим задается младшим битом адреса опкода.
т.е. если адрес например был бы 10A01D18 - то это был бы опкод в режиме ARM по адресу 10A01D18
а если адрес 10A01D19 то это опкод по адресу 10A01D18 в режиме THUMB
в ARM режиме набор команд более гибкий, но в THUMB за 1 цикл выполняется 2 команды - он быстрее.

Это мне так Vilko объяснял…я конечно же не Х.. не понял, так что буду говорить своими словами.
Нам сейчас надо задать ИДЕ режим в котором мы будем работать.
Мы стоим на адресе 10BCD3D0, если мы посмотрим на этот адрес в двоичной системе исчисления, то будет видно что это 000100000101111001101001111010000, так вот если последний байт – 0, то значит режим ARM, а если 1 – THUMB.
Теперь говорим идее в каком мы режиме будем работать:
Если THUMB то надо встать на один адрес выше, т.е если стояли например на 10BCD3CF этот адрес говорит что режим THUMB, значит встаем на один адрес выше (10BCD3CE) и
жмем (Alt+G) , выбираем ”T”,а в поле Value ставим 1 (режим THUMB).

А если мы бы определили что режим ARM, то на один адрес выше вставать не надо! Просто на этом же адресе жмем (Alt+G) , выбираем ”T”,а в поле Value ставим 0 (режим ARM).

И так…фух…устал уже (
У меня получилась такая картина:
Код

ROM:10BCD3CC                 DCB 0xE7; ч
ROM:10BCD3CD                 DCB 0xF9; •
ROM:10BCD3CE                 DCB    0;  
ROM:10BCD3CF                 DCB    0;  
ROM:10BCD3D0                 CODE32
ROM:10BCD3D0 byte_10BCD3D0   DCB 0xE3        ; DATA XREF: ROM:10080000 o
ROM:10BCD3D1                 DCB 0x21; !
ROM:10BCD3D2                 DCB 0xF0; Ё
ROM:10BCD3D3                 DCB 0xD1; T

У меня режим ARM !
Теперь встаем курсором на ROM:10BCD3D0 и жмем на Клаве ”c” (объявляем код). (кнопку С надо давить на адресе, около которого появилсяь надпись CODE16 или CODE32 в зависимости от режима )
Должен появиться АСМ примерно такого плана.
Код

M:10A01DA4; ---------------------------------------------------------------------------
ROM:10A01DA4                 CODE16
ROM:10A01DA4                 LDR     R1, =0x28880020; DATA XREF: ROM:10BCD424o
ROM:10A01DA6                 LDR     R0, =0x2201
ROM:10A01DA8                 PUSH    {R4,R5,R7,LR}
ROM:10A01DAA                 STMIA   R1!, {R0}
ROM:10A01DAC                 LDR     R0, =0x3011
ROM:10A01DAE                 MOV     R5, #0
ROM:10A01DB0                 STR     R0, [R1]
ROM:10A01DB2                 MOV     R0, #3
ROM:10A01DB4                 ADD     R1, #4
ROM:10A01DB6                 LSL     R0, R0, #0x11
ROM:10A01DB8                 STMIA   R1!, {R0,R5}
ROM:10A01DBA                 MOV     R0, #0

Собственно и все…дальше только остается объявлять код (вызов unk_address)…..и менять режим….режим меняется только после оператора BX.

Ссылка на литературу по ARM.
Краткий справочний по командам ARM. (Это от ARM9 в нашем ARM7 многих команд нет, учтите это)

P.S.
Задавайте вопросы, я понимаю что не чего не понятно, так что не стесняйтесь.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
KOPAY
сообщение 22.1.2006, 16:28


Новичок
*

Группа: Пользователи
Сообщений: 17
Регистрация: 11.4.2005
Пользователь №: 40 532
Модель телефона: E398

Рейтинг: 1



второе конечно же.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Random
сообщение 23.1.2006, 9:19


Музыкант
******

Группа: Почётные мотофаны
Сообщений: 1 066
Регистрация: 28.1.2005
Пользователь №: 36 054
Модель телефона: iPhone 4S

Рейтинг: 921



Цитата(bad-rustamka @ Пятница, 20 Января 2006, 21:42)
Подскажите плз адрес точки входа в прошу 6fr, а то ИДА выдаёт полнейшую бедиберду, если делать по мануалу, написанному выше
*



Попробуй 10BE28BC
Скорее всего поможет.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Vilko
сообщение 24.1.2006, 21:44


Мотокодер
******

Группа: Легенды MotoFan.Ru
Сообщений: 1 331
Регистрация: 23.6.2003
Из: Москва
Пользователь №: 71
Модель телефона: E398+, Е1000, ...

Рейтинг: 1116



KOPAY, ну, возможно и это. причем разными способами...
1 - проще, но менее аккуратно: в телефоне есть tci-команда MEMACC, дающая доступ к оперативке в процессе работы. а в оперативке есть таблицы задач, вектора прерываний и прочее. продолжать надо? ;)
2 - сложнее, но "правильнее": добавление патчем в обработчик TCI новой команды, реализующий выделение памяти, загрузку в оперативку и запуск там кода(опционально - добавление этого кода в список работающих процессов телефона).
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Vscz
сообщение 3.2.2006, 22:31


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

Группа: Пользователи
Сообщений: 84
Регистрация: 23.11.2005
Из: Н.Новгород
Пользователь №: 59 390
Модель телефона: E398. вроде
Прошивка: MS 79R 1.5 Pro

Рейтинг: 3.5



Извините, а чем кроме айды чем ещё можно пользоваться. Я лично Хайвив люблю, лежит на этом сайте --> КрекЛаб
Vilko, если сможешь, перебей хайвив под мобилу, чтоб мог всё необходимое делать
(блин тупею, о чем прошу, ну и ладно :) )
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Lezhik
сообщение 2.3.2006, 10:38


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

Группа: Пользователи
Сообщений: 44
Регистрация: 31.8.2005
Пользователь №: 50 179
Модель телефона: e398
Прошивка: R373

Рейтинг: 3.5



господа, кто-нибудь пользует иду 4.51 ?
мож там какие лишние крыжики выставить/убрать надо ?
у меня адрес смещения (т.е. DWORD по адресу 10080000h) в любой прошивке (42-48) получается 11FE0000h :(
CG1 вместе с MemoryMap (одним файлом), вобщем, чего перечислять - всё изложенное в 1-ом посте, проделано.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
bad-rustamka
сообщение 6.3.2006, 11:42


Мастер
****

Группа: Пользователи
Сообщений: 225
Регистрация: 22.3.2005
Из: Самара
Пользователь №: 39 309
Модель телефона: photon
Прошивка: cm10

Рейтинг: 88



Я тут кстати статейку одну нашёл, про дизасм прошивки. Там рассказывается на примере гнусмаса х100, но есть линки на полезные для нас скрипты к ИДЕ. Читать здесь
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Stigmata
сообщение 21.3.2006, 22:23


Новичок
*

Группа: Пользователи
Сообщений: 6
Регистрация: 21.3.2006
Из: Беларусь, Минск
Пользователь №: 75 252
Модель телефона: V635
Прошивка: R474_G_08.48.6FR_Patched

Рейтинг: 0



Для прошивки 6FR V635 пробовал по совету Random'a точку входа 10BE28BC. Завтра напишу что вышло. Я занимаюсь исследование прошивки на мобилфане. Но там нет поддержки и мало толковых людей. Сегодня случайно наткнулся на этот форум и нашел много полезной информации. Кстати, скрипт который писали раньше подойдет для 6FR? С выравниванием в 32 бита, значит адрес начала например 1000, а конца 1004 или 1008?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
bad-rustamka
сообщение 22.3.2006, 13:23


Мастер
****

Группа: Пользователи
Сообщений: 225
Регистрация: 22.3.2005
Из: Самара
Пользователь №: 39 309
Модель телефона: photon
Прошивка: cm10

Рейтинг: 88



Stigmata,
Лучше АРМ функции скриптом не искать, только хуже будет. А вот THUMB можно. Я когда скрипт запускал, об адресах не заботился, просто указал ему в качестве стартового начальный адрес флехи, а в качестве конечного - конечный флехи, и всё!
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Stigmata
сообщение 23.3.2006, 4:15


Новичок
*

Группа: Пользователи
Сообщений: 6
Регистрация: 21.3.2006
Из: Беларусь, Минск
Пользователь №: 75 252
Модель телефона: V635
Прошивка: R474_G_08.48.6FR_Patched

Рейтинг: 0



Я вот еще не много не понял насчет THUMB и ARM функций. Точнее их объявление. Вот смотрите, для примера есть опкод по адресу 10BE28BC (просто для примера), берем последний байт BC в двоичной системе это 1011 1100, значит опкод ARM. И объявляем этот адрес как ARM. Потом следующий опкод по адресу 10BE28BD, последний байт BD, двоичная система - 10111101. Значит Thumb. Но при объявлений Thumb надо перейти на один адрес вверх, то есть на 10BE28BC, а он уже у нас объявлен как ARM. То есть у меня получилось что весь код THUMB. Объясните пожалуйста как делать правильно.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
bad-rustamka
сообщение 23.3.2006, 8:26


Мастер
****

Группа: Пользователи
Сообщений: 225
Регистрация: 22.3.2005
Из: Самара
Пользователь №: 39 309
Модель телефона: photon
Прошивка: cm10

Рейтинг: 88



Заусти приложенный скрипт. В качестве начального адреса указывай 10080000, а в качестве конечного - 12000000, вроде в е398 так было :) Он сам найдёт все ТУМБ функции, а также некоторые АРМ функции ;)
з.ы. Скрипт для ИДЫ
Прикрепленный файл THUMB_Big_Endian.rar   ( 438 байт ) Кол-во скачиваний: 258
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Учимся Патчить Прошивку., Дисассемблируем ARM. · Патчи и всё для них · Forum
 

21 страниц V « < 3 4 5 6 7 > » 
Ответ в темуСоздание новой темы
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 27.4.2024, 8:58

Форум живёт: