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

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

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

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


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

А где узнать адрес $Ven$AT$L$$lk4_10WriteWindow ?

В E740XEGF4.sym именного такого нет вообще, но разных других lk4_10WriteWindow полно.

Знаю адрес для X700XEFC3 - 0x11734F14, но в D780XEHE1 схожего кода вроде нету

 

зы. и ещё мне видимо lk4_9LcdInvalidate надо…

Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

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

  • Ответов 1,4 тыс
  • Создана
  • Последний ответ

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

А где узнать адрес $Ven$AT$L$$lk4_10WriteWindow ?

Это длинный переход в арм-коде,их штук по пять-шесть для основных функций в прошивке

Вот твой lk4_10WriteWindow-0x20A6471C, и соответственно длинные переходы на него :200A7974,20520A34,20E22414,21266284,21686160

А компилятор по $Ven$AT$L$$ сам определит тот из них до которого можно достать

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

Помогите разобраться с принципом построения обычных меню на E200 и ему подобных. Особенно интерисует то, как пункта меню соотносится со своим текстом. Ну очень нужно.

За ранее спасибо.

X100+10Mb->E200+1Gb->M3510+2Gb->S5230 Star+2Gb->S7230 Wave+4Гб->Galaxy S GT-i9003+8Гб

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

Помогите разобраться с принципом построения обычных меню на E200 и ему подобных. Особенно интерисует то, как пункта меню соотносится со своим текстом.
См. патч Setup_Plus_D780XEHE1 (там есть и исходник на асме).
  • Like 1

Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

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

См. патч Setup_Plus_D780XEHE1 (там есть и исходник на асме).

Если бы у меня еще и прошивка такая была, я может и разобрался.

X100+10Mb->E200+1Gb->M3510+2Gb->S5230 Star+2Gb->S7230 Wave+4Гб->Galaxy S GT-i9003+8Гб

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

lk4_8Graphic_Window выводит только графику, но никак не текст.

Прошу прощения, действительно текст выводится через lk4_10WriteWindow. Просто печатал в пути, вот и задумался и перепутал :(:28:

 

Помогите разобраться с принципом построения обычных меню

Ну давай разберемся :( Буду объяснять на прошивке E200XEGJ2

Давай посмотрим например менюху сообщений (меню-5).

Думаю, раз ты уже хочешь взяться за тумбу, то на мсс значит понимаешь.

Так вот, смотрим адрес менюхи сообщений (202F353C)

 

202F353C  17 0B 1800 0000 0000 00000000 0000 0000  Выполнить 0xB x2=24 x3=0 x4=0 x5=0 x6=0  
202F354C  1B 00 0000 0000 0000 D8CC4821 0000 0000  Вызов подпрограммы 0x2148CCD8  
202F355C  5C 00 0000 0000 0000 00000000 0100 0000  Подготовка окна  
202F356C  78 00 0000 0000 0000 00000000 0000 0000  Пункт меню 1 будет выбран по умолчанию  
202F357C  75 00 0100 0041 0000 00000000 3000 0000  Начало меню, ширина 48  
202F358C  6D 03 0000 0000 0000 00000000 0000 0000  MCC_SET_KEYBOARD  
[b]202F359C  7C 24 0000 0800 0200 00000000 0000 0000  Меню 0x24 из 8 пунктов[/b]
202F35AC  76 24 0000 0000 C202 00000000 1000 0000  Отобразить меню 0x24 с параметром 2C2  
202F35BC  79 00 0000 0000 0000 F02BBE20 0000 0000  По пункту меню 1 переход на адрес 0x20BE2BF0  
202F35CC  79 00 0100 0000 0000 CC372F20 0000 0000  По пункту меню 2 переход на адрес 0x202F37CC  
202F35DC  79 00 0200 0000 0000 0C3C2F20 0000 0000  По пункту меню 3 переход на адрес 0x202F3C0C  
202F35EC  79 00 0300 0000 0000 48CA4821 0000 0000  По пункту меню 4 переход на адрес 0x2148CA48  
202F35FC  79 00 0400 0000 0000 AC412F20 0000 0000  По пункту меню 5 переход на адрес 0x202F41AC  
202F360C  79 00 0500 0000 0000 FC462F20 0000 0000  По пункту меню 6 переход на адрес 0x202F46FC  
202F361C  79 00 0600 0000 0000 84EA7120 0000 0000  По пункту меню 7 переход на адрес 0x2071EA84 
202F362C  79 00 0700 0000 0000 C40F8921 0000 0000  По пункту меню 8 переход на адрес 0x21890FC4 
202F363C  18 09 0100 0F00 0000 B0D5BA20 0000 0000  Если нажать кнопку "правая софт" то переход на 0x20BAD5B0  
202F364C  19 09 0100 0200 0000 B0D5BA20 0000 0000  Или если нажать кнопку "С кратко" то переход на 0x20BAD5B0  
202F365C  19 09 0100 0900 0000 48D22A20 0000 0000  Или если нажать кнопку "вкл/выкл (красная)" то переход на 0x202AD248  
202F366C  19 09 0100 0600 0000 6CD4BD20 0000 0000  Или если нажать кнопку "влево" то переход на 0x20BDD46C 
202F367C  19 09 0100 0700 0000 10629121 0000 0000  Или если нажать кнопку "вправо" то переход на 0x21916210  
202F368C  38 00 0000 0000 0000 00000000 0000 0000  Завершение МСС скрипта

 

Нас интересует 202F359C  7C 24 0000 0800 0200 00000000 0000 0000  Меню 0x24 из 8 пунктов

Разберем эту строку =)

7C 24 - это означает - mcc_menu_config 0x24

00 00 - означает нулевой кейс в конфиге.

08 00 - Количество пунктов.

02 00 - Тип меню.

 

Так вот мы выясняли, что строение этого меню находится в нулевом кейсе mcc_menu_config 0x24.

Открываем в правой части бин едита вкладку MCC. Ищем там :

20E0FFFC 7C24 MCC_MENU_CONFIG 24

Дважды щелкаем по ней. Открылось нам строение MCC_MENU_CONFIG. Дальше вспоминаем какой кейс у меню. В данном случае нулевой.

 

Вот "массив" всех кейсов в этой мсс.

20E10030:	2900	DCD	0x0029 ;B loc_20E10080  ;при 0x0000	;Переход по адресу 0x20E10080
20E10032:	2800	DCD	0x0028 ;B loc_20E1007E  ;при 0x0001	;Переход по адресу 0x20E1007E
20E10034:	EF00	DCD	0x00EF ;B loc_20E1020C  ;при 0x0002	;Переход по адресу 0x20E1020C
20E10036:	4501	DCD	0x0145 ;B loc_20E102B8  ;при 0x0003	;Переход по адресу 0x20E102B8
20E10038:	8101	DCD	0x0181 ;B loc_20E10330  ;при 0x0004	;Переход по адресу 0x20E10330
20E1003A:	DF01	DCD	0x01DF ;B loc_20E103EC  ;при 0x0005	;Переход по адресу 0x20E103EC
20E1003C:	1002	DCD	0x0210 ;B loc_20E1044E  ;при 0x0006	;Переход по адресу 0x20E1044E
20E1003E:	4D02	DCD	0x024D ;B loc_20E104C8  ;при 0x0007	;Переход по адресу 0x20E104C8
20E10040:	F903	DCD	0x03F9 ;B loc_20E10820  ;при 0x0008	;Переход по адресу 0x20E10820
20E10042:	5104	DCD	0x0451 ;B loc_20E108D0  ;при 0x0009	;Переход по адресу 0x20E108D0
20E10044:	2903	DCD	0x0329 ;B loc_20E10680  ;при 0x000A	;Переход по адресу 0x20E10680
20E10046:	8E04	DCD	0x048E ;B loc_20E1094A  ;при 0x000B	;Переход по адресу 0x20E1094A
20E10048:	D604	DCD	0x04D6 ;B loc_20E109DA  ;при 0x000C	;Переход по адресу 0x20E109DA
20E1004A:	6905	DCD	0x0569 ;B loc_20E10B00  ;при 0x000D	;Переход по адресу 0x20E10B00
20E1004C:	3006	DCD	0x0630 ;B loc_20E10C8E  ;при 0x000E	;Переход по адресу 0x20E10C8E
20E1004E:	B107	DCD	0x07B1 ;B loc_20E10F90  ;при 0x000F	;Переход по адресу 0x20E10F90
20E10050:	430A	DCD	0x0A43 ;B loc_20E114B4  ;при 0x0010	;Переход по адресу 0x20E114B4
20E10052:	2800	DCD	0x0028 ;B loc_20E1007E  ;при 0x0011	;Переход по адресу 0x20E1007E
20E10054:	8D08	DCD	0x088D ;B loc_20E11148  ;при 0x0012	;Переход по адресу 0x20E11148
20E10056:	D408	DCD	0x08D4 ;B loc_20E111D6  ;при 0x0013	;Переход по адресу 0x20E111D6
20E10058:	4209	DCD	0x0942 ;B loc_20E112B2  ;при 0x0014	;Переход по адресу 0x20E112B2
20E1005A:	150B	DCD	0x0B15 ;B loc_20E11658  ;при 0x0015	;Переход по адресу 0x20E11658
20E1005C:	FD0B	DCD	0x0BFD ;B loc_20E11828  ;при 0x0016	;Переход по адресу 0x20E11828
20E1005E:	9103	DCD	0x0391 ;B loc_20E10750  ;при 0x0017	;Переход по адресу 0x20E10750
20E10060:	FE0C	DCD	0x0CFE ;B loc_20E11A2A  ;при 0x0018	;Переход по адресу 0x20E11A2A
20E10062:	CB0D	DCD	0x0DCB ;B loc_20E11BC4  ;при 0x0019	;Переход по адресу 0x20E11BC4
20E10064:	9B0E	DCD	0x0E9B ;B loc_20E11D64  ;при 0x001A	;Переход по адресу 0x20E11D64
20E10066:	2E0F	DCD	0x0F2E ;B loc_20E11E8A  ;при 0x001B	;Переход по адресу 0x20E11E8A
20E10068:	E30F	DCD	0x0FE3 ;B loc_20E11FF4  ;при 0x001C	;Переход по адресу 0x20E11FF4
20E1006A:	D710	DCD	0x10D7 ;B loc_20E121DC  ;при 0x001D	;Переход по адресу 0x20E121DC
20E1006C:	9B10	DCD	0x109B ;B loc_20E12164  ;при 0x001E	;Переход по адресу 0x20E12164
20E1006E:	2411	DCD	0x1124 ;B loc_20E12276  ;при 0x001F	;Переход по адресу 0x20E12276
20E10070:	2800	DCD	0x0028 ;B loc_20E1007E  ;при 0x0020	;Переход по адресу 0x20E1007E
20E10072:	C211	DCD	0x11C2 ;B loc_20E123B2  ;при 0x0021	;Переход по адресу 0x20E123B2
20E10074:	FD11	DCD	0x11FD ;B loc_20E12428  ;при 0x0022	;Переход по адресу 0x20E12428
20E10076:	3812	DCD	0x1238 ;B loc_20E1249E  ;при 0x0023	;Переход по адресу 0x20E1249E
20E10078:	C912	DCD	0x12C9 ;B loc_20E125C0  ;при 0x0024	;Переход по адресу 0x20E125C0
20E1007A:	6C13	DCD	0x136C ;B loc_20E12706  ;при 0x0025	;Переход по адресу 0x20E12706
20E1007C:	F413	DCD	0x13F4 ;B loc_20E12816  ;при 0x0026	;Переход по адресу 0x20E12816

 

Нас интересует нулевой кейс. Щелкаем по: ;при 0x0000 ;Переход по адресу 0x20E10080

Смотрим:

 

loc_20E10080: ; CASE 0x0000 ; Переход с адреса 0x20E10030

20E10080: 0A2F CMP R7, #0xA ;Сравнить R7 и 10

20E10082: 55D1 BNE loc_20E10130 ;если не равно (not Z) то переход на адрес 0x20E10130

 

Здесь идет сравнение на тип меню (помнишь в мсс я показывал байт типа меню? :) )

