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

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

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

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


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

Вот например есть прош е200 д6 ,то по адрему 0x21268214 находится функция SentDisplayCounter,а по адрему ниже функия =MyDisplayCounter .Нашел такую же функцыю в е590 например,тогда записываем адрес етой функцыи тоисть замисть 0x21268214 пишу ,тот адрес который нашел в е590?

start 0x21268214

ldr r0,=SentDisplayCounter+1

bx r0

.data

 

.start 0x2126841C

ldr r0,=MyDisplayCounter+1

bx r0

.data

И еще если ето так как написал я выше то,как быть например вот с таким

My_PopupSMSInfo:

bl sms_sizeForPopup

LDR R0, [sP]

ADD R4, #0x80

STR R0, [R4, #0xC]

mov r0,r5

mov r1,2

bl sms3_42MsgSavedInSim где нету адресов етих функый.Если не так,прошу если немного разяснить.Иль просто брать писать .equ FunctionName 0xAAAAAAAA .Тогда где именно в исх ето писать.

Вылож исх ,какого то простого,ну функыи на 3 патчык.Спс.Е200д6

Спс

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

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

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

Изв за флуд.Но всеже.Тоисть если в исх найти адреса всех функый и перемных,то усе.Патч можно считать портированым?

А что делать если функыя Lang_tab (0x210752A8) находытся на свободном месте.Как искать в другой прошывки?И почему в сум файле нету такой функыи,а если писать адрес 0x210752A8 то будет показывать таку функыю,Хотя в подгружоном суме ее нет?Ето еще мне не понятно.Вот на етом мои вопросы пока окончатся.Будем пробовать.Но нужны ответы.Спс всем откликнувшым

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

сиспсон,

langtab - это функция мастер-патч, точнее не функция, а таблица... Смотри описание к своему мастеру и бери адрес оттуда...

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

как искать? все очень просто - открываешь функцию в прошивке, для которой эта ф-я уже известна, переходишь на вкладку HEX, выделяешь первую строчку, щелкаешь правой копировать как -> hex-сигнатуру (Thumb) [ну или (arm), в зависимости от ф-и), переходишь в свою прошивку, вставляешь сигнатуру в в поле для поиска и жмешь ентер, смотришь результаты, сравниваешь на глаз похожи они или нет... если ничего не нашлось - удаляешь 2 байта (4 символа) с конца сигнатуры и опять ентер... и т.д.

так по крайней мере ищу я, может кто-то по другому...

Есть ещё один вариант :bk:

Для примера возьму поиск функции DrawFillBox,т.е. адрес этой функции для проши е200bxegl2 мне известен,а искать буду для проши e590.

Открываем БЭ,грузим прошивку

для которой эта ф-я уже известна

Далее идём "Действия"->"Связанный bin"->"Открыть новый редактор" и загружаем прошу,для которой бум искать,в данном примере это будет e590xegf5.

Затем я отключаю синхронизацию,но это на любителя,мне например она мешает :51:

53423-1-10-09)1254403655_thumb.jpg

 

Переходим к первому редактору,где загружена проша е200b.Берём адрес этой функции,это 0x204DD1A8 и переходим по нему.Открываем вкладку "Код",видим такую картину

53423-1-10-09)1254403703_thumb.jpg

 

Теперь жмём кнопочку "Найти аналогичный код в связанной прошивке"

53423-1-10-09)1254403724_thumb.jpg

 

И вуаля,во-втором редакторе нам открывается аналогичная функция(визуальным анализом кода определяем её на аналогичность),вот и всё,искомая функция найдена.

Если же ничего не находит или находит,но видно,что это не то,что нам нужно,тогда можно немного отматать код вниз и повторить поиск.

P.S.Конечно же тут есть ещё всякие нюансы при поиске.Например,как убедиться в правильности найденной функции,помимо визуального анализа.Потому как код функций совершенствуется,соответственно он может отличаться.Но это уже совсем другая история :)

