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

Учимся портировать патчи! Уроки! Обсуждаем!, На основе IDA PRO

Джуманджи
сообщение 2.10.2008, 14:24


Гуру
******

Группа: Почётные мотофаны
Сообщений: 856
Регистрация: 8.11.2006
Из: детства
Пользователь №: 106 183
Модель телефона: нокиа

Рейтинг: 647.5



Metalor,
Цитата(GALL @ 10.7.2007, 21:19)

Урок2. Дизассемблирование.

Пожалуй начнем ковырять прошивку. Используем полезную информацию из раздела ”Учимся Дизассемблировать прошивку”.
Первым делом нам надо получить кодовую группу CG1 из самого файла прошивки. Для разложения файла прошивки по кодовым группам используем замечательную программу Flash@Backup 3. Устанавливаем в Активном профиле свою модель телефона, заходим в раздел ”Обработка прошивок” и Выбираем файл. После обработки файла в таблице слева появится расшифровка кодовых групп по начальным и конечным адресам. Запоминаем диапазон адресов для CG1 в Hex-формате Далее сохраняем с расширением SMG. По умолчанию кодовые группы сохранятся в папку программы \Random's Developments\Flash&Backup 3\Backups. Из нашего последнего Backups извлекаем CG1. С ним и будем работать!
Итак, запускаем IDA pro и открываем сам файл *.smg: File-Open….-тип файлов: All files (*.*) – выбираем наш ****.smg. После этого появляется окошко, в котором надо указать тип процессора – Processor type. Наш выбор – ARM processors: ARMB – почти в самом верху списка. Жмём ОК и мподтверждаем изменение типа процессора. Следующее окно – ”Disassembly memory organization”. Здесь-то нам и пригодятся значения диапазона адресов CG1. Заполняем значения:
RAM:
[V] Create RAM Section
RAM Start Adress – 0x03FC0000
RAM Size - 0x40000

ROM:
[V] Create ROM section
ROM start address – начальный адрес CG1
ROM size – ИДА вычисляет сама

Input file
Loading address – начальный адрес CG1

Остальные позиции оставляем в покое и жмем ОК… Идет процесс загрузки файла в базу..Далее нас IDA предупреждает о наличии двух форматов кода: ARM и THUMB и сама предлагает нам способ определения места нахождения кода. Но мы-то не её советами будем пользоваться! ….Жмем 2 раза ОК и ожидаем загрузки списка строк всей прошивки. Что видем перед собой? А мы видем пока ещё нераспознанный закомпилированный код прошивки в виде зеленой полосы на экране. Пора запускать скрипт распознавания ARM и THUMB команд, т.е. собственно сам процесс дизассемблирования. Воспользуемся файлом скрипта THUMB Big Endian.idc из нижнего закрепления. Заходим в меню: File-IDC file и выбираем наш скриптик. Скрипт попросит ввести начальный адрес CG1. вводим в формате: ROM: нач. адрес CG1. Потом конечный адрес CG1: ROM: кон. Адрес CG1. После этого можно заниматься другими делами и не подходить к компьютеру: процесс дизассемблирования длительный, в несколько проходов – вначале идет распознавание кода (бордовые полоски), потом идет инициализация процедур (синие полоски). Потом ещё проход. Окончание процесса полного дизассемблирования можно заметить по слову ”idle” в нижнем левом углу вместо мельтешащих значений адресов. После окончания процесса дизассемблирования сохраняем нашу базу дизасма. Урок второй закончен – мы должны научиться получать на выходе рабочую базу дизассемблированной прошивки. На следующем уроке будем готовить инструментарий к работе по портированию патчей и искать смещения для патч-кодов!
*


это для начала сделай, потом если будут вопросы -спрашивай smile.gif у тебя прошивка не продизассемблирована

Сообщение отредактировал Джуманджи - 2.10.2008, 14:26
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Umka85
сообщение 2.10.2008, 15:24


Гуру
******

Группа: Пользователи
Сообщений: 712
Регистрация: 13.7.2005
Из: Кузнецк
Пользователь №: 46 099
Модель телефона: Е398, L9, Z6, V6
Прошивка: разные
Победитель конкурса 2008

Рейтинг: 283



Ну во первых у тебя направильно найден адрес на чистой 372.
Сначала найди его правильно. для этого тебе нужно в 373 на этом адресе нажать кнопку "С", hex превратиться в код, ты увидишь на какой адрес ссылается команда BL F741FE61
Далее тыкнуть два раза на этом адресе, скопировать какую нить неизменяющуюся паттерну найти эту же функцию в 372 проше, вернуться на адрес, ссылающийся на него, клавишей "Х" это и будет "1 адрес", который пойдет в твой патч вместо 0031A87A (только из абсолютного адреса нужно будет вернуться на обычный те вычесть "абс. адрес-10080000" через инженерный калькулятор.
Это ты найдешь тока адрес, далее команда BL F741FE61 это ссылка на какой то адрес прошивки, вот его то искать закалебешься. (самый простой способ через исходник в бинедите) Но если не умеешь...
Для начала нужно пропатчить 373 прошу прямо через иду. Но для этого нужно включить в idagui.cfg "c:\Program Files\IDA\cfg\idagui.cfg" строку DISPLAY_PATCH_SUBMENU вместо NO поставить YES (перезагрузить иду) После этого у тебя появиться меню EDIT > Patch program > Change byte
ставишь курсор на адрес 0031A87A выбираешь меню EDIT > Patch program > Change byte вводишь F7FFFDA9, смотришь на какой адрес перешла проша 373 Переходишь не него, ищешь этот "2 адрес" в проше 372. Теперьче открываешь калькулятор кода в бинедите в адресе вводишь "1 адрес" в мнемонике строку BL 0x2 адрес тебе в коде калькулятор выдаст че то типа F7FFFDD9
Патчишь в иде 372 прошу и проверяешь, на тот ли адрес переход стоит, если да, то ты нашел первую стоку патча.
-------------------------------------------
Теперь посмотри скока ты времени потратил для этого. И запомни через исходник в бинедите будет в несколько раз быстрее. smile.gif
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Джуманджи
сообщение 3.10.2008, 10:13


Гуру
******

Группа: Почётные мотофаны
Сообщений: 856
Регистрация: 8.11.2006
Из: детства
Пользователь №: 106 183
Модель телефона: нокиа

Рейтинг: 647.5



Цитата(Umka85 @ Вчера, 19:24)

для этого тебе нужно в 373 на этом адресе нажать кнопку "С", hex превратиться в код,
*


у тебя код уже продизассмен, "С" надо нажимать, если идет просто "столбик" чисел
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Джуманджи
сообщение 3.10.2008, 10:28


Гуру
******

Группа: Почётные мотофаны
Сообщений: 856
Регистрация: 8.11.2006
Из: детства
Пользователь №: 106 183
Модель телефона: нокиа

Рейтинг: 647.5



на sub_ХХХХХХХ
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Umka85
сообщение 3.10.2008, 13:02


Гуру
******

Группа: Пользователи
Сообщений: 712
Регистрация: 13.7.2005
Из: Кузнецк
Пользователь №: 46 099
Модель телефона: Е398, L9, Z6, V6
Прошивка: разные
Победитель конкурса 2008

Рейтинг: 283



Как мне сместиться назад
Нужно не на BX PC курсор ставить, а на рядом (слева) функцию sub_1054B40C и нажимать "х"
И ты неправильно нашел функцию, эти функции нельзя искать, это ссылки на функции. Нужно по этой ссылке пройти на настоящую функцию (ссылка это то что ниже BX PC вида DCD sub_XXXXXXXX+1) вот идешь на адрес sub_XXXXXXXX находишь в 372 проше функцию такую же, и делаешь двойной возврат (ссылок на функцию будет много, по адресу ищи примерно на том же месте)
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Metalor
сообщение 3.10.2008, 19:10


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

Группа: Пользователи
Сообщений: 309
Регистрация: 23.10.2007
Из: Минск <BEL>
Пользователь №: 151 548
Модель телефона: E398, E770, V3i, E8


Настроение:
Эх мотофан. Я очень скучаю по тем временам. =(



Рейтинг: 114.5



Umka85, ещё раз)
Я перешёл на 373_чистой на оффсет 31A87A - там адрес - BL sub_102DC540
Я перешёл на этот адрес - 102DC540. На том адресе было:
sub_102DC540 ; CODE XREF: ROM:102D6E2Ep
ROM:102DC540 ; ROM:102D8EF2p ...
ROM:102DC540 BX PC
ROM:102DC540 ; ---------------------------------------------------------------------------
ROM:102DC542 DCB 0x46 ; F
ROM:102DC543 DCB 0xC0 ; L
ROM:102DC544 ; ---------------------------------------------------------------------------
ROM:102DC544 CODE32
ROM:102DC544
ROM:102DC544 loc_102DC544 ; CODE XREF: sub_102DC540j
ROM:102DC544 B sub_10B07F94
ROM:102DC544 ; End of function sub_102DC540

Следует, что мне нужно перейти на 10B07F94 -
перехожу - выдаёт:
sub_10B07F94 ; CODE XREF: sub_102DC540:loc_102DC544j
ROM:10B07F94 ; sub_10A91854:loc_10A91858j
ROM:10B07F94 CMP R0, #0x7D
ROM:10B07F98 CMPNE R0, #7
ROM:10B07F9C MOV R3, #0
ROM:10B07FA0 MOVEQ R0, R3
ROM:10B07FA4 BXEQ LR
ROM:10B07FA8 STMFD SP!, {R3,LR}
ROM:10B07FAC MOV R3, R2
ROM:10B07FB0 LDR R12, =0x1276B094
ROM:10B07FB4 MOV R2, R1
ROM:10B07FB8 MOV R1, R0
ROM:10B07FBC MOV LR, #1
ROM:10B07FC0 STRB LR, [R12,#0xBD]
ROM:10B07FC4 MOV R0, R12
ROM:10B07FC8 BL sub_10AEA6E4
ROM:10B07FCC LDMFD SP!, {R3,LR}
ROM:10B07FD0 BX LR
ROM:10B07FD0 ; End of function sub_10B07F94

Выделяю sub_10B07F94 (самую верхнюю) - выдаёт - (на скрине)
Что далее?
И объясните пожалуйсто, что адреса, что функции, что комманды, что ссылки на что-либо...
А то я запутался.... unsure.gif
(Извените, что так много вопросов задаю, просто хочется всё понять и добить уже))

Прикрепленное изображение Прикрепленное изображение
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Umka85
сообщение 4.10.2008, 4:09


Гуру
******

Группа: Пользователи
Сообщений: 712
Регистрация: 13.7.2005
Из: Кузнецк
Пользователь №: 46 099
Модель телефона: Е398, L9, Z6, V6
Прошивка: разные
Победитель конкурса 2008

Рейтинг: 283



Цитата
Выделяю sub_10B07F94 (самую верхнюю) - выдаёт - (на скрине)

Ну все прально, видишь первый адрес тот самый, с которого ты сюда перешел. Можешь тыкнуть на него и вернешься обратно. Но это нам не надо. Ты дожен найти функцию sub_10B07F94 на проше 372
Вот как найдешь сделаешь тоже самое. ида должна будет тебе вывести тоже 2 адреса и первый из них тебе и нужен будет. Далее нажимаешь "Х" на функции sub_102DC540 только в проше 372 и ищешь нужный тебе адрес
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Metalor
сообщение 4.10.2008, 11:27


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

Группа: Пользователи
Сообщений: 309
Регистрация: 23.10.2007
Из: Минск <BEL>
Пользователь №: 151 548
Модель телефона: E398, E770, V3i, E8


Настроение:
Эх мотофан. Я очень скучаю по тем временам. =(



Рейтинг: 114.5



Umka85, ида поискала енту функцию по всей CG1 и сказало, что патерн не найден(
Pattern is not found
И что, это значит, что патч нельзя портировать?? sad.gif
Или есть ещё какие либо способы по портировке???
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Umka85
сообщение 4.10.2008, 14:51


Гуру
******

Группа: Пользователи
Сообщений: 712
Регистрация: 13.7.2005
Из: Кузнецк
Пользователь №: 46 099
Модель телефона: Е398, L9, Z6, V6
Прошивка: разные
Победитель конкурса 2008

Рейтинг: 283



Цитата
Umka85, ида поискала енту функцию по всей CG1 и сказало, что патерн не найден(

эх ты шутник, ищи лучше. Ты какую паттерну копировал? Нужно искать но тем паттернам, которые не меняються в различных прошах. А лучше всего по строкам отладки, которые поблизости и по ссылкам. Пробуй различные паттерны, я иногда раз по 20 ищу одну функцию. Пробуй и все получиться.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Metalor
сообщение 4.10.2008, 15:07


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

Группа: Пользователи
Сообщений: 309
Регистрация: 23.10.2007
Из: Минск <BEL>
Пользователь №: 151 548
Модель телефона: E398, E770, V3i, E8


Настроение:
Эх мотофан. Я очень скучаю по тем временам. =(



Рейтинг: 114.5



Я искал по sub_10B07F94 - забил её в поиске по тексту.
Цитата("Umka85")
Нужно искать но тем паттернам, которые не меняються в различных прошах. А лучше всего по строкам отладки, которые поблизости и по ссылкам.

Вот еси бы я знал, что это ваще)
Я не знаю патерны, одинаковые в прошах, и не знаю где расположены и как выглядят строки отладки) привиди пример пожалуйсто, может я пойму) (или на скрине покажи)

Сообщение отредактировал Metalor - 4.10.2008, 15:08
Прикрепленное изображение
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Учимся портировать патчи! Уроки! Обсуждаем!, На основе IDA PRO · Патчи и всё для них · Forum
 

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

 



Текстовая версия Сейчас: 28.4.2024, 19:59

Форум живёт: