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

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

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

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


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

Надумал было я портировать патч "Оповещение о пропущенном вызове" на свой C5212.

Скачал исходник, любезно предоставленный BaRsupillamy отсюда. А там так много разных букв и цифр :44: . Боюсь сразу не осилю.

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

Люди добрые, поделитесь исходником более младших версий (0.х или 1.х ). Можно в личку.

Заранее благодарен.

 

P.S. Отдельной темы, где можно просить исходники патчей, не нашел, поэтому написал здесь.

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

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

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

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

Знающие люди, подскажите адреса для C5212XEIB5 переменных:

mmi_quiet_mode_onoff

mmi_vib_on_flag -------------- уже нашел - 305F097B

s_clk_DateTimeCurrent

gs_IdlePopup

Найти аналоги сам не могу, т.к. это все адреса в оперативке (0x3ХХХХХХХ).

Или поделитесь sym-файликом c этими адресами.

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

пора бы уже научиться искать такие эквы :ad:

 

как всегда, открываем 2 копии BE, в первой загружаем прошивку, для которой эти адреса известны (в моем случае это M3510XEHJ2), во второй - прошивку, для которой будем искать...

 

вставляем название оперативки в поле поиска по символам, находим ее и жмем кнопку А с лупой:

1.png

 

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

 

я просто тыкнул случайным обазов в результаты поиска:

2.png

 

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

 

ладно, теперь речь о нашей трассировке, как по ней искать? а искать будем по тексту трассировки, в данном случае указатель на текст трассировки передается в ф-ю в R1, смотрим какое так значение и переходим по этому адресу, открываем вкладку HEX

3.png

 

выделяем несколько строчек, ну или байт, в зависимости от длины строки (желательно подлиннее) и копируем как обычный хекс

 

вставляем в поле поиска во второй BE и ищем как хекс (просто жми Enter)

4.png

 

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

получилось неслолько результатов "Ссылка на данные XXXXXXXX", нам нужно выбрать правильный из них, просто открываем по очереди и смотрим

тут нам опять везет - правильный результат первый в списке, как определили? к регистру R1 после загрузки указателя ничего не прибавляется и не отнимается

(вообще может оказаться, что результатов "Ссылка на данные XXXXXXXX" может не быть ни одного, тут следует не забывать, что этот указатель может формироваться

LDR R1,=0xXXXXXXXX

ADD R1,0xZZ

или

LDR R1,=0xXXXXXXXX

SUB R1,0xZZ

так что придется искать по нескольким соседним нашему адресу адресам

если непонятно о чем я - могу позже объяснить...)

 

теперь поднимаемся немного вверх, до нашего искомого адреса

5.png

 

все, добавляем адрес в сим :)

 

посмотрим теперь адрес s_clk_DateTimeCurrent

начало действий аналогично предыдущему поиску:

6.png

 

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

7.png

 

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

второй результат вообще для поиска не подходит, пробуем третий :)

а вот третий стоит попробовать, пробуем:

8.png

9.png

 

искомая оперативка найдена :)

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

адреса для C5212XEIB5 переменных:

.equ s_clk_DateTimeCurrent , 0x30414A7C

.equ gs_IdlePopup , 0x3053BFDC

.equ mmi_quiet_mode_onoff , 0x305F0979

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

пора бы уже научиться искать такие эквы :ad:

Спасибо за подробную инструкцию. :)

 

Когда-то я подумывал о таком способе, но в час ночи после 14 часов работы вылетело из головы. К тому же и спать хотелось. Но в будущем буду использовать способ. :)

 

LDR R1,=0xXXXXXXXX

ADD R1,0xZZ

или

LDR R1,=0xXXXXXXXX

SUB R1,0xZZ

так что придется искать по нескольким соседним нашему адресу адресам

если непонятно о чем я - могу позже объяснить...)

Здесь понятно. Спасибо.

 

.equ s_clk_DateTimeCurrent , 0x30414A7C

