[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Портирование патчей по замене папок и расширений
f@y$t()Дата: Воскресенье, 23 Сентября 2007, 22:04:09 | Сообщение # 1
Рядовой
Группа: Пользователи
Сообщений: 9
Репутация: 1
Замечания: 0%
Статус: Offline
Нам понадобятся следующие программы:

1. Main вашей текущей прошивки (скачать можно на форуме )
2. Собственно, патч, точнее идея патча который вы хотите сделать.
3. Программа main2raw (скачать можно здесь)
5. Программа HxD (не стал брать IDA для примера так как она сложнее и требует больше ресурсов) (скачать можно здесь )
6. Программа StrToHex (скачать можно здесь )
7. Ну а так же наличие творческого мышления и, главное, желание…
Если ссылки не работают не надо поднимать крик, юзайте поисковики, пожалуйста…

main2raw,HxD,StrToHex в одном архиве

Далее по пунктам:

1. Как сделать raw-файл?
Итак, у нас есть файл прошивки W800_R1BC002_MAIN_EU_EMEA.bin. Копируем в эту папку main2raw. Перетаскиваем на значок программы файл bin, получаем raw.

2. Идея патча.
Итак, чтобы сделать патч нужна идея или задумка. Для начала рассмотрим простенький патч: перенос папки драйвера дисплея, «display»
Папка имеет первоначальный адрес: /ifs/settings/display
Мы хотим переместить папку в прочее, т.е.: /usb/other/drivers
Внимание!!! Длинна желаемого адреса должна быть не длиннее исходного, иначе патч будет более сложным и иметь другую структуру.

3. Работа с программой StrToHex.
Программа довольно простенькая, а служит она для перевода текста в Hex-значения.
Итак, открываем, видим окошко, в верхней части вводим наш исходный адрес:
/ifs/settings/display, жмем на кнопку как на картинке, получаем кучу циферок.

Имеем стоку: 69 66 73 2F 73 65 74 74 69 6E 67 73 2F 64 69 73 70 6C 61 79
Заменяем пробелы на «00», получаем: 6900660073002F00730065007400740069006E00670073002F0064006900730070006C00610079
(для быстрой замены можно использовать любой текстовый редактор)

Собственно, теперь переводим желаемый адрес в те же Hex-значения:
Действуем аналогично и из /usb/other/drivers получаем 7500730062002F006F0074006800650072002F0064007200690076006500720073
Как мы видим строка желаемого адреса получилось короче, поэтому оставшиеся символы добиваем нулями:
7500730062002F006F0074006800650072002F0064007200690076006500720073000000000000
(заменяемые биты в патче должны быть равны новым)

4. Работа в HxD.
Открываем программу, открываем в ней файл raw вашей прошивки (main’a).
У меня в примере это W550_R4CB020_MAIN_EU_EMEA.raw
Открыли, видим кучу цифр. Все в порядке, жмем F3, выставляем «Типе данных» «Hex-значения» как на рисунке:

В строке «Найти» прописываем адрес исходной папки ifs/settings/display в Hex, то есть:
6900660073002F00730065007400740069006E00670073002F0064006900730070006C00610079
Ищем…
Нашли, видим выделенный блок, точнее два блока:

Один выделенный блок – найденные значения, второй блок – как раз наш адрес, а внизу, где курсор мы видим адрес. Вот его и переписываем: 5163E2

5. Ну вот и готов патч.
Теперь только следует знать начальный адрес вашей прошивки, у меня он 440A0000.
Таким образом наш патч будет выглядеть так:
+440A0000
5163E2: 6900660073002F00730065007400740069006E00670073002F0064006900730070006C00610079 7500730062002F006F0074006800650072002F0064007200690076006500720073000000000000

Ну естественно сверху подписываем всякие комментарии, типа названия прошивки, копирайты и т.д..
Ну вот такой нехитрый способ делать патчи по переносу папок..

6. Изменение расширения стандартных файлов, на примере: emptybattery.mid (звук пустой батареи)
Итак, адреса стандартных звуков прописаны в main’e точно так же как адреса папок, поэтому и действия похлжи:
Запускаем StrToHex, вводим emptybattery.mid, переводим, получаем 65 6D 70 74 79 62 61 74 74 65 72 79 2E 6D 69 64

Заменяем пробелы на нули и получаем: 65006D0070007400790062006100740074006500720079002E006D00690064
Ищем в HxD, видим следующее:

Там где текст (справа) выделяем расширение, т.е. «m.i.d»

Итак, очевидно, что менять надо биты 6D00690064 по адресу 151A4EA.
Теперь в StrToHex переведем «mp3» в Нех получим 6D00700033

Ну вот и патч на смену расширения готов, добавляем свой начальный алрес и получаем:
+440A0000
151A4EA: 6D00690064 6D00700033 ;emptybattery.mid -> emptybattery.mp3

Ну в принципе можно понять, что для остальных звуков которым мы хотим поменять расширение с mid на mp3 данные будут одинаковые, будут только разные адреса, так например:
7. Послесловие и дополнение.
Если есть желание, чтобы звуки, к примеру emptybattery.mid был поменян на emptybattery.mp3 да еще и отображался в «Прочем» телефона, то необходимо сделать парочку патчей или все запихать в один патч, а именно:
а) Патч на перенос папки «Sounds» в «Other»
б) Патч на изменение расширения.
Внимание!!! Патч на изменение расширения в данном случае будет другим, так как для звука тоже придется менять адрес с tpa/preset/system/sound/emptybattery.mid на usb/other/sound/emptybattery.mp3, что делается методами описанными выше.

Вместо Заключения.
FAQ написан простым языком, так как я не обладаю никакими специализированными знаниями: отношения к программированию не имею вовсе, программную среду ARM не знаю в принципе, только на пальцах. Спасибо Joker XT, который когда-то научил этому непростому делу и до сих пор консультирует по разным вопросам. Еще раз всем спасибо, кто мне помогал, чьи программы юзал.
Взято с se-team.com Спасибо автору!

 
  • Страница 1 из 1
  • 1
Поиск: