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? Но я не нашел и прошу простить тупого учителя за это =)
Этот весь инструмент, которого достаточно для решения наших задач. На следующем уроке подробно изучим процесс дизассемблирования прошивки.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
3 страниц V  1 2 3 >  
Ответ в темуСоздание новой темы
Ответов(1 - 39)
Cot
сообщение 10.7.2007, 16:26


Опытный
***

Группа: Пользователи
Сообщений: 118
Регистрация: 16.12.2006
Из: Украина , Запорожье
Пользователь №: 111 602
Модель телефона: RAZR V3x
Прошивка: E5P Ultimate

Рейтинг: 30



thumbsup.gif Просто класс!
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Neomoto
сообщение 10.7.2007, 17:01


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

Группа: Разработчики
Сообщений: 615
Регистрация: 2.3.2006
Из: Белгород
Пользователь №: 72 604
Модель телефона: MotoZINE ZN5
Прошивка: sym X beta

Рейтинг: 481



Наконец кто-то все-таки начал рассказывать про тайную науку портирования патчей!
Все ставим плюсы щедрою рукой smile.gif.
GALL, и неплохо бы снабжать ссылками на все упоминаемые проги и т.п., найти пару ссылок на литературу по ARM, ассемберу и руководство по IDA (если оно существует, я не знаю).

Сообщение отредактировал Neomoto - 10.7.2007, 17:11
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
GALL
сообщение 10.7.2007, 17:19


Гуру
******

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

Рейтинг: 274



Урок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” в нижнем левом углу вместо мельтешащих значений адресов. После окончания процесса дизассемблирования сохраняем нашу базу дизасма. Урок второй закончен – мы должны научиться получать на выходе рабочую базу дизассемблированной прошивки. На следующем уроке будем готовить инструментарий к работе по портированию патчей и искать смещения для патч-кодов!

Добавлено позже (10.7.2007, 17:23):
Neomoto, Вот домашним заданием и будет поиск рабочих ссылок на необходимый инструментарий и полезную литературу! smile.gif
Прикрепленный файл THUMB_Big_Endian.rar   ( 438 байт ) Кол-во скачиваний: 751
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Neomoto
сообщение 10.7.2007, 17:43


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

Группа: Разработчики
Сообщений: 615
Регистрация: 2.3.2006
Из: Белгород
Пользователь №: 72 604
Модель телефона: MotoZINE ZN5
Прошивка: sym X beta

Рейтинг: 481



Ну что ж, вот что нашел. Что еще найду, буду сюда дописывать.
Это про не ассемблер для АРМ, а для х86, но написано очень понятно и поможет в учебе.
онлайн версия
Assembler.chm - скачать в формате .chm - 140 Kb
еще один учебник по обычному ассеблеру - весит ок. 9 метров.
IDA Pro - IDA Pro 5.0.0.879 Advanced Full with SDK, Flair and WinCE Debugger (54479 Кб)
ida_pro_4.9.0.863_full.rar
BinEdit
WinHex 12.0 SR9 (624 Кб)
Programnaya_sreda_ARM.zip ( 68.04кб ) - FAQ "Программная среда ARM" - это статья, рассказывающая и о командах процессора и о чтении прошивок через IDA.
http://sobakator.samsfan.ru/ - вот тут еще есть про ARM, в частости русская дока по ARM7, и про BinEdit там тоже есть.
Дизассемблирование и анализ кода ARM процессоров
Докладываю: домашнее задание выполнено!

Сообщение отредактировал Neomoto - 10.7.2007, 18:53
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Osta
сообщение 11.7.2007, 8:38


Freestyler
********

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


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



Рейтинг: 4362



Цитата(GALL @ Вчера, 17:59)

Нужен для поисков последовательностей. Показывает количество найденных значений. Может где-то и есть этот функционал в ИДЕ
*


ну... это ?
Прикрепленное изображение
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
GALL
сообщение 11.7.2007, 8:57


Гуру
******

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

Рейтинг: 274



Osta, ну эт понятно. а ты покажи скрин с результатами поисков. Мне нужен такой результат: количество найденных соответствий и адреса на них.

