• Это комментарии. Каждому комментарию в патче должна предшествовать точка с запятой. Вы можете написать комментарии в любой части патча.
• Врезки и модификации кода прошивки. Изменения сделанные в коде прошивки, которые означают, что оно заменяют байты в фактических функциях, которые используют наши телефоны.
• Тело патча. Это - новый код, написанный в конце прошивки нашего телефона, в пустой свободной области.
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).
#24 [02.04.09, 16:37] Re: [Tutorial] Создание ASM файла (исходника).
-BourNe-, Слухай, надо иногда мозг включать и перечитать не один этот фак, а кучу факов, чтоб понять что к чему. Тебе нужно нажать alt+b и в диалоге указать search up и нажать ок. Тебя перенесет в место где будет байт B5, поднимись на один байт выше и нажми C, а потом снова перейди по тому адресу где у тебя ничо не получилось и посмотри
Регистрация: 17.8.07 Сообщений: 41 Репутация: -24 Откуда: Украина
#27 [19.11.09, 13:16] Re: [Tutorial] Создание ASM файла (исходника).
создал исходник при компилирование вылазит такая ошибка: Код:
flat assembler for ARM version 1.67.22 (870585 kilobytes memory) G502.asm [27]: loc_120760C8 ; DATA XREF: ROM:120760AAr error: illegal instruction. cant open temp.bin
#29 [11.02.10, 10:57] Re: [Tutorial] Создание ASM файла (исходника).
Подскажите, в исходнике align 4 нужно писать везет где встречается drow или только в конце, где их несколько подряд идут ? И на А2 какие адреса нужно заменять на метки addr Вот на дб они начинаются на 45 или 44 А в исходнике у меня есть которые начинаются на 10, 11, 12
#31 [11.02.10, 16:22] Re: [Tutorial] Создание ASM файла (исходника).
Я портирую букменеджер в.2 Привык еще со своего ш810го, очень нужный мне патч А на счет того что выносить не обязательно это понятно, просто я хотел узнать какие точно то адреса менять, во всех мануалах про дб2020 написано, вот и приходится методом тыка всё пробовать.... Еще там в теле исходника есть написаный текст, который будет в патче Его можно русскими буквами писать?
Вы не можете начинать темы. Вы не можете редактировать свои сообщения. Вы не можете создавать опросы. Вы не можете вкладывать файлы в сообщения. Вы не можете отвечать на сообщения. Вы не можете удалять свои сообщения. Вы не можете голосовать.