Перейти к содержанию
Old Phone Forum
  • Вход

    Вы сейчас не залогинены на форуме.

    Для возможности комментариев, загрузки файлов, подписок на ответы - вам надо войти.

Пошаговый разбор существующих патчей


Рекомендуемые сообщения

Сообщение от модератора cr_az2
Тема предназначена для разбора принципов работы существующих патчей в целях обмена опытом, такие себе мастер-классы. Каждый пост без смысловой нагрузки по теме будет удалятся. виновные - наказываться.

 

Разбираемые патчи (список будет пополняться):

1.Delete active image

2.Удаление пункта меню Анимированные v 2.0

3.Сохранение режима без звука

4.Удаление языков из списка

Сообщение от модератора cr_az2
Тему буду курировать, так что отсрел будет регулярным. Скажем нет флуду и оффтопу.

x700+Nokia 6270+N70 + N73+Canon PS A560+Sony Ericsson Elm J10i2

Cyclone Box + UFS & HWK + MX Key

Нормальные с нормальными - остальные с остальными!!! Отпускай хлеб твой по водам, потому что по прошествии многих дней опять найдешь его(Екклесиаст 11:1) Все и всегда не бывает никогда.

Ссылка на комментарий
Поделиться на другие сайты

Я разберу принцип работы патча "Delete active image" для телефона Х100 и прошивки X100XEDG1

Предполагаю, что для остальных Sysol-телефонов аналогично.

 

Данные патч позволяет удалить изображение, даже если оно используется как заставка.

При этом оно остается на рабочем столе даже после включения/выключения телефона.

 

Для начала, если вы не любитель менять заставки на рабочем столе, то естественно, такой патч пригодится.

Когда вы устанавливаете картинку на рабочий стол, она записывается в файл wpaper.ani в файловой системе TFS и в дальнейшем считывается оттуда.

Однако, если попробовать удалить файл картинки из телефона, то вылезет надпись "Используется как заставка" и удалить не получится.

Для этого и применяется такой патч, принцип работы которого выкладываю ниже.

 

Если открыть его в блокноте, то там всего, если не считать меток и данных о авторе, одна строчка...

 

<nord offset="0x007F95C0" from="007FB6F8" to="007F95C8" type="CODE" />

 

Если в программе BinEdit открыть прошивку и перейти по этому адресу, то в коде будет всякая билебирда, а в МСС надписи "Пустая команда".

Но так как в коде всякая билебирда, то логично предположить, что тут работают МСС.

 

Сама строчка означает, что по адресу 0x007F95C0 значение "007FB6F8" меняется на "007F95C8"

 

Меняющееся значение очень похоже на адрес, но так как в МСС адрес расположен.... в общем на месте ХХХХХХХ в строчке шаблона

00 00 0000 0000 0000 ХХХХХХХХ 0000 0000

 

И вполне возможно, что в BinEdit код отобразился со смещением.

Тыкаем несколько раз влево на бегунок снизу.... и на адресе 7F95B8 видим осмысленную картину. Теперь поднимем бегунок на один адрес вверх до 007F95A8, и видим такой скрипт...

 

007F95A8  C8 00 0000 0000 0000 00000000 0000 0000  Подготовка окна

007F95B8  1D 08 0064 0001 0000 007FB6F8 0000 0000  Если x1=8 x2=100 x3=1 то переход на 0x7FB6F8

007F95C8  1C 08 0039 0000 0000 00000000 0000 0000  Выполнить 0x8 x2=57 x3=0 x4=0 x5=0 x6=0

007F95D8  C8 00 0000 0000 0000 00000000 0000 0000  Подготовка окна

007F95E8  91 03 0002 0008 055E 00000000 0000 0000  Сообщение "Удалено"

 

 

Сразу скажу, что он работает, когда мы удаляем картинку из телефона.

Первая строчка готовит окно с надписью.

Вторая смотрит, не используется ли эта картинка как заставка?