Сообщение отредактировал GALL - 11.7.2007, 8:59
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Osta
сообщение 11.7.2007, 9:15


Freestyler
********

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


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



Рейтинг: 4362



Цитата(GALL @ Сегодня, 10:57)

Мне нужен такой результат: количество найденных соответствий и адреса на них.
*


ну так ? по щелчку мыши переходит на адрес..

Сообщение отредактировал Osta - 11.7.2007, 9:16
Прикрепленное изображение
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
GALL
сообщение 11.7.2007, 11:27


Гуру
******

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

Рейтинг: 274



Osta, Спасибо! smile.gif
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
GALL
сообщение 11.7.2007, 15:22


Гуру
******

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

Рейтинг: 274



Урок 3. Методы поиска последовательностей.

Портирование патчей подразумевает два основных процесса: а) поиск точек входа команд портируемого патча в прошивке-приемнике; б)конвертирование кодовых строк из логического контекста прошивки-источника в контекст прошивки-приемника. Обе операции в той или иной степени будут требовать определенных знаний в ассемблере ARM. В целях соблюдения рамок обучения будем стараться свести эти знания к минимуму.
И первым делом нам нужно подготовить своё рабочее место. Используя информацию урока 2, готовим дизасмы трёх баз:
1. База пропатченной прошивки-источника. Получите CG1 прошивки-источника с максимальным количеством совместимых друг с другом патчей. Вы, наверно, сами уже поняли, что процесс дизассемблирования несколько затянут по времени smile.gif.
2. База оригинальной прошивки-источника.
3. База нашей прошивки-приемника.
Эти три базы у нас всегда будут висеть во время портирования. Соответственно¸ и требования к оснастке компьютера довольно серьезные.
Для поиска последовательностей нам потребуются базы IDA Pro и открытый файл патча .fpa, который можно открыть тем же блокнотом. Итак, открываем файл .fpa и что мы видем? Под шапкой Patch_info идут строки такого формата: hex-адрес смещения: компилированный hex-код патча. Будем работать построчно, обрабатывая каждую строчку и фиксируя каждый раз выполненную стадию работы.
Прежде всего перейдем на участок пропатченного кода прошивки-источника в соответствующей базе IDA. Копируем смещение в опцию IDA: Jump-Jump to file offset и делаем прыжок в патченную область. Эту же операцию надо провести и в базе непатченной прошивки-источника. Находясь в патченной области, определите и зафиксируйте для себя точно место начала и окончания патч-кода. Здесь уже надо реально включать думалку и попытаться определить логику фрагмента патча. Попытаюсь обозначить самые общие алгоритмы патчей, а также способы нахождения их кодовых последовательностей в прошивке-приемнике:
1. Разрешительный. Это самый очевидный патч: снять какое-либо ограничение на выполнение каких-либо действий. По умолчанию в типовой прошивке в этом месте кода ставится проверка какого-либо условия и переход на подпрограммы обработки события. Патч вместо переходов по условию (команды сравнения CMP и соответствующие им команды переходов по результату сравнения BEQ, BNE,BLT и т.д) делает безусловные переходы на нужные участки кода (B 0xАдресПерехода), либо вообще отменяет какие-либо проверки пустой командой NOP. Обычно в файле fpa они представлены короткими закомпилированными строками команд безусловного перехода или пустой командой NOP: Exxx,46C0. Пока я для упрощения примеров имею в виду THUMB-команды, в основном 2-хбайтные и реже 4xбайтные. Попытаемся понять метод поиска. Начнем с простого случая, а если он не помогает, будем использовать более сложный. Итак, сейчас будем искать офсеты по НЕпатченной прошивке-источнику. Встаем в ней на наш текущий офсет. Рассмотрим различные методы поиска:
а) Оглянемся вокруг нашего места хранения патч-кода. Эта область входит в состав какой-либо процедуры, которая неизбежно обращается к данным и оставляет после себя логи работы. Если повезет, то где-то рядом с нашим кодом обнаружим строки такого вида: LDR R1, =aExitMsg_com_34 или ADR R1, aDbg_vidOta_c_0. Это хорошо для нас: мы нашли команды обращений к строковым комбинациям. Два раза щелкаем по переменной и уходим к месту расположения самой строки: aDbg_vidOta_c_1 DCB "DBG_VID- OTA_CONTENT_ACTION_SAVE_WITHOUT_PREVIEW",0. . Если там стоит имя переменной, а потом DCD, то это всего лишь адрес на место хранения строкового значения. Надо ещё раз два раза щелкнуть по переменной и прыгнуть к этому значению. Копируем всё что в кавычках находится и идем в базу прошивки-приемника
Открываем окно “Strings”, далее в меню Search…-Search вставляем строку и запускаем поиск. Если строка найдена, то можно сказать, что мы почти нашли то, что искали. Два раза щелкаем найденную строка и перескакиваем к месту раположения строки вида DCB. Далее всё делаем в обратном порядке и в конце концов допрыгиваем до команд LDR или ADR. Осталось делом техники найти предполагаемое место для патчения. Строго синхронизируйте свои действия при работе с двумя базами, чтобы не спеша подобраться к нужному месту. По пути поиска обращайте внимание на похожесть команд и переходов (пути переходов отмечаются треками стрелочек).
Если по поиску строки ничего не найдено – значит в прошивке-приемнике эта строка по другому называется или находится маленько в другом месте. Тогда попытайтесь найти ещё одну из команд обращения к строковым значениям LDR или ADR.
б) Не нашли мы в близлежащем окружении таких команд….Что делать? Тогда займемся поиском близко расположенных кодовых последовательностей, которые по идее должны быть одинаковыми как в источнике, так и в приемнике. С одной стороны размер кодовой hex-последовательности должен быть максимально большим, однако при этом следует учитывать то, что в состав последовательности не должны входить команды, зависящие от адресов обращения. Это такие команды как BL, LDR, ADR, длинные переходы B. Если в вашу последовательность попадет одна из этих команда, ты вы вряд ли найдете строку кода в прошивке-приемнике. Если правильно выбрана последовательность, на ваш взгляд, заходите в окно Hex View и копируйте оттуда hex-строку. Переходим в базу прошивки-приемника. Скопированную строку вставляем в окошко Search…- sequence of bites и смотрим на результаты поиска. Если найдена одна строка – наш поиск увенчался успехом. Двойным щелчком переходим в экран с кодом и подбираемся к предполагаемому месту патч-кода, сверяясь с базой прошивки-источника.

