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

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

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

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


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

dimastyj,

Сделал как ты говоришь. Компилирую это:

.start  0x0000AE78
blx j_mmitfs4_CheckFileExist
.data
j_mmitfs4_CheckFileExist: blx mmitfs4_CheckFileExist+1

Получил следующее:

0000AE78:	00F000E8	BLX	off_0000AE7C

	off_0000AE7C
0000AE7C:	00F000E8	BLX	off_0000AE80

	off_0000AE80
0000AE80:	03B4	PUSH	{R0,R1}
0000AE82:	0148	LDR	R0, =mmitfs4_CheckFileExist
0000AE84:	0190	STR	R0, [SP, #0x4]
0000AE86:	01BD	POP	{R0,PC}
0000AE88:	44C3DE10	DCD	mmitfs4_CheckFileExist

что ничем не отличается от:

PUSH	{R0,R1}
LDR	R0, =mmitfs4_CheckFileExist
STR	R0, [SP, #0x4]
POP	{R0,PC}
DCD	mmitfs4_CheckFileExist

 

dimastyj,

Неподскажешь адрес функции ga_SavedVoiceName для моей прошивки? ;)

(В X700XEEK6 - ga_SavedVoiceName - (0x182E8F94)).

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

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

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

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

dimastyj,

Сделал как ты говоришь. Компилирую это:

.start  0x0000AE78
blx j_mmitfs4_CheckFileExist
.data
j_mmitfs4_CheckFileExist: blx mmitfs4_CheckFileExist+1

Внимательно посмотри, что написал я, и что пишешь ты, следовательно что получается ниже, тоже не верно!

 

dimastyj,

Неподскажешь адрес функции ga_SavedVoiceName для моей прошивки? :)

(В X700XEEK6 - ga_SavedVoiceName - (0x182E8F94)).

Ну это не функция, а переменная. У себя найди ее по аналогии с использованием в x700.

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

Внимательно посмотри, что написал я, и что пишешь ты, следовательно что получается ниже, тоже не верно!

Если ты имел в виду blxx mmitfs4_CheckFileExist+1, где у blxx две буквы x, то я подумал, что ты описался. Иначе у меня пишет: "Не распознанная инструкция blxx".

 

Ещё такой вопрос:

MCC_SET_INDICATOR

Что означают пареметры (или как их там), в моём случае (выделены жирным):

75 11 0100 0000 0000 00000000 0000 0000

 

MCC_RETURN_MENU

82 00 0100 0000 0000 00000000 0000 0000

?

 

Ну это не функция, а переменная. У себя найди ее по аналогии с использованием в x700.

Поиски дали это gs_MplayerMoveButton. В чём я сильно сомневаюсь :)

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

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

Если ты имел в виду blxx mmitfs4_CheckFileExist+1, где у blxx две буквы x, то я подумал, что ты описался. Иначе у меня пишет: "Не распознанная инструкция blxx".

Нет. Я не описался. Если писать blx то это не имеет никакого смысла, получается тоже что и в твоем варианте, да с лишним переходом вдобавок. Инструкция естественно не распознается, если не написать до ее применения:

 

.macro blxx adrr
.align 2
.word 0xE59FC000
.word 0xE12FFF1C
.word \adrr
.endm

MCC_RETURN_MENU

82 00 0100 0000 0000 00000000 0000 0000

Возврат из меню на 1 уровень.

 

Поиски дали это gs_MplayerMoveButton. В чём я сильно сомневаюсь :)

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

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

Нет. Я не описался. Если писать blx то это не имеет никакого смысла, получается тоже что и в твоем варианте, да с лишним переходом вдобавок. Инструкция естественно не распознается, если не написать до ее применения:

Сделал как ты написал - всё получилось :) .

Только в коде вместо blx теперь пишется:

BL	_mmitfs4_DeleteFile

и далее:

STMIA	R0!, {}
B	loc_0000A9C4
BLX	off_0013ACC0
STMIA	R3!, {R0,R2,R6}
ASR	R6, R3, #3

это так и должно быть?

Эту конструкцию использовать для всех blx, которые у меня имеются?

 

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