Если да, то переходим на адрес 0x7FB6F8, где расположен скрипт, который выводит сообщение "Используется как заставка".

Вот патч и правит адрес 007FB6F8 на 007F95C8, то есть на адрес третьей строчки скрипта, где спокойно выполняется удаление картинки...

 

 

Надеюсь, меня поправят знающие люди, если я где-то допустил ошибку... По крайней мере именно так я понял принцип работы патча.

Ссылка на комментарий
Поделиться на другие сайты

Мдяя...Пока слабовато.

на адрес третьей строчки скрипта, где спокойно выполняется удаление картинки...

а как же тумба...удаление происходит именно там,а сама МСС токо указывает какая функция это выполняет..
1D 08 0064 0001 0000 007FB6F8 0000 0000 Если x1=8 x2=100 x3=1 то ...
Что за параметр x3=1,например(x1 и x2,я допустим знаю...),предположу,что это флаг установленности в качестве заставки.Отсюда возможен второй вариант реализации патча-обойти эту проверку в MCC_TASK_08 по CASE 0x0064 в непосредственно в самой тумбе.
/ Чтобы боялись чужие, не обязательно бить своих.../
Ссылка на комментарий
Поделиться на другие сайты

Мдяя...Пока слабовато.

 

 

Да кстати, вот учил я машинные коды, ассемблер, циклы\стек\переходы\сравнения и т.п., программульки в DOS печатал, а относительно телефонов применять не получается. Команды во вкладке "Код" знакомые, а не озаряет, что даёт на телефоне... Может не то что-то учу?

 

 

Попробую раскрыть принцип работы патча для Х100XEDG1

"Удаление пункта меню" от PimenА.

 

Распишу то, что понятно.

 

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

<nord offset="0x007ED418"

from="C8000000000000000000000000000000600A0427000400430000000000000000510A000000000427007ED49804270000520A000000000427007F04A804280000520A000000000427007EE69804290000530A000000000427007EE798042A00001D09000100090000007EBDF8000000004D010000000000000000000000000000"

to="C8000000000000000000000000000000C8000000000000000000000000000000600A0428000300430000000000000000510A000000000428007F04A804280000520A000000000428007EE69804290000530A000000000428007EE798042A00001D09000100090000007EBDF8000000004D010000000000000000000000000000" type="CODE" />

 

На первый взгляд завораживает, но так как адрес указан один, то можно разбить по другому, вот так:

from="C8000000000000000000000000000000"

to="C8000000000000000000000000000000"

 

from="600A0427000400430000000000000000"

to="C8000000000000000000000000000000"

 

from="510A000000000427007ED49804270000"

to="600A0428000300430000000000000000"

 

from="520A000000000427007F04A804280000"

to="510A000000000428007F04A804280000"

 

from="520A000000000427007EE69804290000"

to="520A000000000428007EE69804290000"

 

from="530A000000000427007EE798042A0000"

to="530A000000000428007EE798042A0000"

 

from="1D09000100090000007EBDF800000000"

to="1D09000100090000007EBDF800000000"

 

from="4D010000000000000000000000000000"

to="4D010000000000000000000000000000"

 

Так понятней?

Прошу некоторых не ругаться - сам знаю, что нифига.

 

Идём по вышеуказанному адресу в BinEdit.

Можете глаза вверх не поднимать, вот он 0x007ED418

 

В принципе комментарии программы с правой стороны должны большую часть дела прояснить.

Сам же патч работает вот как...

 

В общем, вот код с этого адреса

007ED418  C8 00 0000 0000 0000 00000000 0000 0000  Подготовка окна

007ED428  60 0A 0427 0004 0043 00000000 0000 0000  Создание меню с первым индексом Анимированные из 4 пунктов

007ED438  51 0A 0000 0000 0427 007ED498 0427 0000  Первый пункт меню Анимированные

007ED448  52 0A 0000 0000 0427 007F04A8 0428 0000  Пункт меню Изображения