Продолжение следует…

Сообщение отредактировал GALL - 11.7.2007, 16:45
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Mixa12
сообщение 27.8.2007, 15:06


Новичок
*

Группа: Пользователи
Сообщений: 5
Регистрация: 16.4.2006
Пользователь №: 79 041
Модель телефона: Motorolla E398

Рейтинг: 0



А когда будет продолжение, а то очень интересно. shuffle.gif
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
c380гуру
сообщение 27.8.2007, 16:29


Мастер
****

Группа: Пользователи
Сообщений: 271
Регистрация: 14.9.2005
Из: Пенза
Пользователь №: 51 473
Модель телефона: iPhone 5s + 4s
Прошивка: не обновлял

Рейтинг: 212



И про написание и архитектуру эльфов напиши.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
yakk
сообщение 27.8.2007, 17:34



*****

Группа: Разработчики
Сообщений: 336
Регистрация: 6.7.2006
Из: Днепропетровск
Пользователь №: 90 408
Модель телефона: milestone
Финалист Конкурса 2010


Настроение:
не нужен..



Рейтинг: 904



Цитата(c380гуру @ 27.8.2007, 19:29) *

И про написание и архитектуру эльфов напиши.

А к чему тут эльфы?? shades.gif К тому же всё что нужно про структуру эльфов есть в соответствующей теме давным-давно.. wink.gif
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
GALL
сообщение 28.8.2007, 1:28


Гуру
******

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

Рейтинг: 274



Mixa12, когда появятся конкретные вопросы по портированию у заинтересованных - тогда и будет продолжение. А то я так понимаю, что всем всё понятно.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
c380гуру
сообщение 28.8.2007, 8:59


Мастер
****