.equ gs_IdlePopup , 0x3053BFDC

.equ mmi_quiet_mode_onoff , 0x305F0979

Спасибо. А то бы пришлось еще пол-ночи сидеть. :)

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

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

Хочу портировать на S5620XEJB3 патч вибра в момент поднятия трубки, вот что имеетса:

.equ CallVcSvIsOutgoingBoxActi	 0x8C572C82
.equ VibStart								   0x81044608

;===================================================
.start 0x817DE1B0   
BLX	 CallVcSvIsOutgoingBoxActi+1
CMP	 R0, #0
BEQ	 local
BL	  subroutine
LDR	 R3, =0x8C61AC32+1
BX	  R3
; ---------------------------------------------------
local:
LDR	 R3, =0x8C61AC32+1
ADD	 R3, #6
BX	  R3

; =============== S U B R O U T I N E =======================================
subroutine:
PUSH	{R0-R7,LR}
MOV	 R0, #0x30
MOV	 R1, #0x96
MOV	 R2, #0
MOV	 R3, #1
BLX	 VibStart+1
POP	 {R0-R7,PC}
; ---------------------------------------------------------------------------

Почемуто вместо вибры - ребут. Подскажите где косяк закралса?

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

Хочу портировать на S5620XEJB3 патч вибра в момент поднятия трубки.

Почемуто вместо вибры - ребут. Подскажите где косяк закралса?

А где врезка? :) Но ребут не из-за этого конечно :)

 

Вот и ошибка. Врезка по адресу, не кратному 4, займет 10 байт, а не 8. Поэтому затираешь исходный код.

Вот так бы сделал я:

.equ VibStart									   0x81044608
.equ CallVcSvIsOutgoingBoxActi		 0x8C572C82

.start 0x8C61AC28
LDR	 R3, =ADD_VIBRO+1
BX	  R3

.start 0x817DE1B0
ADD_VIBRO:
MOV	 R0, R4
BLX		CallVcSvIsOutgoingBoxActi+1
BL	  GENERATE_VIBRO
CMP		R0, #0x0
LDR	 R3, =0x8C61AC30+1
BX	  R3

GENERATE_VIBRO:
PUSH	{R0-R7,LR}
MOV		R0, #0x30
MOV		R1, #0x96
MOV		R2, #0x0
MOV		R3, #0x1	
BLX		VibStart+1; void VibStart (char level, int onPeriod, int offPeriod, int count);
POP	 {R0-R7,PC}

 

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

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

.equ CallVcSvIsOutgoingBoxActi	 0x8C572C82
.equ VibStart					  0x81044608
.equ MakeVibra				  0x817DE1B0
;===================================
.start 8C61AC2A 
		   LDR		R3,=MakeVibra+1
		   BX		  R3
;===================================================
.start 0x817DE1B0   
BLX	 CallVcSvIsOutgoingBoxActi+1
CMP	 R0, #0
BEQ	 local
BL	  subroutine
LDR	 R3, =0x8C61AC32+1
BX	  R3
; ---------------------------------------------------
local:
LDR	 R3, =0x8C61AC32+1
ADD	 R3, #6
BX	  R3

; =============== S U B R O U T I N E =======================================
subroutine:
PUSH	{R0-R7,LR}
MOV	 R0, #0x30
MOV	 R1, #0x96
MOV	 R2, #0
MOV	 R3, #1
BLX	 VibStart+1
POP	 {R0-R7,PC}
; --------------------------------------------------------------------------- 

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

serega65, ну сказали же - врезка занимает 10 байт, а не 8. Поэтому возвращаться в 8C61AC32 нельзя! ты вместо кода "mov r0,r4" - попадаешь на данные для врезки!

Нужно при врезке в 8C61AC2A выходить минимум! в 8C61AC34!

Я бы все-таки на твоем месте сначала бы получше поизучал все это дело, а уж потом брался за такие патчи.

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

' date='17.10.2010, 10:22' post='543004']

