eCigTalk.org - Powered by vBulletin



RSS лента

MicroSur

Процесс переноса патча на другую версию прошивки.

Оценить эту запись
На примере патча 75% яркости экрана с RX200 3.10 -> 3.13
Условно поделю патчи на простой, средний, сложный. Это средний, с применением вставки дополнительного кода.

Потребуются:
- IDA (Interactive Disassembler).
- онлайн ресурс для поиска адресов ссылок, перевода HEX в ARM и наоборот Online ARM/Thumb Branch Finder!
- программа для расшифровки и зашифровки прошивок, например convert.vbs (в архиве с моим редактором VCTFont).
- редактор прошивок, для определения адресов и кодов символов, слов и применения патчей. Рекомендую VCTFont.

Загрузить 3.10 прошивку, применить патч. Закрыть окно патчера и перечитать прошивку
Видим какой ненужный символ занят под этот патч, в новой прошивке будем переносить в такой же.
применили патч  

Посмотреть адреса патча, верхний блок - переход на дополнительную вставку, нижний - код этой вставки.
посмотрели адреса патча  

Раскодировать и открыть прошивку с патчем в IDA: http://www.ecigtalk.ru/forum/f16/t10...ml#post8247099
Найти первый адрес патча в этой прошивке.
нашли адрес перехода на вставку  


Открыть новую прошивку в VTCFont и узнать адрес для вставки кода, добавив к адресу этого символа 2 байта (2 байта занимает размер символа, не будет его трогать).
адрес будет 8558  

Раскодировать и открыть новую прошивку в IDA, вторым окном.
Одна из сложных задач - найти ту же процедуру в новой прошивке. В данном случае оказалось достаточно произвести поиск по тексту "R0, #0xAF", он нашелся и оказался единственным. Не всегда так везет.
нашли соответствие в прошивках  

Начнем менять код перехода на вставку. Теперь знаем откуда (4BDA) и помним куда (8558) надо перейти. Код перехода "B.W".
Загрузить в браузер страничку Online ARM/Thumb Branch Finder!
Ввести там эти значения, нажать Go и...
получили код перехода, 4 байта  

Начинаем исправлять новую прошивку. Встать на адрес 4BDA, открыть вкладку Hex View, нажать F2, вписать полученные значения из браузера, снова F2 для сохранения (эти сохранения не трогают саму прошивку, это файл IDA).
исправили адрес перехода  

Кликнуть 2 раза по этому новому адресу - перешли на начало вставки. Видим адрес начала символа, его размер (2 байта) и адрес начала вставки.
сейчас там какой то бардак  

Перейти в окно старой прошивки с патчем, так же двойной клик на адресе перехода - попадаем на вставку с кодом патча.
в старой прошивке всё красиво  

Начать копировать патч по строкам. Перейти на вкладку Hex View, видим начало и конец вставки.
код вставки старого патча  

Выделить первую строку байт в Hex View, скопировать (Ctrl+C), перейти на окно новой прошивки (проверить, что стоим на адресе начала вставки (8558) ), выполнить Edit->Patch program->Change byte
вызвать окно вставки байт  

Вставить в это окно скопированную строку, применить.
изменение набора байт  

Повторить операцию копирования-вставки остальных байт патча (не забыть перейти на следующую строку в Hex Edit).
Возвращаемся во вкладку ассемблера новой прошивки, теперь с патчем...
опять какой то бардак  

Красными кружками выделены неверные адреса переходов (BL переход) и часть кода в виде данных (DCB). Чтобы исправить вид кода, встать на адрес и нажать "C", подтвердить преобразование в код.
Исправить новые адреса. Вспомнить, какие они были в старой прошивке (47С4),
старый адрес перехода  

снова найти визуальное соответствие с новой прошивкой - это будет адрес (4AF4)
новый адрес перехода  

Лезем в браузер и вписываем данные для вычисления новых адресов переходов BL.
Первый будет: откуда (855A), куда (4AF4)
ищем новые адреса переходов BL  

Вписать полученный код перехода в Hex View новой прошивки и повторить для остальных адресов BL.

Осталось исправить переход B.W из этой вставки обратно в основной код прошивки, так же с помощью программы в браузере, меняя код перехода в Hex View.
B.W откуда (856A)  

и куда (4BDE)  

Теперь код патча выглядит красиво, можно выгонять патч в файл
запись файла изменений  


Сохраненный dif-файл кинуть в папку Patches/Reuleaux_RX200_V3.13 и пропатчить им прошивку в патчере VTCFont.
Всё.
Категории
Без категории

Комментарии


Условия предоставления информации | Отказ от ответственности

© eCigTalk.org 2021