Группа: Пользователи
Сообщений: 271
Регистрация: 14.9.2005
Из: Пенза
Пользователь №: 51 473
Модель телефона: iPhone 5s + 4s
Прошивка: не обновлял

Рейтинг: 212



Цитата(yakk @ Вчера, 13:34)

К тому же всё что нужно про структуру эльфов есть в соответствующей теме давным-давно..
*


ткни носом. не увидел в теме про elfloader
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
yakk
сообщение 28.8.2007, 21:19



*****

Группа: Разработчики
Сообщений: 336
Регистрация: 6.7.2006
Из: Днепропетровск
Пользователь №: 90 408
Модель телефона: milestone
Финалист Конкурса 2010


Настроение:
не нужен..



Рейтинг: 904



c380гуру
Вообще ты вначале не про elfloader спрашивал а про архитектуру - тут Elf на (M)otorola в конце 2 страницы есть пост Vilko с ссылкой на описание структуры эльфов.. И еще в этой теме есть несколько полезных ссылок в закрепленном посте.. Только к портированию патчей твой вопрос всё равно отношения не имеет..

Сообщение отредактировал yakk - 28.8.2007, 21:27
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
costello666
сообщение 13.9.2007, 7:51


Опытный
***

Группа: Пользователи
Сообщений: 123
Регистрация: 25.8.2007
Пользователь №: 145 574
Модель телефона: E398, E8

Рейтинг: 125



GALL раскажи как в ida редактировать строчки.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
GALL
сообщение 14.9.2007, 3:25


Гуру
******

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

Рейтинг: 274



costello666, Концепция портирования маленько изменилась. В качестве компилятора используем binedit. В него можно скопировать текст на asm и редактировать в обычном режиме. Для поиска последовательностей я пока использую IDA.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Nur87
сообщение 6.11.2007, 6:41


Мастер
****

Группа: Пользователи
Сообщений: 298
Регистрация: 17.10.2005
Из: Татарстан
Пользователь №: 54 836
Модель телефона: E398

Рейтинг: 100



Цитата
Заходим в меню: File-IDC file и выбираем наш скриптик. Скрипт попросит ввести начальный адрес CG1. вводим в формате: ROM: нач. адрес CG1. Потом конечный адрес CG1: ROM: кон. Адрес CG1. После этого можно заниматься другими делами и не подходить к компьютеру: процесс дизассемблирования длительный, в несколько проходов – вначале идет распознавание кода (бордовые полоски), потом идет инициализация процедур (синие полоски). Потом ещё проход. Окончание процесса полного дизассемблирования можно заметить по слову “idle” в нижнем левом углу вместо мельтешащих значений адресов.
<br />а вот какое окошко у меня выскакивает, и далее ничего не проходит.<br />
Прикрепленное изображение
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
AlexKooper
сообщение 5.12.2007, 6:39


Авторитет
********

Группа: Почётные мотофаны
Сообщений: 2 838
Регистрация: 27.7.2005
Из: Йошкар-Ола
Пользователь №: 47 140
Модель телефона: E398
Прошивка: AlexKooper mod v.47

Рейтинг: 1337



Что тут думать, нажимаете на нижнюю строку (верхняя редактировать скрипт, нижняя запустить), и пошел процесс
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
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 байт ) Кол-во скачиваний: 280
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
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
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Джуманджи
сообщение 23.7.2008, 15:49


Гуру
******

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

Рейтинг: 647.5



У V3x начало оперативки
0x03FC0000 и
0x40000
соответсвенно ил другие?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
yakk
сообщение 23.7.2008, 19:09



*****

Группа: Разработчики
Сообщений: 336
Регистрация: 6.7.2006
Из: Днепропетровск
Пользователь №: 90 408
Модель телефона: milestone
Финалист Конкурса 2010


Настроение:
не нужен..



Рейтинг: 904



Цитата(Джуманджи @ 23.7.2008, 18:49) *

У V3x начало оперативки
0x03FC0000 и
0x40000
соответсвенно ил другие?

на v3x и прочих телах на POG оперативка начинается от 0x08000000.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Джуманджи
сообщение 24.7.2008, 16:08


Гуру
******

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

Рейтинг: 647.5



Скрапт не работает почему-то, прошел
Found ....
И сразу Done sad.gif
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
yakk
сообщение 24.7.2008, 16:18



*****

Группа: Разработчики
Сообщений: 336
Регистрация: 6.7.2006
Из: Днепропетровск
Пользователь №: 90 408
Модель телефона: milestone
Финалист Конкурса 2010


Настроение:
не нужен..



Рейтинг: 904



Джуманджи
если ты имеешь ввиду что скрипт Thumb big endian не пошел на прошивке от v3x - так он и не должен идти. На v3x процессор не ARM. а MCore..

Сообщение отредактировал yakk - 24.7.2008, 16:18
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Джуманджи
сообщение 24.7.2008, 16:36


Гуру
******

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

Рейтинг: 647.5



yakk,
что-то такого нет. Похоже только Motorola series: ColdFire ph34r.gif . Ида пятая
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
yakk
сообщение 24.7.2008, 16:53



*****

Группа: Разработчики
Сообщений: 336
Регистрация: 6.7.2006
Из: Днепропетровск
Пользователь №: 90 408
Модель телефона: milestone
Финалист Конкурса 2010


Настроение:
не нужен..



Рейтинг: 904



Цитата(Джуманджи @ 24.7.2008, 19:36) *

yakk,
что-то такого нет. Похоже только Motorola series: ColdFire ph34r.gif . Ида пятая

В стандартной поставке IDA Pro нету такого процессорного модуля - Motorola M-Core.. Поищи на форуме, я где-то его выкладывал.. И в той же теме вроде выкладывал и документацию на процессор..
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Джуманджи
сообщение 24.7.2008, 17:11


Гуру
******

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

Рейтинг: 647.5



yakk,
Спасибо! (= Вот решил выложить, потому что искать придется долго.
Добавил сырцы, закачать не могу - диалап sad.gif
Сырцы к 4.8
Сырцы к 5.0

Добавлено позже (24.7.2008, 23:26):
дизасмит совсем чуть. В чем может быть проблема?

Сообщение отредактировал Джуманджи - 24.7.2008, 19:27
Прикрепленный файл mcore_for_ida4.8.zip   ( 36.39 килобайт ) Кол-во скачиваний: 116
Прикрепленный файл mcore_for_ida5.0.zip   ( 37.21 килобайт ) Кол-во скачиваний: 147
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
yakk
сообщение 25.7.2008, 1:53



*****

Группа: Разработчики
Сообщений: 336
Регистрация: 6.7.2006
Из: Днепропетровск
Пользователь №: 90 408
Модель телефона: milestone
Финалист Конкурса 2010


Настроение:
не нужен..



Рейтинг: 904



Цитата
дизасмит совсем чуть. В чем может быть проблема?

Если загружено все на правильные адреса - то скорее всего никакой проблемы.. Надо просто набраться терпения и дизасмить вручную, указывая иде на какаих адресах находится код.
Насколько я знаю никаких скриптов для автоматизации этого процесса на mcore никто не писал.. Вообще можно посмотреть еще тему про эльфлоадер на v3x, оттуда можно взять адреса найденных функций с названиями.. а дальше - все равно вручную все делать.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Джуманджи
сообщение 25.7.2008, 12:36


Гуру
******

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

Рейтинг: 647.5



MIG~,
Дизасм Ганжи не могу скачать, на работе закрыты все файловые обменники, а дома диалап. На сайте Chik_v не нашел
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Chik_v
сообщение 25.7.2008, 13:10


Опытный
***

Группа: Разработчики
Сообщений: 107
Регистрация: 13.1.2007
Из: Херсон
Пользователь №: 116 653
Модель телефона: Samsung i5700
Прошивка: i570EXXJH7
Победитель конкурса 2008

Рейтинг: 174.5



Тут он http://mcore.ks.ua/files/R252211LD_U_85_9B_E6P.rar
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Учимся портировать патчи! Уроки! Обсуждаем!, На основе IDA PRO · Патчи и всё для них · Forum
 

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

 



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

Форум живёт: