• Это комментарии. Каждому комментарию в патче должна предшествовать точка с запятой. Вы можете написать комментарии в любой части патча.
• Врезки и модификации кода прошивки. Изменения сделанные в коде прошивки, которые означают, что оно заменяют байты в фактических функциях, которые используют наши телефоны.
• Тело патча. Это - новый код, написанный в конце прошивки нашего телефона, в пустой свободной области.
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).
#34 [21.03.10, 01:20] Re: [Tutorial] Создание ASM файла (исходника).
Применяем патч используя IDC скрипт 'Apply VKP Patch'. я новичек как это сделать можно подробней
MNS81
Patcher
Регистрация: 18.7.07 Сообщений: 556 Репутация: 5564 Откуда: Сертолово Ленинградская обл.
#35 [21.03.10, 01:31] Re: [Tutorial] Создание ASM файла (исходника).
16ty78, Открывай прошу в иде, и жми в ней файл - ИДЦ файл, далее появится окошко, в нем ищешь куда положил и выбираешь ApplyPatch.idc, потом появится окошко где надо выбрать патч. Потом отвечаешь ДА на вопрос "начинать патчить?", вот собственно и все
Регистрация: 27.4.10 Сообщений: 171 Репутация: 1282 Откуда: Россия
#36 [29.07.10, 23:44] Re: [Tutorial] Создание ASM файла (исходника).
народ помогите пожалуйста разобраться с исхом вот этого патча: ;W610 SW-R6BC002 ;Добавить в информацию о файле отображение размера файла в байтах. ;Работает также с папками, java-приложениями и e-mail сообщениями. ;Добавлено раздельное отображение у java-приложений размера jar архива и данных приложения. ;v4 ;(!) Внимание, данная версия не полная, не работает с e-mail сообщениями. Позже все будет :), сначала сделал половину все нормально компилится, а вот врезки никак не хотят, пишет ошибку: неопределенный символ org "ox44EB97F2" вот исходник
(это как пример,переделывать надо всё!!!) LDR R1, ox44EB97F8 - тут ты грузиш одно,а уравнивеш: off_44EB97F8 - вовсе другое!!
надо так: org 0x44EB97F2 LDR R1, off_44EB97F8 BX R1 off_44EB97F8 DCD 0x45AABB2C+1 (хотя тут лучше назвать по другому,например DCD patch_1+1 или zamain_1+1,...)
LDR R4, dword_45AABC20 BX R4 тут идёт у тебя безусловный прямой переход,значит действия дальше не продолжаются,хотя дольше у тебя идёт код. Это связано с тем,что ты не всем частям кода присвоил имя,которое уравнивал во врезках!! где ты линковал эти уравнения??? vetel писал:
Регистрация: 27.4.10 Сообщений: 171 Репутация: 1282 Откуда: Россия
#40 [30.07.10, 14:01] Re: [Tutorial] Создание ASM файла (исходника).
Спасибо всем за ответы, исходник сделал рабочий, не пойму откуда я мог скопировать букву вместо цифры)), вот теперь буду пытаться портировать на к550 р8, но это уже в другую тему.
Sony Xperia XA Samsung SM-J120F/DS Galaxy J12016
C510 R1HA035Brown снова со мной
K550 R8BA024 почти помер
-Sotik-
Patcher
Регистрация: 28.12.07 Сообщений: 880 Репутация: 2655 Откуда: Днепр-City UA
#41 [30.07.10, 15:05] Re: [Tutorial] Создание ASM файла (исходника).
vetel, на будущее -
Spoiler:
бери исхи, когда выкладываешь, в Spoiler
SE W610 R6CA001 ORANGE SE K810 R8BA024 ORANGE HTC DESIRE S
Вы не можете начинать темы. Вы не можете редактировать свои сообщения. Вы не можете создавать опросы. Вы не можете вкладывать файлы в сообщения. Вы не можете отвечать на сообщения. Вы не можете удалять свои сообщения. Вы не можете голосовать.