"Копайте",эксперементируйте и всё у вас получится :(

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

  • 2 недели спустя...

Всем привет! Недавно заметил на своем G600, что патч "исправить доступ к КП" не работает через всплывающее меню.

 

вот код патча:

<nord offset="0x00CD1CA8" from="9CDECD20" to="60635B21" type="CODE" />
<nord offset="0x00CD2758" from="B0938320" to="60635B21" type="CODE" />
<nord offset="0x00CD2BD8" from="48683320" to="60635B21" type="CODE" />
<nord offset="0x00CDFA94" from="E0938320" to="60635B21" type="CODE" />

 

Через бинедит произвел поиск 9CDECD20: нашел два адреса. В каждом изменил 9CDECD20 на 60635B21; по аналогии произвел аналогичное с другими адресами. получилось следующее:

 

<nord offset="0x00CD1CA8" from="9CDECD20" to="60635B21" type="CODE" />
<nord offset="0x00CD1D68" from="9CDECD20" to="60635B21" type="CODE" />
<nord offset="0x00CD2758" from="B0938320" to="60635B21" type="CODE" />
<nord offset="0x00CD2808" from="B0938320" to="60635B21" type="CODE" />
<nord offset="0x00CD2BD8" from="48683320" to="60635B21" type="CODE" />
<nord offset="0x00CD2C88" from="48683320" to="60635B21" type="CODE" />
<nord offset="0x00CD2998" from="E0938320" to="60635B21" type="CODE" />
<nord offset="0x00CDFA94" from="E0938320" to="60635B21" type="CODE" />

 

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

dont_work.rar

Обожаю свою жену Анюточку! =)

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

Раз так не получается, значит копаем вручную.

Прошивка: G600XEGL1, открываешь адрес mcc_lk_main_menu = 0x207AA114.

Далее - выбираем шестой пункт меню, По пункту меню 6 переход на адрес mcc_fbox_main_menu -> 0x20CDDC2C.

Далее глянем как найти всплывающее меню картинок.

Для этого переходим в основное меню картинок (Меню-6-1):

По пункту меню 1 переход на адрес mcc_fbox_images -> 0x20CD1BE0

Нас интересует строчка "Меню 0xXX из X пунктов".

Это:

20CD1C30  7C 23 0100 0400 0400 00000000 0000 0000  Меню 0x23 из 4 пунктов.

Первые 2 байта строки - 7C23 - это номер mcc_menu_config.

3,4 байты - номер кейса.

5,6 байты - количество пунктов меню.

7,8 байты - тип пункта меню. В данном случае - это 0x4 - колесное однострочное меню.

У всплывающего меню тип - 0xB.

Всплывающие меню рисуются в том же кейсе, что и основное.

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

Вставляем в поиск:

7C 23 0100 0400 0B00 00000000 0000 0000

Нашли 2 адреса: 20CD1D00 и 20CD1DD0.

Пункт карты памяти - это четввертый. Адрес перехода по пункту меню - это 9,10,11 и 12 байты строки мсс.

Чтобы изменить у первого найденного адреса всплывающего меню типа перехода делаем следующее:

Итак, стоим мы на 20CD1D00. Спускаемся вниз до строки "По пункту 4 переход на". Это адрес: 20CD1D60. Т.к. я сказал, что адрес перехода лежит начиная с 9 байта,но так как начало строки - это 1 байт, следовательно 9-1=8, то прибавляем к текущему адресу 8, это: 20CD1D60+8=20CD1D68. Это и будет первый адрес всплывающего меню картинок.

ДЛя второго адреса картинок - это 20CD1E38.

Надеюсь понятно.

Далее, надеюсь, сможешь сам :(

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

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

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

  • 2 недели спустя...

привет!

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

(прочитал инструкции и по портированию патчей и по созданию ни чего не получается :) )

конкретно надо для E200XEGJ2

Мужик сказал - сделал, ни сделал - еще раз сказал

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

присоединяюсь к GOD и меня научите как патчи портировать :)

Спасибо...!!!

... OpenBox HD S8  500GB & openbox F500   D-Link 2600(HDШарик)...

.......Samsung С5212 Патченная прошивка & iPhone 4.......