007ED458  52 0A 0000 0000 0427 007EE698 0429 0000  Пункт меню Положение текста

007ED468  53 0A 0000 0000 0427 007EE798 042A 0000  Последний пункт меню Стиль текста

007ED478  1D 09 0001 0009 0000 007EBDF8 0000 0000  Если кнопка "вкл/выкл" в состояни 1 то переход на 0x7EBDF8

007ED488  4D 01 0000 0000 0000 00000000 0000 0000  возврат из меню на 1 уровень

 

Для большей простоты буду называть строчки 1-я, 2-я и т.п.

 

В первой строке ничего не меняем.

Вторую заменяем на первую, пусть ещё раз окно подготовится.

Третью заменяем на

60 0A 0428 0003 0043 00000000 0000 0000

 

1-й и 2-й пункт вроде за создание окна отвечают. Далее, если правильно понял, число 0428 - это индекс текстового ресурса, который будет 1-м, то есть "Изображения". Циферки 0003 значат, что теперь не 4, а 3 пункта меню.Что такое 0043 - мне неясно, ну а дальше нолики идут...

 

4-ю заменяем на

51 0A 0000 0000 0428 007F04A8 0428 0000

51 значит, что среди всех пунктов этот на первом месте.

0428.... хм, ни та ни другая не понятна, хотя явно какая-то отвечает за индекс текста.

Ну а далее идут строчки, начинающиеся на

52 ХХ ХХХХ.....

53 ХХ ХХХХ....

 

52 Значит, что пункт меню находится между первым и последним, а 53, что это последний пункт меню

Ну и в 6-й колонке меняется адрес, чтоб переходило правильно, куда надо, а то зайдешь в "Изоюражения", а там ещё "Анимированные".

 

 

В патче правда есть ещё строчка

<nord offset="0x000ACC3C" from="2901D0152902D02F2903D0742904D10E" to="2901D0312902D0762903D11046C046C0" type="CODE" />

 

Я не знаю принцип работы, что там меняется...

Понял только что это THUMB-код формирования данного меню, и что то там корректируется с адресами.

То есть команда СМР значит, что равниваем регистр R0 с единичкой, потом с двойкой, и при каком то условии идёт переход на какой-то адрес, который патч корректирует.

 

Но после того, как в патче появилась эта строка, при нажатии на правую софт клавишу перестало перемещать в пункт меню "Управление"

Изменено пользователем ***Рейнджер***
Ссылка на комментарий
Поделиться на другие сайты

Но так как в коде всякая билебирда

В коде билеберда? Интересный подход.

 

то логично предположить, что тут работают МСС.

Никакой логики...

 

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

Зачем его в блокноте то открывать? :Laie_67: Есть же спецализированные программы, такие как BinEdit и в нем редактор патчей, если уж хочется посмотреть патч... :77:

Всё ещё будет...
Ссылка на комментарий
Поделиться на другие сайты

Да кстати, вот учил я машинные коды, ассемблер, циклы\стек\переходы\сравнения и т.п., программульки в DOS печатал, а относительно телефонов применять не получается. Команды во вкладке "Код" знакомые, а не озаряет, что даёт на телефоне... Может не то что-то учу?

а где тут разные команды? Вопросы могут возникнуть только по str/ldr и то там всё понятно. На сайте бинэдита есть подробный мануал по командам, его нужно прочесть первым.

 

ЗЫ Если ничего не работает - прочтите наконец инструкцию (с) Законы Мерфи

Бывших SGH`овцев не бывает.

Глупый модератор применяет наказания для самоутверждения.

Умный - для поддержания порядка. Мудрый - не применяет вообще!

 

Убийцу можно понять, но нельзя простить. Предателя можно простить, но нельзя понять. Бойтесь равнодушных - именно с их молчаливого согласия совершаются все предательства и убийства на земле.

Ссылка на комментарий
Поделиться на другие сайты

***Рейнджер***,

" Код в прошивке может быть либо ММС либо THUMB(AMR), т. е. если код ММС, то на вкладке Код будет отображаться бурда и наоборот - это надо учитывать."

 

МСС - по типу скриптов чтоли, функций, некоторым мсс передаються параметры.

А сам процессор может работать в двух режимах - THUMB(2 байта на команду за исключением пары команд) и ARM(4 байта на команду).

 

Так вот, вызов МСС происходит специальным образом, поэтому формат мсс в прошивке имеет специальный вид:

 

ХХ YY ZZZZ ZZZZ ZZZZ ... и так до 20 байт(длина МСС).

 

к примеру 1F 0A параметр параметр параметр ...

Многие вызовы МСС и сами МСС были разобраны на форуме тут и на С-М.

Так вот, всегда надо четко понимать с чем сейчас работаешь: с МСС или с кодом, и соотвественно переключать вкладки в бинэдите. К примеру если ты переходишь на адресс и видишь там код, не несущий смысловой нагрузки - это может быть мсс и наоборот, если на вкладке мсс у тебя какие-то непонятные наборы этих самых мсс - глянь на вкладку код.

 

 

Еще один совет напоследок - забудь про блокнот, есть редактор патчей в бинэдите, его и используй.

 

Те патчи, что писал для х100 - могу разобрать тут, но уже после отпуска.

Бывших SGH`овцев не бывает.

Глупый модератор применяет наказания для самоутверждения.

Умный - для поддержания порядка. Мудрый - не применяет вообще!

 

Убийцу можно понять, но нельзя простить. Предателя можно простить, но нельзя понять. Бойтесь равнодушных - именно с их молчаливого согласия совершаются все предательства и убийства на земле.

Ссылка на комментарий
Поделиться на другие сайты

<nord offset="0x000ACC3C" from="2901D0152902D02F2903D0742904D10E" to="2901D0312902D0762903D11046C046C0" type="CODE" />

Это исправление индексов всплывающих подсказок при наведении на пункт меню

GameTeam.ru - Крупнейший каталог бесплатных Java-игр!

Ссылка на комментарий
Поделиться на другие сайты

Выдалось пару свободных минут и я постараюсь выполнить кусочек своего обещания.

 

Патч "Сохранение режима без звука".

Для начала надо было найти где и как проигрывается мелодия включения, и вот тут единстевнное тёмное пятно, кажеться используя адресс ресурса я находил место проигрывания. Найдя обработчик МСС_ТАСК не трудно найти где он вызывается.

В нашем случае мелодия включения проигрываеться через

MCC_TASK 0x12 0x62

, вызывается МСС эта по адресу 0х005633E8

В код самой мсс нам лезть ни к чему, нам нужен флаг, в который мы бы записывали состояние режима. Сделать флаг можно как минимум тремя способами:

1) найти свободный байт в оперативке и писать в него. Минусы - ОЗУ сбрасывается при перезагрузке

2) сделать в тфс файлик и писать в него флаг. Минусы - скорость работы, плюсы - один из простых вариантов.

3) Используя патч ЕЕПРОМ_Апи (ИМХО отличнейшая вещь для патчера) можно сделать флаг в ЕЕПРОМ. Этот вариант я и выбрал.

 

Далее. Вместо проигрывания стартовой мелодии мы вставляем переход на наш код, который будет анализировать флаг и в зависимости от этого делать некоторые операции.

005633E8:
MCC_TRANSF 0 0 0 0 адресс_нашего_блока_МСС

 

Далее нам понадобиться МСС_IF, которая будет анализировать флаг.

 

Используя ЕкстендедАпи(Мастер-патч на свифтах) выделяем себе обработчик:

.org __my0_4if_Table+0x67*4
DCD 	my_0_5if_0067+1

, где 0х67 - номер обработчика.

В итоге наша МСС_IF при вызове должна иметь вид типа

.mcc MCC_IF 0x10 0x67 0 0 адрес_перехода

Как это работает - при вызове МСС идет вызов кода обработчика, код его следующий:

/*
Чтение режима из еепрома.
*/
my_0_5if_0067:
push {r1-r7,lr}
sub sp,sp,#0x8

MOV	R1,  #0	;Читаем байт
MOV	R0,  #6	; Смещение  6
BL	Read_EEPROM

add sp,sp,#0x8
pop {r1-r7,pc}

Код выполняется и если по его завершение в регистре R0 единица - значит переход на адресс в МСС_IF. В нашем случае я просто считывл значение с ЕЕПРОМа( 0 - выключен режим без звука/ 1 - включен) и возвращал его в R0.

 

Теперь самое интересное, а именно где флаг будем устанавливать.

В сумах было интересное название mcc_set_quiet_mode_onoff, по его адресу нам открывается следующая картина:

 

MCC_IF 0x6 0x11 0 0 mcc_report_impossible	
MCC_IF 0xA 0x2D 0x1 0x1 mcc_set_quiet_mode_off	
MCC_ELSE 0 0 0 0x1 mcc_set_quiet_mode_on	
MCC_RETURN;возврат из подпрограммы

При переходах по mcc_set_quiet_mode_off / on мы увидим, что установкой режима занимаеться MCC_TASK 0xA 0xA 0x1A, а как 4тый параметр у неё идет 0/1, которые и записываются в переменную mmi_quiet_mode_onoff, являющуюся флагом в ОЗУ самих корейцев.

Решение родилось само - врезаться в функцию смены режима дописав в неё сохранение также и в мой флаг. Сделано это было так:

000C330A: //адресс функции смены
bl remake_mcc_body //переход на мой код