Сравнивается байт с 0xA. Если не равно, то переход на... Вот в этом переходе описывается обычное меню. У нас был байт 02, а это не 0xA. Значит нам надо переходить по адресу 20E10130.

Для примера, можешь открыть всплывающее меню сообщений. Там будет байт в мсс с типом меню не 02, а 0A. И тогда мы будет смотреть код дальше =)

 

Итак, 20E10130.

Не совсем удачное я выбрал меню. Тут текстовые ресурсы забивают на пункты с массива индексов. Вот :

 

LDR R0, =0x214481EA ;R0 = значение по адресу (PC + 672)=[0x20E103D4]= 0x214481EA

20E10132: 0089 LDRH R0, [R0, #8]

 

Загружаем адрес 214481EA, а потом с считываем 2 байта, прибавив 8 байт к адресу 214481EA

 

Итак, в начале строения обычного меню (я буду рассматривать самые обычные случаи) - идет прорисовка заголовка. Заголовок нашего меню - это "Сообщения". Так вот, прибавляем к адресу 214481EA - 8 байт, получаем 214481F2.

Открываем вкладку "Hex", вводим адрес - 214481F2. Берем первые 2 байта (т.к. команда ldrh означает, что загружаем 2 байта). Это AB04. Переворачиваем - получаем 0x04AB. Смотрим в текстовых ресурсах, что ж это за текст. Ага, это - "Сообщения". Дальше идет дальше. Потом идет дальний переход в процу lk_get_text. Она вычисляет смещение к текстовому ресурсу. А после этого идет прорисовка заголовка - Reg_Draw_Title.

Потом идет прорисовка софтов:

20E10144:	0620	MOV	R0, #0x6	;R0 = 6
20E10146:	39F720ED	BLX	off_20D49B88	;Переход по адресу 0x20D49B88 с сохранением адреса возврата (с переключением в ARM режим)
20E1014A:	3A90	STR	R0, [sP, #0xE8]	;слово по адресу [sP + 232] = R0
20E1014C:	4820	MOV	R0, #0x48	;R0 = 72 "H"
20E1014E:	39F71CED	BLX	off_20D49B88

Сначала забивается индекс правого софта. это 0x6. Потом идет дальний переход в процу lk_get_sofk. Она подобна lk_get_text, только текстовые индексы для софтов в другом месте лежат. Потом смещение сохраняется в стек, дальше забивается индекс левого софта - это 0x48 и опять вычисляется смещение :)

 

Дальше идет сама прорисовка софтов через процу Reg_Draw_Title.

 

Потом вообще идут параметры создания меню через процедуру lk_CreateMenu,передавая различные параметры.

 

mov r2,0x3

mov r1,6

mov r0,r7

bl lk_CreateMenu

 

В R0 - должен хранится gs_DspMenu. В R1 - тип меню. в R2 - количество пунктов. Отсчет в данном случае с единицы.

В данном меню не такое простое забивание регистров.

 

20E10168: 3906 LSL R1, R7, #24

20E1016A: 090E LSR R1, R1, #24

20E1016C: 2A1C MOV R2, R5 ;R2 = R5 = 0x2 (2)

20E1016E: 201C MOV R0, R4 ;R0 = R4 = gs_DspMenu

20E10170: 3EF73CEB BLX off_20D4E7EC

В R1 должно получится 8... В R2 - в данном случае 0x2. это тип меню (обычное). Ну и в R0 копируем gs_DspMenu. И потом дальний переход в процу lk_CreateMenu.

 

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

 

Давай глянем Меню-5-5 (Настройки).

Смотрим :

202F41DC  7C 24 1800 0400 0200 00000000 0000 0000  Меню 0x24 из 4 пунктов

mcc_menu_config 24 , 18-ый кейс.

Открываем 18-ый кейс в mcc_menu_config 24.

 

loc_20E11A2A: ; CASE 0x0018 ; Переход с адреса 0x20E10060

20E11A2A: 0A2F CMP R7, #0xA

20E11A2C: 57D1 BNE loc_20E11ADE

.Переходим в 20E11ADE.

Вот прорисовка заголовка:

20E11ADE MOV R0, #0xE5 ;R0 = 229 "е"

20E11AE0: LSL R0, R0, #3 ;R0 = R0 << 3 = 0x728 (1832)

 

ЧТобы самому не мудиться, и не вычислять, что ж здесь получится, смотри коммент - в данном случае, текстовый индекс 0x728. Это настройки. Потом переход в процу lk_get_text. И т.д. Перейдем на тот этап, где в прошлый раз остановились.

 

LSL R1, R7, #24 ;R1 = R7 << 24 = 0x3 (3)

20E11B14: 090E LSR R1, R1, #24 ;R1 = R1 >> 24 = 0x0 (0)

20E11B16: 2A1C MOV R2, R5 ;R2 = R5 = 0x74E (1870)

20E11B18: 201C MOV R0, R4 ;R0 = R4 = 0x302C55F4 (808211956)

20E11B1A: 3CF768EE BLX off_20D4E7EC ;Переход в lk_CreateMenu

 

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

Дальше идет параметры меню (ширина и т.д.)

ADD	R3, SP, #0xC0	;R3 = SP + #192
20E11B20:	9E85	STRH	R6, [R3, #44]	;слово по адресу [R3 + 44] = R6
20E11B22:	2E20	MOV	R0, #0x2E	;R0 = 46 "."
20E11B24:	D885	STRH	R0, [R3, #46]	;слово по адресу [R3 + 46] = R0
20E11B26:	B020	MOV	R0, #0xB0	;R0 = 176 "°"
20E11B28:	1886	STRH	R0, [R3, #48]	;слово по адресу [R3 + 48] = R0
20E11B2A:	9620	MOV	R0, #0x96	;R0 = 150 "–"
20E11B2C:	5886	STRH	R0, [R3, #50]	;слово по адресу [R3 + 50] = R0
20E11B2E:	1922	MOV	R2, #0x19	;R2 = 25
20E11B30:	0092	STR	R2, [sP]	;слово по адресу [sP] = R2
20E11B32:	0022	MOV	R2, #0x0	;R2 = 0
20E11B34:	0123	MOV	R3, #0x1	;R3 = 1
20E11B36:	201C	MOV	R0, R4	;R0 = R4 = 0x302C55F4 (808211956)
20E11B38:	3BA9	ADD	R1, SP, #0xEC	;R1 = SP + #236
20E11B3A:	F8F76DFB	BL	off_20E0A218 ;lk_PutMenuExtInfo

 

А вот теперь идут сами пункты. Смотрим:

 

LDR R0, =0x00000967 ;R0 = значение по адресу (PC + 508)=[0x20E11D3C]= 0x00000967

20E11B40: 36F728EE BLX off_20D48794 ;Переход по адресу 0x20D48794 с сохранением адреса возврата (с переключением в ARM режим)

20E11B44: 0022 MOV R2, #0x0 ;R2 = 0

20E11B46: 031C MOV R3, R0 ;R3 = R0 = 0x967 (2407)

20E11B48: 0021 MOV R1, #0x0 ;R1 = 0

20E11B4A: 201C MOV R0, R4 ;R0 = R4 = 0x302C55F4 (808211956)

20E11B4C: 0092 STR R2, [sP] ;слово по адресу [sP] = R2

20E11B4E: 3BF7D8EC BLX off_20D4D500

 

Рассмотрим, что тут происходит :)

>>LDR R0, =0x00000967

Сначала в R0 загружаем - 0x967. Это текстовый индекс первого пункта. Смотрим, что это за текст - это SMS сообщения.

>> BLX off_20D48794

это дальний переход в процу lk_get_text

>> MOV R2, #0x0 ;R2 = 0

загружаем в R2 - нолик.

>>MOV R3, R0 ;R3 = R0 = 0x967 (2407)

Сохраняем в R3 - регистр R0. А в R0 после процедуры lk_get_text лежит смещение текстового ресурса.

>>MOV R1, #0x0 ;R1 = 0

В R1 это номер пункта меню. Это первый, т.к. отсчет с нуля.

>>MOV R0, R4 ;R0 = R4 = 0x302C55F4 (808211956)

в R0 копируем регистр R4 - это gs_DspMenu

>>STR R2, [sP] ;слово по адресу [sP] = R2

сохраняем регистр в R2 в стек. То есть нолик сохраняем =)

>>BLX off_20D4D500

ну а тут уже дальний переход в процу lk_AddMenu =)

 

Ну вот в приципе и все. Итак надо бы еще эту инфу переварить, так что дальше пока не буду объясенять ) что не ясно - спрашивай)))

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

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