serega65, ну сказали же - врезка занимает 10 байт, а не 8. Поэтому возвращаться в 8C61AC32 нельзя! ты вместо кода "mov r0,r4" - попадаешь на данные для врезки!

Нужно при врезке в 8C61AC2A выходить минимум! в 8C61AC34!

Я бы все-таки на твоем месте сначала бы получше поизучал все это дело, а уж потом брался за такие патчи.

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

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

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

Люди хочу портировать патч VideoSizeLarge под s5230wxeil1

вот патч:

<?xml version="1.0" encoding="Windows-1251"?>

<patch version="0.5">

<info title="VideoSizeLarge" id="67FD3DA2" group="Видео" version="1">

<description short="Патч позволяет просматривать на телефоне видео разрешением до 400x240." />

<author nickname="master" fullname="" status="Автор" email="" www="" icq="" donate="" />

</info>

 

<patchdata firmware="S5230MXEIL2" >

<changes>

<nord offset="0x801909C4" from="4130" to="9130" />

 

</changes>

 

</patchdata>

 

</patch>

вопрос: мне нужно только поменять nord offset код и всё или ещё чё ? Помогите пожалуста!

Siemens MC60 >> Sony ericsson w810i >> Samsung GT-S5230W (S523WXEIL1)

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

Люди хочу портировать патч VideoSizeLarge под s5230wxeil1

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

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

Есть такая проблема:

Мне нужно сделать ссылку типа BLX для вызова функции, но компилятор делает по своему, вероятно потому что адрес далеко. Он делает ссылку на свой адрес в патче где пишет загрузку адреса в PC. Ето нормально?

И можно ли вместо BLX сделать:

LDR R5,=adr

BX R5

Именно интересует можно ли в R5, а то такого в патчах не видел.

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

И можно ли вместо BLX сделать:

LDR R5,=adr

BX R5

нет, BLX - это вызов, а BX - это переход

 

можно сделать так:

LDR R5,=adr

BLX R5

 

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

 

LDR R5,DAdr ;Именно без знака =, это важно

BLX R5

...

...

...

DAdr:

.word adr

 

Именно интересует можно ли в R5, а то такого в патчах не видел.

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

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

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

? неизвестний параметр

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

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

Я так думаю вопрос относился к знаку =. Объяснение из хелпа от Рейнджера:

Если написать LDR r0, 0x666777, то в r0 будет помещено значение, которое находится по адресу 0х666777. (4 байта)

Если написать LDR r0, =0x666777, то в r0 собственно и будет лежать шестнадцатеричная циферка 0x666777. (правильней назвать числом.. А то большая слишком циферка :( )

  • Like 4

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

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

Как заставить функцию MsgBox думать что я нажал уже что-то, что бы окно не показывалось. отключение окна не идёт, нужен только что бы был результат.

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

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

Lyfan,

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

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

Да-да ..Полностю согласен ..Писать здесь уже лутше с 0 ..

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

и стоит ли пытаться?

Нет не стоит)))

Сложность программы растет до тех пор, пока не превысит способности программиста!!!
Ссылка на комментарий
Поделиться на другие сайты

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

РЕБЯТ, СИЛЬНО НЕ БЕЙТЕ) вот решил попробвать научится портануть пару пачей с одной прошивки s5230 на другую s5230! нашол фаг, скачал бин едит, 2 прошивки! и дальше дело не здвинулось)))))) фаг по старым телефонам! короче загружаю прошивку и бин едит начинает задавать много вопросов на которых в фаге не слова! вот например введите индификатор прошивки, уточните адрес загрузки и т.д. ? методом тыка понажимал! вроде как прошивка загрузилась! но выскочило пару предупреждений что чтото не найдено! взял патч от той прошивки что загрузил и ввел в нех редакторе <nord offset="0x8C1499C4 (выделено красным) в итоге ничего не получил! обьясните хоть вкратце минимум того что нужно знать :(

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

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

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

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

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

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

Войти

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

Войти



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