motofan logo
> 

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

GALL
сообщение 10.7.2007, 15:59


Гуру
******

Группа: Почётные мотофаны
Сообщений: 706
Регистрация: 25.12.2004
Из: Барнаул
Пользователь №: 29 674
Модель телефона: Iphone 4s
Прошивка: IOS 7.1.1
Победитель конкурса 2008

Рейтинг: 274



Урок 1. Понятия и инструментарий.

Определимся вначале по предмету наших занятий. Мы не будем учиться писать патчи – заплатки на прошивки. Пусть этим занимаются люди, имеющие специальные знания по архитектуре прошивки в целом и способам доступа к требуемым функциям прошивки. В последнее время появляется всё больше и больше новых телефонов и ,соответственно, прошивок для них. Патчеры просто не в состоянии писать одновременно для всех свои разработки. Целью уроков является привлечение максимально широкого круга новичков, желающих перенести полезные функции патчей на свои прошивки. Надеюсь, что эти уроки заинтересуют и бывалых мастеров патчестроения в русле просвещения начинающих. Сам я не отношу себя к патчерам – я всего лишь пытаюсь перенести полезные функции на ту прошивку, которую я выбрал для себя. Я уверен, что многие мои выкладки будут оказаться наивными и вычурными для настоящих патчеров. Я знаю об этом, но с чего-то должно всё начаться. Сами патчеры не спешат делиться с нами, обычными пользователями, жаждущими творчества, своими секретами поиска и исправления функций прошивок. Не знаю почему, будем считать, что в этом виновата нехватка времени у патчеров =). Сам я пришел к первому успешному порту серьезных патчей, наступив предварительно лес граблей.
Поговорим о методах портирования патчей. Само портирование подразумевает перенос в нужные места искомой прошивки измененных определенным образом кодовых последовательностей. На начальном этапе нам даны некие кодовые последовательности и адреса их нахождения в прошивке-источнике. Конечная цель – найти правильным образом адреса переносимого кода, а также адаптировать его к логике работы нашей прошивки-приемника. Способ портирования сильно зависит от функции самого патча. На нашем форуме уже рассматривался один метод портирования кодовых последовательностей – паттерн – с помощью поиска 16-ричных схожих значений в Hex-редакторе (программа для просмотра и редактирования любого файла в виде 16-ричных байтовых последовательностей). Как показала практика¸ портирование методом поиска подходит для портирования очень незатейливых патчей, где изменению подвергаются либо какие-то уникальные константы, либо замена коротких переходов, либо отмена каких-либо действий (расстановка NOP-команд – отсутствие операции). Для портирования более сложных патчей, содержащих различные переходы к подпрограммам, обращения к массивам и т.д., требуется прибегать к ДИЗАССЕМБЛИРОВАНИЮ.
Что же такое дизассемблирование? Это процесс получения некоего кода функций и логики управления нашей прошивки на языке мнемоник АССЕМБЛЕР. Этот язык наиболее приближен к машинному языку центрального процессора. В телефонах Motorola используется, т.н. ARM-архитектура процессора. Очень настоятельно рекомендую новичкам накачать себе литературы по ARM-архитектуре для изучения хотя бы основных команд ARM- и THUMB-процессов, способов адресации и доступа к данным. В процессе изучения портирования, конечно же будем останавливаться на основных командах, которые необходимо знать, чтобы правильно перенести логику патча на другую прошивку.
Каким же образом будем переводить набор байтов в стройный ряд понятных мнемонических команд “асмы”?  А мы будем использовать отличную разработку для дизассемблирования – IDA PRO. Поработав с ней, понимаешь чуть позже, как нетрудно заниматься портированием сложного патча. Вся логика кода максимально разжевана для конечного пользователя. Занятия я буду проводить на примере версии 4.9, хотя уже появилась версия 5.0. Ничего страшного – все основные операции портирования подойдут для любой версии.
Что же ещё потребуется для работы? Составим для себя набор инструментов.
1. Binedit – маленький и простой редактор, компилятор, отладчик и прочая и прочая….=) Но я всё ж таки выбрал ИДУ для дизассемблирования! Я лично не смог адаптироваться к интерфейсу binedit, как не старался. В binedit я использую КАЛЬКУЛЯТОР КОДА
2. Стандартный калькулятор Windows, переведенный в режим операций с шестнадцатиричными числами. Устанавливаем в ВИД “Инженерный” и радиокнопку на Hex. Потребуется для вычислений адресов,значений¸смещений в Hex-формате.
3. WinHex в качестве Hex редактора. Нужен для поисков последовательностей. Показывает количество найденных значений. Может где-то и есть этот функционал в ИДЕ или BinEdit? Но я не нашел и прошу простить тупого учителя за это =)
Этот весь инструмент, которого достаточно для решения наших задач. На следующем уроке подробно изучим процесс дизассемблирования прошивки.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
9 страниц V < 1 2 3 4 5 > »   
Ответ в темуСоздание новой темы
Ответов(20 - 29)
phocos
сообщение 12.5.2008, 13:13


Новичок
*