.org remake_mcc_body
//код взят из прошивки, сохраняем сначала флаг корейцев
LDRH	R0, [R7, #6]
LDR	R1, =mmi_quiet_mode_onoff
STRB	R0, [R1]
//а тут сохраняем в мой флаг
MOV	R2,  R0	;Значение для записи
MOV	R1,  #0	;Пишем байт
MOV	R0,  #6	; Смещение  6
BL	Write_EEPROM

Bl  0x000C34DE //возврат с врезки

 

Последний штрих - вставка вместо МСС проигрывания мелодии при старте блока МСС для выбора действия.

.mcc MCC_IF 0x10 0x67 0 0 mute_on		;переход на непроигрывание
.mcc MCC_TASK 0x12 0x62					;проигрывание мелодии
.mcc MCC_TRANSF 0 0 0 0 0x005633F8	;выход

mute_on:
.mcc MCC_TASK 0xA 0xA 0x1A 0x1		;установка режима
.mcc MCC_TASK 0xA 0x1D					;вибрация
.mcc MCC_TRANSF 0 0 0 0 0x005633F8

 

Кроме ЕкстендедАпи и ЕЕПРОМАпи в патче есть привязка к патчу Роникс по одной простой причине. В сисолах установка иконок информационной полосы до боли простая, если бы не одно но - мы работаем с телефоном еще до полной загрузки и при вызове мсс установки иконок толку никакого. решением бы было писать свой обработчик иконок по флагам, но это сделал LinFor до меня и смысла повторять его наработки не было.

 

 

Вроде бы всё расписал, должен уже бежать. Если есть вопросы - задавайте, правда отвечу уже после 1го числа. Старался отвечать развёрнуто.

Бывших SGH`овцев не бывает.

Глупый модератор применяет наказания для самоутверждения.

Умный - для поддержания порядка. Мудрый - не применяет вообще!

 

Убийцу можно понять, но нельзя простить. Предателя можно простить, но нельзя понять. Бойтесь равнодушных - именно с их молчаливого согласия совершаются все предательства и убийства на земле.

Ссылка на комментарий
Поделиться на другие сайты

Тоже приложу руку... :idea: Патч "Удаление языков из списка"

Итак,разберем патч «Удаление языков из списка»,на примере всеми горячо любимого X700XEEK6.Нам понадобится программа BinEdit от Алесея Каленова и собственно прошивка.(файл .cla),который загрузим в нее.

Зайдя в настройки телефона-выбор языка обнаруживаем,что в телефоне установлена поддержка 12 языков.Нетрудно заметить,что несмотря на выбранный язык отображение их названий не меняется и пишется именно на соответствующем языке.Потому,что эти названия зашиты в прошивке,и при загрузке телефона отправляются в оперативную память.Всего их сорок,они записаны в таблицу с интервалом в 40 байт,и этот кусок кода присутствует во всех моделях.Эту таблицу вы сможете увидеть по адресу 1800F668 в БинЕдит на вкладке HEX.Откуда адрес?-скажете Вы…Его прога находит автоматом,как собственно и остальные адреса связанные с текстовыми ресурсами.Зайдя на вкладку свойства мы увидим содержимое be-файла в котором расписаны основные параметры и адреса,по которым прога работает с прошивкой.Для каждой прошивки создается свой be-файл(автоматом).Чета меня не туда понесло…Так вот, в свойствах нас интересует следующее

………

LangNames adr="0x1800F238" steps="40"

LangCount adr="0x100EEA4C" Default="12" TableIdAdr="0x1156B610"

………

LangAdrTable adr="0x1156B61C" ………..

LangAdrTableS adr="0x1156B64C" ………..

………

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

Во второй строке адрес функции,которая устанавливает сколько будет использовано языков,их количество и адрес таблицы с индексами этих языков в таблице их названий(от 0 до 39 в десятичной соотв.,а в hex-отображении от 00 до 57)

В третьей строке адрес расположения таблицы адресов собственно языковых ресурсов,а в четвертой ресурсов отображаемых на софт-полосе,или попросту подписи к кнопкам.Если мы откроем прошивку по этим адресам.то увидим там таблицы,состоящие опять же из 12 адресов(как раз по количеству поддерживаемых языков),каждый из которых ведет не посредственно на таблицу адресов языковых ресурсов конкретного языка.Этих адресов ровно столько,сколько строк выводит РесМан на вкладке Языковые ресурсы.Пройдя по любому из этих адресов,на вкладке HEX в БинЕдит нетрудно в этом убедиться.

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

 

Патч сокращает языки с 12 до 5. Теперь при выборе языка в настройках не будут отображаться Eesti, Latviesu, Lietuviu, Балгарский, Romana, Srpski и Macedonian

 

<patchdata firmware="X700XEEK6" >

<changes>

<nord offset="0x000EEA4C" from="0C" to="05" />

<nord offset="0x0156B614" from="11" to="19" />

<nord offset="0x0156B62C" from="308F14" to="7CE315" />

<nord offset="0x0156B65C" from="C4BEA111" to="0CF18510" />

</changes>

</patchdata>

 

<nord offset="0x000EEA4C" from="0C" to="05" /> тут мы меняем значение 12 на 5,

и теперь у нас из таблицы имен языков(1800F238) будут считываться названия по первым пяти индексам находящимся в таблице дефолтных языков(1156B610).На этом можно было бы и ограничиться.Телефон бы стал предлагать к выбору только первые пять языков.Но если мы откроем прошивку по адресу 1156B610,то обнаружим,что первые пять индексов

00,01,03,10,11(в десятичной 0,1,3,16,17).Не забывая что в телефоне индексы всегда отсчитываются от 0,в таблице имен языков(1800F238) элементарным подсчетом(хотя это можно увидеть и на вкладке Языковые ресурсы) находим,что 1,2,4,17 и 18 языки будут соответственно Немецкий,Английский,Французский,Русский и Эстонский,которые и будут выводится в меню выбора.Но мне,предположим необходим Украинский,а Эстонский не нужен.Но Украинские ресурсы во всех таблицах прописаны 9-й строкой,а выводится токо 5.Поэтому

<nord offset="0x0156B614" from="11" to="19" />

мы в таблице дефолтных языков меняем индекс эстонского(11) на украинский(25).Теперь в меню выбора пятым языком будет выводится Украинский.Но это еще не фсе…Выводится то он будет,но при применении все равно будут выводится надписи и подписи по Эстонски.Потому что в таблицах текстовых ресурсов и подписей к кнопкам пятой строкой адреса эстонских языковых ресурсов.

 

<nord offset="0x0156B62C" from="308F14" to="7CE315" />

<nord offset="0x0156B65C" from="C4BEA111" to="0CF18510" />

Здесь мы заменям адреса эстонских на украинские в таблицах языковых ресурсов и ресурсов софт-полосы,иначе говоря переставляем адреса с девятой строки таблицы на пятую.

Почему

<nord offset="0x0156B62C" from="308F14" to="7CE315" />,а не

<nord offset="0x0156B62C" from="308F1410" to="7CE31510" />…И то и другое одно и тоже,четвертый байт без изменений,так зачем его перезаписывать…

 

Вот собсна и фсе,таким образом моно удалить,поменять местами и т.п. в свифтах и сисолах.И вы можете перекроить языковой пакет непосредственно под себя.Как впрочем и добавить новые,но это уже другая история…

 

 

Сообщение от модератора AlexeyK
ред. Alexeyk:

раз речь пошла про binedit, дополню. Все эти манипуляции с языковыми ресурсами можно сделать на вкладке "Языковые ресурсы". Там есть 3 кнопки, удаление выбранного языка, перемещение языка в списке вверх и вниз. После изменений достаточно сделать патч по разности 2 прошивок, изменённой и первоначальной.

Изменено пользователем AlexeyK
/ Чтобы боялись чужие, не обязательно бить своих.../
Ссылка на комментарий
Поделиться на другие сайты

Я разберу ЧАСТИЧНО принцип работы патча "Удаление ненужных анимаций из TFS".

Телефон Х700, прошивка X700XEEK6.

 

Данный принцип работает и на Х100, и на Е330, и на D500 и т.п.

 

Сейчас сами всё поймёте.

Я опишу, как делать.

 

Пусть например надо сделать так, чтобы остановилась анимация в главном меню, и можно было удалять картинки menu12, menu13, menu22, menu23 и т.д.

 

Открываем прошивку в BinEdit. Тут посоветую иметь в наличии программу WinHex на компьютере или знание таблицы ASCII-символов в голове.

Создаём небольшой пустой файл в WinHex и пишем на месте символов слово "menu11"

Сбоку появляется HEX значение каждого символа в 16-тиричном виде вот так:

6D 65 6E 75 31 31

 

Пишем это дело без пробелов в BinEdit во вкладке "Поиск" и нажимаем Enter

Сообщение от модератора Mako
Гораздо проще-в строке поиска в БинЕдит пишем menu11 и жмем "Поиск текста в коде"(зеленая Т с биноклем) :idea:

 

Находится один адрес. Переходим по нему и видим сбоку такую картину:

menu11.ani./a/im

ages/menu/menu12

.ani./a/images/m

enu/menu13.ani./

a/images/menu/me

 

А чуть левее код каждого символа.

Так вот, правим

ages/menu/menu12

 

на

 

ages/menu/menu11 и теперь второй кадр считывается из первого и так аналогично с каждым!

 

Чтобы править, можно вроде просто выделить нужный символ, например двойку, и вписать единичку.

Только не помню, работает ли этот принцип.

Я вот как делал:

Строчке ages/menu/menu12

Соответствует строка символов

61 67 65 73 2F 6D 65 6E 75 2F 6D 65 6E 75 31 32

 

Правим правое число 32 на 31 (это НЕХ-значения чисел 2 и 1 соответственно) и всё!

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


×
×
  • Создать...