X100+10Mb->E200+1Gb->M3510+2Gb->S5230 Star+2Gb->S7230 Wave+4Гб->Galaxy S GT-i9003+8Гб

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

Кстати есть предложение вынести это описание в отдельную ветку, думаю многим пригодится, а то щас здесь сообщений понапишут и не найдешь его потом

отдельная тема есть - "Создание патчей для начинающих", вот в нее и поместить...

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

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

перенести в эту ветку "Программирование и реверсинг", так, имхо, было бы удобнее...

Она тут когда то и была.Что то не найду,ранее выкладывались разборы некоторых патчей мной,Максом,еще кем-то и были ссылки в каком то из подобных топиков,чета начал искать не нашел...Мож кто то снес? :28: Что бы

здесь сообщений понапишут и не найдешь его потом.

не случилось действительно нуно в отдельный закрытый топ переносить,а ссылки на конкретные хелпы в первый закрепленный пост этой темы :59:

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

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

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

Если можно, объясните на примере удаления пункта "Цветовая схема" из меню Настройки/Дисплей, сам пункт я удалил, текстовые ресурсы поправил, а всплывающие подсказки не знаю как исправить.

X100+10Mb->E200+1Gb->M3510+2Gb->S5230 Star+2Gb->S7230 Wave+4Гб->Galaxy S GT-i9003+8Гб

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

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

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