Помоему нашёл через эту прошивку с названием как в х700.

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

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

STMIA	R0!, {}
B	loc_0000A9C4
BLX	off_0013ACC0
STMIA	R3!, {R0,R2,R6}
ASR	R6, R3, #3

это так и должно быть?

Переключи в ARM и посмотри этот код :)

 

Эту конструкцию использовать для всех blx, которые у меня имеются?

Почему именно для blx ? Ее можно использовать для всех вызовов функций, если bl не достает.

 

Помоему нашёл через эту прошивку с названием как в х700.

Значит продолжай поиски :)

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

Переключи в ARM и посмотри этот код

Посмотрел:

LDR	R12=mmitfs4_CheckFileExist+1(0x10DEC345)
BX	R12
DCD	mmitfs4_CheckFileExist+1

Типа в регистр R12 загрузить mmitfs4_CheckFileExist+1?

Но что этот код в общем даёт, я не понимаю :)

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

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

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

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

При портированиии это частенько случается

,вызываемые функции в твоей прошивке могут лежать гораздо дальше от адреса вызова,чем в оригинальном патче.

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

При портированиии это частенько случается

,вызываемые функции в твоей прошивке могут лежать гораздо дальше от адреса вызова,чем в оригинальном патче.

Будем знать :(

 

Можно узнать название оперативки в sym файле? :108:

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

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

Можно узнать название оперативки в sym файле?

Все адреса 0x18xxxxxx

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

Ситуация следующая:

В патче имеется строчка:

"000F0300" to="0DCC6811", 000F0300 - это свободная область прошивки или нет, если да, то мне можно брать любую? 0DCC6811 - думаю это ссылка на соотв. адрес, только вот как этот адрес воспринимается как ссылка?

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

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

"000F0300" to="0DCC6811", 000F0300 - это свободная область прошивки или нет

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

0DCC6811 - думаю это ссылка на соотв. адрес, только вот как этот адрес воспринимается как ссылка?

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

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

C этим разобрался.

А как выяснить картинка данный код или нет?

Это данные.Ищи в коде патча ссылку на адрес этого кода это или LDR или BLX,наверное

Вот именно что ссылки нет.

 

Такая вот трабла ещё:

Компилирую это:

LDR	R0, =0x0000AE75
BX	R0	
DCD	0x0000AE75

Заношу скомпилированный код в прошивку (т.е. патчу), а он мне вместо выше написанного даёт это:

LDR	R0, =0xAE754700
DCD	0xAE754700

Патч значит этот: Имя_отправителя_СМС_на_рабочем_столе_v3 с D600XEFC1. Подозреваю, что он требует Мастер патч, но не уверен.

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

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

А как выяснить картинка данный код или нет?

Открыть вкладку графика,например..

а он мне вместо выше написанного даёт это:

У тя адресация не кратна 4,сдвигай на 2 байта

Вот именно что ссылки нет

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

У тя адресация не кратна 4,сдвигай на 2 байта

Извините, конечно, за тупость но как? :):ad:

странный патч..Данные добавлены,а ссылки на них нет Ты что то напутал

Несколько раз проверил, её так и не нашёл.

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

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

Портировал тут -=Мастер-патч=- с Х700 наконец-то :laugh3: . Так вот как мне его проверить на работоспособность, кроме как портнуть патч, который требует его установку?

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

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

кроме как портнуть патч, который требует его установку?

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

Такая вот трабла ещё:

Компилирую это:

LDR	R0, =0x0000AE75
BX	R0	
DCD	0x0000AE75

Заношу скомпилированный код в прошивку (т.е. патчу), а он мне вместо выше написанного даёт это:

LDR	R0, =0xAE754700
DCD	0xAE754700

Естественно. Не обязательно указывать данные самостоятельно.

LDR	R0, =0x0000AE75
BX	R0	
.data

 

Вот и все :67:

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

dimastyj,

Сделал, получил это:

LDR	R0, =0x0000AE75
BX	R0
LSL	R0, R0, #0
DCD	0x0000AE75

Аналогично ли это вот этому?:

LDR	R0, =0x0000AE75
BX	R0
DCD	0x0000AE75

 