поворотка 90°E-80°E-75°E-60°E-53°E-42°E-36°E-26°E-13°E-9°E-4.8°E

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

Вот есть хорошая статейка для начинающих http://OldPh.one/index.php?showtopic=44446?p=44...mp;#entry446400 статья по основам патчеписания и THUMB-ассемблеру.от Позитрона

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

  • 4 месяца спустя...

В качестве обучения решил попробовать портировать патчи с C5212XEIB5 на C5212XEIK1 т.к. могу опробовать патч в действии на обеих прошивках.

Возник вопрос: в binedit-е некорректно отображаются языковые ресурсы — это новый формат или нужно вручную править файл be ?

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

как заставить телефон в списке ява-приложений обрабатывать "*"?

 

214FE854 76 00 0000 0001 0000 00000000 3000 0000 Начало меню, ширина 48

 

обычно вот там ставилось 0401... но звёздочка работать не хочет...

помогите кто нить :)

Лучше работать завтра, чем сегодня...

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

BaRsupillamy,

ну в компилятор пишешь

 

.start 0x...

.short 0x5100

 

а он уж откомпилирует в littleendian и получится 0051

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

а я через .hex пишу :)

 

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

Лучше работать завтра, чем сегодня...

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

но у тебя там 0x100, а не 0x4100

поэтому тебе нужно 0x1100, а не 0x5100

 

а я через .hex пишу

.short - правильней будет...

short - короткое целое (2 байта)

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

ошибся немного...

в оригинале вот так

2158EC34  76 00 0100 0041 0000 00000000 3000 0000

так никто не подскажет, что же тут надо, чтобы * и # работали?

 

разве есть разница между .hex 0123 и .short 0x2301

Лучше работать завтра, чем сегодня...

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

разве есть разница между .hex 0123 и .short 0x2301

в результате разницы абсолютно никакой, но, имхо, с точки зрения программирования второй вариант грамотнее... :)

 

Параметр №2
бит 0 - OK
бит 1 - ?
бит 2 - ?
бит 3 - ?
бит 4 - ?
бит 5 - ?
бит 6 - ?
бит 7 - ?
бит 8 - ?
бит 9 - ?
бит A - ?
бит B - ?
бит C - ?
бит D - ?
бит E - ?
бит F - ?

Параметр №3
бит 0 - вызов
бит 1 - отбой
бит 2 - C
бит 3 - ?
бит 4 - вверх
бит 5 - вниз
бит 6 - влево
бит 7 - вправо
бит 8 - левый софт
бит 9 - правый софт
бит A - ?
бит B - ?
бит C - *
бит D - #
бит E - любая цифровая
бит F - ?

 

открываешь калькулятор и сочиняешь себе маску как угодно душе... :)

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

в результате разницы абсолютно никакой, но, имхо, с точки зрения программирования второй вариант грамотнее... :)

 

Параметр №2
бит 0 - OK
бит 1 - ?
бит 2 - ?
бит 3 - ?
...

открываешь калькулятор и сочиняешь себе маску как угодно душе... :)

 

В компиляторе вместо 0x.... можно использовать 0b...

 

биты в такой последовательности 0bFEDCBA9876543210

  • Like 2

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

AlexeyK.gif

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

FRAER, спасибо за такую инфу... только понятности больше не стало...

теперь ясно, почему ты так требуешь писать через short...

итак... объясни, прав ли я?

изначально вторым паметром у меня идёт 0041... перевернув его и разложим на биты получим

 

...........F E D C B A 9 8 7 6 5 4 3 2 1 0

4100 -> 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0

 

понятно, откуда ты советовал мне 0x5100

 

...........F E D C B A 9 8 7 6 5 4 3 2 1 0

5100 -> 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0

 

а бит С и отвечает за звёздочку... но не начинает оно срабатывать, если я ставлю туда это...

вот что делать то? :)

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

обидно, что вот клавиша С легко начинает работать... но на ней другая функция...

Изменено пользователем BaRsupillamy

Лучше работать завтра, чем сегодня...

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

В компиляторе вместо 0x.... можно использовать 0b...

 

биты в такой последовательности 0bFEDCBA9876543210

ну именно так я и изучал маски... использовал следующий код:

.little
.thumb
.plugin

push {lr}

MOV R1, 0
ADR R0, =my_mcc
BL lk2_12start_menu_edit_fsm

pop {pc}

.align 2
my_mcc:
; поочередно меняем бит и смотрим, на какую кнопку тел реагирует
.mcc MCC_SET_CONFIRM 0 0b0000000000000000 0b0000000000000001
.mcc MCC_TRANSF 0 0 0 0 0x2032C504; главное меню

.endplugin

 

а бит С и отвечает за звёздочку... но не начинает оно срабатывать, если я ставлю туда это...

вот что делать то?

ну это все-таки меню, поэтому здесь так просто не получится сделать...

 

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

 

так что это надо копать где-то в глубине самих менюшек...

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

ну именно так я и изучал маски... использовал следующий код:

.little
.thumb
.plugin

push {lr}

MOV R1, 0
ADR R0, =my_mcc
BL lk2_12start_menu_edit_fsm

pop {pc}

.align 2
my_mcc:
; поочередно меняем бит и смотрим, на какую кнопку тел реагирует
.mcc MCC_SET_CONFIRM 0 0b0000000000000000 0b0000000000000001
.mcc MCC_TRANSF 0 0 0 0 0x2032C504; главное меню

.endplugin

ну это все-таки меню, поэтому здесь так просто не получится сделать...

 

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

 

так что это надо копать где-то в глубине самих менюшек...

 

угу... я хотел у тебя спросить, где же включение этих кнопок :) но уже не стал.. работают и пусть...

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

Лучше работать завтра, чем сегодня...

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

еще немного информации :)

 

вообще маски используются довольно-таки широко в MCC-скриптах

 

пример - последняя версия патча "Переход между СМС"

 

;Добавляем в маску кнопки влево-вправо и убираем * и #

.start 0x208C99F0+4 ;Маска

.short 0x3CA

- маска в скрипте MCC_SET_CONFIRM

 

;Это во время просмотра сообщения с настройками

.start 0x212D9B90+6 ;Маска

.short 0x3C6

- маска в скрипте MCC_SCROLL_TEXT (как видно, тут в качестве маски используются не 2 и 3 параметры, а 3 и 4)

 

;E-mail исходящее 0x20CC5560

.start 0x20CC5640+12 ;Маска

.short 0x3C6

- маска в скрипте MCC_USER_EVENT_WAIT (тут используются 1 и 6 параметры)

 

;E-mail неизвлеченное 0x202F9CC8

.start 0x202F9D38+6 ;Маска

.short 0x2C2

- маска в скрипте MCC_DISPLAY_FOCUS (3 и 4 парамы)

 

как вам известно, также маска используется и в MCC_MENU_START

 

основываясь на аналогичности скриптов _FOCUS_ и _MENU_ можно предположить (а на самом деле так оно и есть), что также маски содержат скрипты

MCC_FOCUS_START (2 и 3 парамы) и MCC_DISPLAY_MENU (3 и 4 парамы) [кстати вот они твои правая софт и красная, можно попробовать еще добавить кнопку * здесь]

 

во время разговора скрипт MCC_GETKEY_INCALL тоже имеет в качестве масок 2 и 3 параметры

(вообще все _GETKEY_ имеют маски обрабатываемых кнопок)

 

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

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

.mcc MCC_GETKEY_INCALL 0 0x5 0x7FF3 ; добавляет в маску кнопки Up, Down, Play (было 0 0x1 0x7FC3)

- из патча "Горячие кнопки при разговоре" ((с) f2065)

 

а есть у нас еще боковая кнопка, на которой изначально висит меню "Музыка" - так она вообще не имеет маски, ее не возможно прехватить ни в обычных меню, ни во время звонка...

(тоже самое, кстати, и кнопка Mode на e590)

 

:)

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

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

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

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

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

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

Войти

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

Войти



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