Если можно, объясните на примере удаления пункта "Цветовая схема" из меню Настройки/Дисплей, сам пункт я удалил, текстовые ресурсы поправил, а всплывающие подсказки не знаю как исправить.

 

Выше в обяснении [AlaSToR] писал какой индекс должен быть у сплывающего меню 0А, внимательней почитай, а там так же как и в обычном, если я не ошибаюсь))

 

А говорил разобрался :)

 

Здесь идет сравнение на тип меню (помнишь в мсс я показывал байт типа меню? smile.gif )

Сравнивается байт с 0xA. Если не равно, то переход на... Вот в этом переходе описывается обычное меню. У нас был байт 02, а это не 0xA. Значит нам надо переходить по адресу 20E10130.

Для примера, можешь открыть всплывающее меню сообщений. Там будет байт в мсс с типом меню не 02, а 0A. И тогда мы будет смотреть код дальше =)

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

Может я не правильно понял или меня не понимают.

 

Пока получилось вот что (прошивка E200XEGJ2):

 

<nord offset="0x00BC1D48" from="08" to="07" type="CODE" />
<nord offset="0x00BC1D9C" from="74604821" to="90A14521" type="CODE" />
<nord offset="0x00BC1DAC" from="90A14521" to="80AA4521" type="CODE" />	
<nord offset="0x00BC1DBC" from="80AA4521" to="9423BC20" type="CODE" />
<nord offset="0x00BC1DCC" from="9423BC20" to="641CBC20" type="CODE" />
<nord offset="0x00BC1DD4" from="7900070000000000641CBC20" to="180901000F000000B0D5BA20" type="CODE" />
<nord offset="0x00BC1DE4" from="180901000F000000B0D5BA20" to="1909010002000000B0D5BA20" type="CODE" />
<nord offset="0x00BC1DF4" from="1909010002000000B0D5BA20" to="380000000000000000000000" type="CODE" />
<nord offset="0x00BBD194" from="08" to="07" type="CODE" />
<nord offset="0x00BBD1E8" from="74604821" to="90A14521" type="CODE" />
<nord offset="0x00BBD1F8" from="90A14521" to="80AA4521" type="CODE" />	
<nord offset="0x00BBD208" from="80AA4521" to="9423BC20" type="CODE" />
<nord offset="0x00BBD218" from="9423BC20" to="641CBC20" type="CODE" />
<nord offset="0x00BBD220" from="7900070000000000641CBC20" to="180901000F000000B0D5BA20" type="CODE" />
<nord offset="0x00BBD230" from="180901000F000000B0D5BA20" to="1909010002000000B0D5BA20" type="CODE" />
<nord offset="0x00BBD240" from="1909010002000000B0D5BA20" to="19090100070000006CBDF720" type="CODE" />
<nord offset="0x00BBD250" from="19090100070000006CBDF720" to="380000000000000000000000" type="CODE" />
<nord offset="0x00BBCB90" from="51079409AD096201E50B" to="9409AD096201E50B0000" type="CODE" />

 