И ещё никак не могу понять какую роль играет в твоём патче Имя отправителя СМС на рабочем столе вот эта строчка:

   <nord offset="0x00865840" from="00000000" to="4D8E8610" type="CODE" />

Насколько я понимаю ты взял свободную область поршивки. Эту область можно брать любую свободную?

4D8E8610 - это типа ссылка на данные, которые расположены в самом патче - это понятно.

Только вот не нашёл, что ссылается на эту ссылку. Подозреваю, что вот эта 1086582C из мастер патча, только вот почему до этих данных 4D8E8610 разрыв в 40 символов?

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

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

dimastyj,

Сделал, получил это:

LDR	R0, =0x0000AE75
BX	R0
LSL	R0, R0, #0
DCD	0x0000AE75

Аналогично ли это вот этому?:

LDR	R0, =0x0000AE75
BX	R0
DCD	0x0000AE75

Да.

 

И ещё никак не могу понять какую роль играет в твоём патче Имя отправителя СМС на рабочем столе вот эта строчка:

   <nord offset="0x00865840" from="00000000" to="4D8E8610" type="CODE" />

Прописываю в таблице указатель на обработчик mcc_task .

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

dimastyj,

Помоему я тебя уже достал :67:

 

Значит, покапавшись в прошивке х700 выяснил, что ты использовал (начну с мастер патча) mcc_task 13, mcc_elseif 13 и mcc_menu_config 13, т.к. без МП в прошивки их не было на вкладке МСС. Посмотрев тему по патчам, удостоверился, что это действительно так.

У себя не нашёл mcc_task 25 и mcc_elseif 25.

Можешь сказать/показать как заставить мастер патч дружить с mcc_task 25 и mcc_elseif 25? (не знаю как точно сформулировать)

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

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

Можешь сказать/показать как заставить мастер патч дружить с mcc_task 25 и mcc_elseif 25? (не знаю как точно сформулировать)

Тебе нужно в таблице, для каждой mcc прописать ссылки на новые обработчики, т.е., ищешь в таблице тасков 25 ячейку, там у тебя должно быть 00 00 00 00 и прописываешь указатель на свой обработчик со своей новой таблицей. И так же для иф и конфига.

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

Тебе нужно в таблице, для каждой mcc прописать ссылки на новые обработчики, т.е., ищешь в таблице тасков 25 ячейку, там у тебя должно быть 00 00 00 00 и прописываешь указатель на свой обработчик со своей новой таблицей. И так же для иф и конфига.

Спасибо, разобрался как искать. Но 00 00 00 00 не нашёл :ad: Поиски дали следующее: mcc_task 21 ссылается на адрес 0D02EA0C :) , такое может быть или нет (на этот адрес ссылаются несколько тасков и ифов)? Если нет то я могу прописать указатель вместо текущего на свой обработчик?

 

Что делает вот этот код ADR R1, =0x1086502C ?

Заметил ещё, что у тебя после окончания кода МП идут LSL R0, R0, #0 с комментариями R0 = R0 << 0 = 0x400 (1024) а у меня с R0 = R0 << 0. Играет ли это роль в работе МП?

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

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

Спасибо, разобрался как искать. Но 00 00 00 00 не нашёл :67:

Как это, а почему я нашел :bx:

 

Вот ячейка свободного mcc_task 19 он же mcc_task 0x13 : 0x1148C3B4 для твоей фирмваре :)

 

Что делает вот этот код ADR R1, =0x1086502C ?

Тебе не знакома команда? Это загрузка в регистр адреса.

 

Заметил ещё, что у тебя после окончания кода МП идут LSL R0, R0, #0 с комментариями R0 = R0 << 0 = 0x400 (1024) а у меня с R0 = R0 << 0. Играет ли это роль в работе МП?

Да это вообще не играет никакой роли :bu:

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

Заметил ещё, что у тебя после окончания кода МП идут LSL R0, R0, #0 с комментариями R0 = R0 << 0 = 0x400 (1024) а у меня с R0 = R0 << 0. Играет ли это роль в работе МП?

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

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

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

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

 

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

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

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

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

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

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

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

Войти

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

Войти



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