Группа: Пользователи
Сообщений: 1
Регистрация: 23.4.2008
Пользователь №: 170 304
Модель телефона: V360
Прошивка: R4513_08.B7_B7R

Рейтинг: 0



thank you very much for your lessons on patch porting. But sometimes when I porting a patch, for example, clock on status bar, some of the code is as follow:

STMFD SP!, {R0-R12}
SUB SP, SP, #0x110
LDR R0, =0x1231A580
LDRB R0, [R0]
LDR R1, =0x1231A57B
LDRB R1, [R1]
ORRS R0, R0, R1
BNE loc_105B307C
this address is not in CG1 or any of the other CGs, how does this address come from and how can I change this address when I porting a patch
I am looking forward to your reply!
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
GALL
сообщение 14.5.2008, 4:49


Гуру
******

Группа: Почётные мотофаны
Сообщений: 706
Регистрация: 25.12.2004
Из: Барнаул
Пользователь №: 29 674
Модель телефона: Iphone 4s
Прошивка: IOS 7.1.1
Победитель конкурса 2008

Рейтинг: 274



phocos, упомянутые тобой адреса,действительно, разные в разных прошивках. Надо просто искать соответствия между ними. Во-первых, надо найти места в прошивке-источнике, где проскакивает этот адрес. Если найдено, то эти найденные места надо идентифицировать в прошивке-приемнике и извлечь используемый адрес. Если в искомой прошивке адрес не найден, это хуже. smile.gif Часто помогает поиск по 3-м байтам адреса, а не по полным четырем. Потом остается подкорректировать разность между найденным и используемым в патче.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Джуманджи
сообщение 3.6.2008, 7:24


Гуру
******

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

Рейтинг: 647.5



Закрыл "хекс" окно, потом (после недолгих поисковwink.gif) открыл, но оно стало несогласованным с окном "ИДА" (вроде так оно называется), то есть любой переход в окне раньше "ИДА" дублировался в "хекс" окне, а теперь не дублируется. Как это исправить?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Osta
сообщение 3.6.2008, 7:59


Freestyler
********

Группа: Легенды MotoFan.Ru
Сообщений: 10 329
Регистрация: 20.7.2004
Пользователь №: 8 235
Модель телефона: Moto
Прошивка: *#9999#


Настроение:
Все невыспавшиеся в следующей жизни будут котами



Рейтинг: 4362



Цитата(Джуманджи @ 3.6.2008, 9:24) *

Закрыл "хекс" окно, потом (после недолгих поисковwink.gif) открыл, но оно стало несогласованным с окном "ИДА" (вроде так оно называется), то есть любой переход в окне раньше "ИДА" дублировался в "хекс" окне, а теперь не дублируется. Как это исправить?

проще "сфотографировать" ответ Прикрепленное изображение
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
cjValentine
сообщение 3.6.2008, 19:27


Опытный
***

Группа: Пользователи
Сообщений: 116
Регистрация: 15.3.2008
Из: Мариуполь-city
Пользователь №: 166 630
Модель телефона: Z6
Прошивка: та, шо была...

Рейтинг: 6.5



Скиньте пожалуйста скрипт THUMB Big Endian... laugh.gif а то ссылка уже не работает...
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Umka85
сообщение 4.6.2008, 18:09


Гуру
******

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

Рейтинг: 283



Держи

Сообщение отредактировал Umka85 - 4.6.2008, 21:20
Прикрепленный файл THUMB_Big_Endian.rar   ( 431 байт ) Кол-во скачиваний: 267
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
mushrom
сообщение 7.6.2008, 5:22


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

Группа: Пользователи
Сообщений: 75
Регистрация: 28.1.2008
Пользователь №: 161 576
Модель телефона: Motorola c650

Рейтинг: 0



На мой взгляд через бинэдит всё гораздо легче...
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
mushrom
сообщение 9.6.2008, 5:09


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

Группа: Пользователи
Сообщений: 75
Регистрация: 28.1.2008
Пользователь №: 161 576
Модель телефона: Motorola c650

Рейтинг: 0



как с помощью иды создавать исходник?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
DJ Ibrus
сообщение 12.6.2008, 11:02


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

Группа: Пользователи
Сообщений: 66
Регистрация: 7.1.2008
Пользователь №: 159 206
Модель телефона: Motorola L9 BLKSlate
Прошивка: 05R+

Рейтинг: 9.5



Все. я сдаюсь sad.gif несколько раз перечитал. вроде понял. начал дизассемблировать прошивку от своего телефона... прошло около 5 часов пока скрипт сделал свое дело. и это только одна прошивка. потом ради интереса взял наугад патч и решил перейти по адресу патча в иде. а она не хочет. пробовал к адресу прибавлять 10092000(начало CG1) все равно ничего. может кто нибудь меня в ICQ/Jabber проконсультировать по портированию? чувствую своими силами я в этом деле не далеко уползу... sad.gif
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Umka85
сообщение 12.6.2008, 20:05


Гуру
******

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

Рейтинг: 283



Найди меня 289-577-429 помогу smile.gif
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Учимся портировать патчи! Уроки! Обсуждаем!, На основе IDA PRO · Патчи и всё для них · Forum
 

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

 



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

Форум живёт: