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? Но я не нашел и прошу простить тупого учителя за это =)
Этот весь инструмент, которого достаточно для решения наших задач. На следующем уроке подробно изучим процесс дизассемблирования прошивки.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить

Сообщений в этой теме
GALL   Учимся портировать патчи! Уроки! Обсуждаем!   10.7.2007, 15:59
Cot   :thumbsup: Просто класс!   10.7.2007, 16:26
Neomoto   Наконец кто-то все-таки начал рассказывать про тай...   10.7.2007, 17:01
GALL   Урок2. Дизассемблирование. Пожалуй начнем ковыр...   10.7.2007, 17:19
Neomoto   Ну что ж, вот что нашел. Что еще найду, буду сюда ...   10.7.2007, 17:43
Osta   ну... это ?   11.7.2007, 8:38
GALL   Osta, ну эт понятно. а ты покажи скрин с результат...   11.7.2007, 8:57
Osta   ну так ? по щелчку мыши переходит на адрес..   11.7.2007, 9:15
GALL   Osta, Спасибо! :)   11.7.2007, 11:27
GALL   Урок 3. Методы поиска последовательностей. ...   11.7.2007, 15:22
Mixa12   А когда будет продолжение, а то очень интересно. :...   27.8.2007, 15:06
c380гуру   И про написание и архитектуру эльфов напиши.   27.8.2007, 16:29
yakk   И про написание и архитектуру эльфов напиши. А к...   27.8.2007, 17:34
GALL   Mixa12, когда появятся конкретные вопросы по порти...   28.8.2007, 1:28
c380гуру   ткни носом. не увидел в теме про elfloader   28.8.2007, 8:59
yakk   c380гуру Вообще ты вначале не про elfloader спраш...   28.8.2007, 21:19
costello666   GALL раскажи как в ida редактировать строчки.   13.9.2007, 7:51
GALL   costello666, Концепция портирования маленько измен...   14.9.2007, 3:25
Nur87   <br />а вот какое окошко у меня выскакивает,...   6.11.2007, 6:41
AlexKooper   Что тут думать, нажимаете на нижнюю строку (верхня...   5.12.2007, 6:39
phocos   thank you very much for your lessons on patch port...   12.5.2008, 13:13
GALL   phocos, упомянутые тобой адреса,действительно, раз...   14.5.2008, 4:49
Джуманджи   Закрыл "хекс" окно, потом (после недолги...   3.6.2008, 7:24
Osta   Закрыл "хекс" окно, потом (после недолг...   3.6.2008, 7:59
cjValentine   Скиньте пожалуйста скрипт THUMB Big Endian... :lo...   3.6.2008, 19:27
Umka85   Держи   4.6.2008, 18:09
mushrom   На мой взгляд через бинэдит всё гораздо легче...   7.6.2008, 5:22
mushrom   как с помощью иды создавать исходник?   9.6.2008, 5:09
DJ Ibrus   Все. я сдаюсь :( несколько раз перечитал. вроде ...   12.6.2008, 11:02
Umka85   Найди меня 289-577-429 помогу :)   12.6.2008, 20:05
Джуманджи   У V3x начало оперативки 0x03FC0000 и 0x40000 со...   23.7.2008, 15:49
yakk   У V3x начало оперативки 0x03FC0000 и 0x40000 с...   23.7.2008, 19:09
Джуманджи   Скрапт не работает почему-то, прошел Found .... И ...   24.7.2008, 16:08
yakk   Джуманджи если ты имеешь ввиду что скрипт Thumb bi...   24.7.2008, 16:18
Джуманджи   yakk, что-то такого нет. Похоже только Motorola s...   24.7.2008, 16:36
yakk   yakk, что-то такого нет. Похоже только Motorola ...   24.7.2008, 16:53
Джуманджи   yakk, Спасибо! (= Вот решил выложить, потому ...   24.7.2008, 17:11
yakk   Если загружено все на правильные адреса - то скор...   25.7.2008, 1:53
Джуманджи   MIG~, Дизасм Ганжи не могу скачать, на работе зак...   25.7.2008, 12:36
Chik_v   Тут он http://mcore.ks.ua/files/R252211LD_U_85_9B_...   25.7.2008, 13:10
Джуманджи   Metalor, это для начала сделай, потом если будут...   2.10.2008, 14:24
Umka85   Ну во первых у тебя направильно найден адрес на чи...   2.10.2008, 15:24
Джуманджи   у тебя код уже продизассмен, "С" надо н...   3.10.2008, 10:13
Джуманджи   на sub_ХХХХХХХ   3.10.2008, 10:28
Umka85   Как мне сместиться назад Нужно не на BX PC курсор...   3.10.2008, 13:02
Metalor   Umka85, ещё раз) Я перешёл на 373_чистой на оффсет...   3.10.2008, 19:10
Umka85   Ну все прально, видишь первый адрес тот самый, с ...   4.10.2008, 4:09
Metalor   Umka85, ида поискала енту функцию по всей CG1 и ск...   4.10.2008, 11:27
Umka85   эх ты шутник, ищи лучше. Ты какую паттерну копиро...   4.10.2008, 14:51
Metalor   Я искал по sub_10B07F94 - забил её в поиске по тек...   4.10.2008, 15:07
Umka85   Паттерна это строка hex данных и брать её нужно не...   4.10.2008, 15:56
Metalor   Я забил паттерну во вкладке по хэкс "01 A0 00...   4.10.2008, 16:54
lavmen   Metalor, MOVEQ, насколько я помню это арм команды....   4.10.2008, 17:35
Umka85   Вот это мне ваще параллельно. Я тебе говорил нуж...   4.10.2008, 17:45
lavmen   Metalor, байт это не одна циферка а две.   5.10.2008, 2:49
Metalor   lavmen, СПС, но это я уж знаю (не настолько тупой)...   5.10.2008, 10:05
Джуманджи   Metalor, мой совет, попробуй пока через бинедит, ...   5.10.2008, 10:46
GALL   Metalor, слушай, а при чем здесь ида? я приводил о...   5.10.2008, 13:30
Umka85   Не подскажешь в какой именно? Я вот к бинедиту ни...   5.10.2008, 16:43
logotoy73   В бинэдите удобно по маске искать. Там проще всё и...   5.10.2008, 17:34
Джуманджи   http://www.idabook.com/collabreate Источник Думаю...   22.11.2008, 17:10
VEX   Скрапт не работает почему-то, прошел Found .... И...   10.6.2009, 14:50
lavmen   Теже. V3 это LTE, размер и местоположение RAM таки...   10.6.2009, 18:25
Charles Manson   Даже незнаю к кому и обратиться-то. Делаю всё так:...   27.4.2010, 19:56
Fenja   Это нормально. Если тебе нужны имена функций, то...   27.4.2010, 21:00
Джуманджи   Charles Manson, у v3i "ROM start address...   28.4.2010, 1:33
Fenja   : )   28.4.2010, 5:59
Rastаman   Привет всем Гуру!!! Раскажите пожалуст...   26.8.2010, 8:32
Osta   вначале отредактируй в блокноте конфиг.ини под сво...   26.8.2010, 9:57
Rastаman   Подскажи пожалуста как мне это портировать???   27.8.2010, 10:25
DmT   epicfacepalm 1)Тебе нужно определить идентификторы...   27.8.2010, 10:34
Osta   нужно тогда читать основы портирования Путеводител...   27.8.2010, 10:35
Rastаman   Оперативку портировал а это не могу обясни пожалу...   27.8.2010, 11:23
Евгений89   define DRMRES_SELECTED 0x120000CC #define DRMRES_A...   27.8.2010, 11:52
Rastаman   Fenja, LINK IMAGE !!!ERROR FROM LINK...   30.8.2010, 12:49
Fenja   Rastаman, fromelf.exe есть в папке, которая пропи...   30.8.2010, 12:56
Rastаman   Fenja, Теперь у меня пишет LINK IMAGE !...   1.9.2010, 11:35
Fenja   Rastаman, Что написано в log файле? И текст батни...   1.9.2010, 13:45
Rastаman   вот "armlink" ­Ґ пў«пҐвбп ў­гв७­Ґ© Ё...   1.9.2010, 20:50
CarbonZyn   :shok: и ты портируешь мидтрансфер??где хоть слово...   2.9.2010, 3:16
Rastаman   Я портирую тюнс :grin:   2.9.2010, 7:01
Fenja   На русском: То есть armlink.exe не найден в пап...   2.9.2010, 10:43
Rastаman   Fenja, А как его прописать путь к стк   2.9.2010, 12:29
Osta   Rastаman, начните с хелловорд , детский сад пр...   2.9.2010, 12:56
baat   Osta, ты карзину не видел) больше сотни сообшений ...   2.9.2010, 14:50
bill_kevin   Hi someone can help me *-properly analyzed? *-how...   29.5.2011, 2:21
Osta   about the analysis you're probably kidding :c...   31.5.2011, 10:01
bill_kevin   How Load Library or events on Ida where Find IDC??...   5.6.2011, 4:49
bill_kevin   where Find IDC for load Library on IDA??   8.6.2011, 19:37
Fenja   bill_kevin, Write specifically what you want to do...   9.6.2011, 9:47

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

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

 



Текстовая версия Сейчас: 19.4.2024, 23:28

Форум живёт: