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

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

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

Задаем вопросы по теме "Портирование патчей, для начинающих"


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

Вопрос конечно глупый, но подскажи как найти саму таблицу конфига?

Открываешь свою прошивку, переходишь на вкладку MCC в названии ищешь MCC_MENU_CONFIG, потом переходишь на этот адрес. По адресу будет примерно такой код (это из прошивки E730XEEH1 пример):

чего-то там
................
LDR	R2, =0x1148C3E8
................
чего-то там

Переходишь по адресу 0x1148C3E8, у тебя он естесственно другой, и попадаешь в таблицу конфига. Если хочешь найти пустую ячейку, то ищи в ней 00000000. Это будет пустая ячейка в таблице конфига.

Пожертвования отправлять сюда R256859050930

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

  • Ответов 947
  • Создана
  • Последний ответ

Топ авторов темы

Обьясните, пожалуйста, следующий феномен:

портирую патч (Dont_Save_Sms) с МСС блоками (редактор патчей в БинЭдит 12.12.2006). Нахожу абсолютно все эквиваленты как для этих блоков, так и для сингатур для поиска адресов переходов(при этом на 100 % уверен, что эквиваленты верны). Переношу патч на мою прошу, устанавливаю, перепрошиваю тело, проверяю - вместо окна "Оставить копию?" вылетает "Включить ФМ-радио?". Хм, непонял... Проверяю, всё ли правильно сделал и убеждаюсь, что да. Смотрю в редакторе в уже портированном патче на вкладке "код" следующее:

адрес хх хх хххх .... подготовка окна

адрес хх хх хххх .... запрос "Включить ФМ-радио" и всё становится ясно, ведь должен быть другой запрос - "Оставить копию".

 

Портировал патч "Автовозврат в ява", где убирал запрос "Возобновить игру?" и всё получилось, а попробовал перенести патч "Убрать сообщение "Пусто" в календаре" (патчи практически идентичны),- "Пусто" не вылетает. зато вместо него появляется окно "Память заполнена".

В чем дело???

 

Портирую следующим образом:

* как и надо, открываю прошивки, патч в редакторе;

* прохожу следующие шаги на автопортировании: проверка, определение блоков, создание сингатур, определение эквивалентов. После этого проверяю, правильно ли определены эквиваленты для сингатур, чего нет, то дописую вручную после поиска. Эквиваленты для МСС блокв ищу вручную, записываю и финализирую портирование.

 

Спасибо за ответ.

Multum vinum bibere, nоn diu vivere

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

karas,

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

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

Всем доброго времени суток!

нашёл такой код

и возникли вопросы:

EF10	ASR	R7, R5, #3;R7 = R5 >> 3 ' биты не восстанавливаются = 0x0 (0)
FFFF0000;Скорее всего это AMR режим процессора или данные
(1)  0000	LSL	R0, R0, #0;R0 = R0 << 0 = 0x92 (146)
(2)  0000	LSL	R0, R0, #0;R0 = R0 << 0 = 0x92 (146)
(3)  F000	LSL	R0, R6, #3;R0 = R6 << 3 = 0x0 (0)
(4)  2800	LSL	R0, R5, #0;R0 = R5 << 0 = 0x0 (0)
(5)  8070	STRB	R0, [R0, #0x2];байт по адресу [R0 + 2 байт] = R0
(6)  0000	LSL	R0, R0, #0;R0 = R0 << 0 = 0x0 (0)
(7) 050B	LSR	R5, R0, #12;R5 = R0 >> 12 = 0x0 (0)
(8) 0000	LSL	R0, R0, #0;R0 = R0 << 0 = 0x0 (0)
(9) 880B	LSR	R0, R1, #14;R0 = R1 >> 14 = 0x0 (0)
(10) AB10	ASR	R3, R5, #2;R3 = R5 >> 2 ' биты не восстанавливаются = 0x0 (0)
(11) FFFF0000;Скорее всего это AMR режим процессора или данные

это прорисовка верхней совт полосы.

1 отступ сбоку,

2 отступ сверху,

3 ширина

4 высота(в данном случае 40пикселов)

9,10 адрес картинки.

 

А теперь вопросы 8)

что значит пункт(5)??? в картинках шириной 240 равно(8070)

с другой шириной другое значение изменение ничего не дают :51:

что значит FFFF0000

и пункт (8.)??? он везде равен 0000

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

karas,

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

 

Не подскажешь, как именно это сделать.

Multum vinum bibere, nоn diu vivere

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

Не подскажешь, как именно это сделать.

Это надо смотреть что ты переносишь...

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

 

А теперь вопросы :al:

что значит пункт(5)??? в картинках шириной 240 равно(8070)

с другой шириной другое значение изменение ничего не дают :idea:

что значит FFFF0000

и пункт (8.)??? он везде равен 0000

есть подозрение что FFFF0000 это прозрачность картинки(пока не могу проверить)

идея такая нужно отобразить картинку из бина поверх картинки из тфс

как сделать прозрачную картинку тфс.(заливка розовым не помогает)

рисунок из бина отобр. поверх тфс,но после обновления картинки тфс опять вылазит наверх :140:

 

 

P.S.

может кто знает есть ли в д600 место где картинка из тфс отобр. на фоне изображения из бина?(там можно посмотреть как реализованна прозрачность.)

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

в общем FFFF0000 не прозрачность. смена этого значения никчему не приводит :)

а вот что такое

(5) 8070 STRB R0, [R0, #0x2];байт по адресу [R0 + 2 байт] = R0

не понятно :)

 

