• Это комментарии. Каждому комментарию в патче должна предшествовать точка с запятой. Вы можете написать комментарии в любой части патча.
• Врезки и модификации кода прошивки. Изменения сделанные в коде прошивки, которые означают, что оно заменяют байты в фактических функциях, которые используют наши телефоны.
• Тело патча. Это - новый код, написанный в конце прошивки нашего телефона, в пустой свободной области.
2.- Понятия:
• У комментариев нет никаких функциональных возможностей в теле патча, кроме как указания автора,имени,модели и прошивки,а также дополнительной информации о нём.
• Врезки и модификации кода прошивки делают патчеры необходимые для работы новых патчей. Иногда патчеры добавляют в прошивку новые функции, прописывая их в свободную зону прошивки. Новый код называют Телом патча. Патчеры пишут переход туда из прошивки, который по большей части выполняет только переадресацию, после чего следует выполнение нового кода и переадресация к исходной функции, не ломая дальнейший код (бывают и исключения).
• Тело патча - это дополнительный код который записывают в свободную область. Для задействования кода патчеры пишут врезки,который переадресует исходную функцию на новую. В большинстве случаев после того, как новый код был выполнен происходит переадресация назад к старому коду,чтобы не оборвать выполнение функции и не вызвать какой-либо сбой.
3.- Основы ассемблирования:
Важной вещью, чтобы понять является cо-отношение между функцией и используемым положением байт.
У каждого байта в наших прошивках есть определенное значение и причина существования, они классифицированы в Данных и Коде. Логика выполнения задаётся процессором,какой байт распознавать как Код,а какой как Данные. Каждая функция в нашей прошивке использует место (в байтах).
ARM Процессоры (используемые в наших телефонах) имеют 2 'Режима Выполнения' (понимать термин вам не нужно): 16-битное (вызывает THUMB) и 32-битное (вызывает ARM) выполнение. Это означает, - то,что некоторые (большая часть) кода прошивки написаны в виде 16-битных (2 байта) функциях и некоторый другой код в виде 32-битных (4 байта) функций. Мы не будем касаться Режима Выполнения ASM, так как мы почти не используем его, и продолжим с Режимом Выполнения THUMB.
В Режиме Выполнения THUMB (16-бит) Функции Ассемблера используют 2 байта пространства, таким образом каждые 2 байта THUMB кода, процессор обрабатывает как функцию.
4.- Интерпретация:
Тот код что находится в наших VKP патчах должны изменить какие-то байты в прошивке,изменив при этом функцию нашего телефона. Все значения написаны в HEX-виде.
452add9c: 26D0 24D0
Это часть нашего патча, заменяет 26D0 на 24D0 по адресу 452ADD9C в нашей прошивке. 26D0 - 2 байта, и если мы дизассемблируем их получаем функцию:
И когда мы применяем патч, 26D0 изменяются на 24D0, и получаем следующее:
ROM:452ADD9C 24 D0 BEQ loc_452ADDE8
Единственное, что изменилось, был параметр функции. Как вы могли заметить, параметр - смещает адрес: 452ADDE8. 5.- Процесс:
• Открываем IDA и загружаем необходимую прошивку. • Применяем патч используя IDC скрипт 'Apply VKP Patch'. • Далее Menu > Options > General > 'Number of opcode bytes:' изменяем на 4. (Число байт отображаемых у каждой функции слева).
• Переходим к первой врезке патча: 452add9c. (Горачая клавиша: G) • Дизассемблируем (Горячая клавиша: C) • Выбираем строку соответствующую байтам, которые указаны в патче:
• Нажмите Alt + F10 и создайте ваш второй файл. • Приведите его в порядок и создайте переход: Код:
org 0x452ADDE8 LDR R3, off_452ADDEC BX R3
off_452ADDEC DCD 0x45C00940+1
• Переходим на третью врезку: 45c00940 Примечание: Эта врезка переходит в пустую область прошивки,где расположено тело патча. Примечание2: Во все значения после перехода в тело патча можно делать переход между ними, всё это функция написанная Джон'ом North'ом (Автор)..
• Дизассемблируйте, если это ещё не сделано. • Выделяем тело патча и создаём третий .asm (Alt + F10).
#66 [22.04.11, 10:18] Re: [Tutorial] Создание ASM файла (исходника).
Vov4ик, ну вот в иде адреса слева разных цветов бывают. Желтые- неанализированные. Серые- ссылки куда-то или просто данные шестнадцатеричные.
T700 R3EG004
Neodzen
Patcher
Регистрация: 3.10.10 Сообщений: 311 Репутация: 3339 Откуда: Украина
#67 [22.04.11, 10:23] Re: [Tutorial] Создание ASM файла (исходника).
Vov4ик, pavelsh уже выразил мой вопрос. Так какие адреса черные? Мож на них жать тож чтото надо? И на каких адресах надо жать D, O, A? А то я нашел фак по английски, мало что понял
K800 R8BF003 FOREVER! Респекты: MrGraL,Therion,D3mon,E1kolyan,Boysie,Vov4ик, ну и список можно продолжать еще долго)))
Vov4ик
Patcher
Регистрация: 14.8.10 Сообщений: 826 Репутация: 8576 Откуда: Russia
#68 [22.04.11, 10:27] Re: [Tutorial] Создание ASM файла (исходника).
ivason, пофиг на цвет) а там где черное ведь написано ; =============== S U B R O U T I N E ======================================= не так ли? Нормально все это ну нужно ничего нажимать
#69 [22.04.11, 10:29] Re: [Tutorial] Создание ASM файла (исходника).
ivason, d надо жать там, где через с получается какая-то фигня или lsls/lsrs, o на кусках по 4 байта, где последний - две первых цифры из возможных адресов.
T700 R3EG004
Vov4ик
Patcher
Регистрация: 14.8.10 Сообщений: 826 Репутация: 8576 Откуда: Russia
#70 [22.04.11, 10:30] Re: [Tutorial] Создание ASM файла (исходника).
Вы не можете начинать темы. Вы не можете редактировать свои сообщения. Вы не можете создавать опросы. Вы не можете вкладывать файлы в сообщения. Вы не можете отвечать на сообщения. Вы не можете удалять свои сообщения. Вы не можете голосовать.