Этот патч удаляет пункт Цветовая схема из основного и всплывающего меню, корректирует текстовые ресурсы, но в меню Настройки/Дисплей всплывающие подсказки у пунктов Яркость-Информация о звонящем не изменяются и остаются такими же как и до удаления пункта, т.е. у пункта Яркость - всплывающее меню от пункта Цветовые схемы, у пункта Дисплей при наборе - от пункта Яркость и т.д.

Объясните пожалуйста как изменить эти всплывающие менюшки.

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

За ранее спасибо.

X100+10Mb->E200+1Gb->M3510+2Gb->S5230 Star+2Gb->S7230 Wave+4Гб->Galaxy S GT-i9003+8Гб

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

Объясните пожалуйста как изменить эти всплывающие менюшки.

Попробуй так. Сначала найди мсс-строение всплывающей менюхи цветовой схемы. Перейди на начало этого блока - бери адрес этого блока (если все верно сделаешь, получишь адрес - 20BBEF10), и ищи его как данные. Должен найти адрес - 212A5930, на котором будет лежать адрес всплывающей этой менюшки (цветовых схем). Потом берешь адрес след. всплывающей менюхи (то есть пункта, который будет уже лежать вместо цветовых схем). У меня нашло 2 адреса - на первый данных не нашло, а на второй - нашел. Значит можно поставть адрес след. всплывающей менюхи - это 2104A308.