P.S

как-то тихо.

тихо сам с собой веду беседу :77:

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

P.S

как-то тихо.

тихо сам с собой веду беседу :77:

Просто не понятно что ты вообще делаешь, где ты это откопал и что за прошивка.

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

Просто не понятно что ты вообще делаешь, где ты это откопал и что за прошивка.

пардон.

прошивка D600EXEFA1

откопал путём поиска места откуда вызываються картинки совт полос.

идея такая:

в д600 около 10 совт полосок,разных размеров.

хочу всё свести к одной максимум двум(как в д900)

а потом её(картинку) перенести в тфс.

сложность в том что они отобр. одна на другой

а закономерность проследить не могу.

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

все что-то закрывают. :)

 

хочу чтоб все данные были на одной картинке

 

вроде объяснил :77:

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

сложность в том что они отобр. одна на другой

Т.е. одна на другой?

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

Т.е. одна на другой?

допустим ширина картинки под часами 48 пикселов,ширина картинки под значками еджи,влюзуб,батарея соотв 192(примерно,точно не помню)

расширяю картинку под часами до 240(чтоб коректно отображала),и когда меняеться время,то пропадают все значки еджи,влюзуб,батарея т.е. картинка под часами накладываеться на картинку под иконками,и на иконки соответственно.

 

расширяю картинку под часами до 240(чтоб коректно отображала)

просто у меня щас "вместо" полос стоит картинка на загрузке тела (переписал адреса) :77:

и если не расширить до полного экрана,то изобр. искозиться.

 

 

ещё пример наложения:

например иконка меню 2ого уровня. рядом на пол экрана совт полоса.

если эту совт расширить до полного экрана,то она накроет иконку меню.

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

разрешите задать ещё один глупый вопрос!

как найти в коде вызов определённой функции?

а именно нужно DrawHLine-это функция отрисовки фона меню.

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

как найти в коде вызов определённой функции?

Забиваешь имя или адрес функции в строку поиска и нажимаешь поиск ссылки на адрес, на панели кнопка с буквой A и лупой.

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

как найти в коде вызов определённой функции?

а именно нужно DrawHLine-это функция отрисовки фона меню.

Сначала нуно найти саму функцию,а потом в в поиск ссылки на адрес-получим все вызовы LDR и BL/BLX

Есть для D600XEFC1

108DF78C -DrawHLine

108DF88C -DrawVLine

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

Люди помогите пожалуйста!

видимо я совсем глуп :bx:

искал я функцию DrawHLine

он (бин эдит) выдал такое: "явное определение D по адресу", "явное определение С по адресу" и выдал более 200 адресов. :|

 

а мне всего-то нужно :

Найди функцию lk_DisplayMenu. Она вызывает отрисовку всех типов меню. В ней найдешь то меню, которое тебе нужно. В самом начале (практически) рисуется фон меню. (Вызовом функции DrawHLine). Вот это вызов DrawHLine и нужно заменить на отрисовку картинки. Текст рисуется позже.

я так понял что вызов DrawHLine я могу найти и в MCC_MENU_CONFIG ?

 

p.s. чем больше пытаюсь разобраться, тем больше запутываюсь :laugh3:

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

VitaliyDV, подобные функции советую искать только вручную. Например, смотришь в символике D500BVDK8, видишь

0x10be1024 T DrawHLine

смотришь hex-редактором данные по адресу 0x00BE1024, и копируешь начало, например:

7CB5151C069A079C1E1C00AB18805980

дальше открываешь hex-редактором свою прошивку, и ищешь в ней эти данные...

Для D600EXEFA1 есть такие адреса: 0x1008C4A4 и 0x104B0898. Какая-то из них DrawHLine, а какая-то DrawVLine.

Это можно уточнить с помощью BinEdit, искать схожие коды использования этих функций...

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

VitaliyDV, подобные функции советую искать только вручную.

Зачем что то искать вручную и изобретать велосипед, когда binedit все прекрасно ищет автоматически, нужны bl вызовы функций - пожалуйста, нужны ссылки на адрес для blx переходов - пожалуйста, зачем с hex-редакторами заморачиваться? :Laie_67:

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

dimastyj, ясен пень :44: ...bl/blx, ссылки на данные и прочие только через BinEdit.

А сами функции (такие как DrawHLine и др.) я привык искать вручную :idea: Просто себе больше доверяю :Laie_67:

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

Longhair,

ммм, не пойму, что ты имеешь в виду? Поиск кода самой функции?

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

смотришь hex-редактором данные по адресу 0x00BE1024, и копируешь начало, например:

Код7CB5151C069A079C1E1C00AB18805980

дальше открываешь hex-редактором свою прошивку, и ищешь в ней эти данные...

искать Hex код можно и в binedit, но лучше в таком случае искать сигнатуру, полученную по этому коду.

Для этого надо открыть hex окно по нужному адресу, выделить несколько строк hex кода и по правой кнопке скопировать как hex сигнатуру. вставить в строку поиска для другой прошивки и искать как сигнатуру. точность поиска увеличится :ai: или должна увеличится.

 

PS. Есть ещё способ. Можно использовать связанные прошивки. первая открывается по нужному адресу, а вторая синхронизируется. Этот вариант удобнее, но менее точен и зависит от текущего режима просмотра, в коде ищет по сигнатурам, в hex окне по hex данным, в MCC по MCC сигнатурам.

Одна из последних версий binedit здесь.

AlexeyK.gif

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

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

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

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

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

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

Войти

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

Войти



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