То есть, чтобы поставить в меню-настройки-дисплей на третьий пункт поставить вслпывающую менюху от РАНЕЕ четвертого пункта - надо написать:

 

.start 0x212A5930

.word 0x2104A308

 

;.word - если говоря наипростейшим языком, она переворачивает слово, т.е. 4 байта. :idea:

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

А как вообще работать самому с портами ввода-вывода ?

В частности, я хочу сам писать/читать регистры чипа фм-тюнера… у D780XEHE1…

Как вообще это делается ? В коде прошивки у меня что-то не получается найти пример.

 

зы - даташит на тюнер - http://www.electrosnab.ru/silabs/pdf/Si/Si4702-03-C19.pdf, но тут вопрос очевидно не имеет отношения к самому чипу.

Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

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

Кто нибудь знает как по номеру можно найти имя абонента в телефонной книге? Или возможно есть подобная функция? Телефон D900.

Любое дело можно откладывать на завтра сколько угодно, вот только делать все равно придется сегодня!

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

Сказите какоi программоi нузно писать патчи с нуля,и какую литературу нузно xороwо почитать.Извените за ломаныi русскиi,пишу с телефона там нет некоторыx букв. Зарание спосибо

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

программа называется бинедит! нужно знать ассемблер. изучаешь существуещие патчи и вперед! :D

  • Like 1

Мудрец стыдится своих недостатков, но он не стыдится их исправлять.

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

Объясните пожалуйста, каким образом здесь получается переход на адрес 0x20D7FEF0, и как сделать переход на адрес 0x20093904? (прошивка E200XEGD6)

2007AB38:	07A8	ADD	R0, SP, #0x1C;R0 = SP + #28
2007AB3A:	D2F756E8	BL	_off_20D7FEF0;(компенсирован) Переход по адресу 0x20D7FEF0 с сохранением адреса возврата
2007AB3E:	0821	MOV	R1, #0x8;R1 = 8

X100+10Mb->E200+1Gb->M3510+2Gb->S5230 Star+2Gb->S7230 Wave+4Гб->Galaxy S GT-i9003+8Гб

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

BL _off_20D7FEF0;(компенсирован) Переход по адресу 0x20D7FEF0 с сохранением адреса возврата

Если переход компенсирован, то делается так...

.start 0x2007AB3A

blx function ;Переходы на конструкции arm осуществляются через blx

.............

function: ;arm код

LDR R12=0x20D7FEF0+1

BX R12

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

bl 0x20D7FEF0

  • Like 1

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

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

Если переход компенсирован, то делается так...

.start 0x2007AB3A

blx function ;Переходы на конструкции arm осуществляются через blx

.............

function: ;arm код

LDR R12=0x20D7FEF0+1

BX R12

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

bl 0x20D7FEF0

А можно чуть поподробнее, просто я еще не совсем понимаю, и как определить хватит прыжка или нет?

X100+10Mb->E200+1Gb->M3510+2Gb->S5230 Star+2Gb->S7230 Wave+4Гб->Galaxy S GT-i9003+8Гб

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

А можно чуть поподробнее, просто я еще не совсем понимаю, и как определить хватит прыжка или нет?
Да пиши всегда просто bl 0x20D7FEF0 - BinEdit при комплияции сам если расстояние большое разместит процедуру длинного перехода.
  • Like 1

Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

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

Да пиши всегда просто bl 0x20D7FEF0 - BinEdit при комплияции сам если расстояние большое разместит процедуру длинного перехода.

Зачем городить огород и тратить место,если есть готовые промежуточные переходы

и как определить хватит прыжка или нет?

Расстояние между адресами не должно превышать 0x00400000.Если меньше,то просто BL,если больше,то пределах досягаемости практически для большинства функций будет промежуточный переход по BLX

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

Зачем городить огород и тратить место,если есть готовые промежуточные переходы

Расстояние между адресами не должно превышать 0x00400000.Если меньше,то просто BL,если больше,то пределах досягаемости практически для большинства функций будет промежуточный переход по BLX

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

X100+10Mb->E200+1Gb->M3510+2Gb->S5230 Star+2Gb->S7230 Wave+4Гб->Galaxy S GT-i9003+8Гб

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

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

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

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

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

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

Войти

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

Войти



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