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

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

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

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


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

prosto, надо функцию смотреть, если переменная fy_pos больше нигде не используется можно попробовать перед/вместо MOV R0, #0x32

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

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

что бы через опред время эта координата менялась

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

Ковыряю e630 :)

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

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

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

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

А зачем голову забтвать?

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

А этому параметру можно напиример присвоить тек. время, хоть и не оригинально, но зато просто(можно идею развить).

Так что все в твоих руках...учти только что вызов этого кода-есть перерисовка часов, а все остальное приладиться :idea:

PS

потом возращалась на место

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

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

prosto, а посмотри в прошивке, вполне возможно, что такая функция уже есть. Там же заложена информация по внешнему экрану... Вполне возможно, что там то-же, что и на Е700 :)[/b]

E630XEDK2 + Nokia N72+1Gb

Всё, что нас не убивает, то нас делает сильней! (Е. Летов)

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

Уважаемые патчмэйкеры! Есть вопросы:

Вот блок МГМ для Е630(By Хацкер).

000290C8  2003      MOV R0, #0x3 R0 = 3

000290CA  2300      MOV R3, #0x0 R3 = 0

000290CC  4A01      LDR R2, =0x00CC8289 R2 = значение по адресу (PC + 4)= 0x00CC8289

000290CE  A102      ADR R1, PC, #0x8 R1 = PC + #8 = 0x290D8

000290D0  1C49      ADD R1, R1, #1 R1 = R1 + 1

000290D2  4710      BX R2 переход по адресу в R2

000290D4  00CC8289  ".М‚‰" Данные для команды по адресу 0x290CC

 

Первые 2 строчки все ясно(запись данных в переменные)

А вот с третьей проблемы

000290CC  4A01      LDR R2, =0x00CC8289 R2 = значение по адресу (PC + 4)= 0x00CC8289

Я так понял тут ведется запись переменной R2.

Она равна (PC+4)=0x00CC8289.

Причем тут PC?

...

Ладно.. Выяснил что такое PC.

РС - регистр, в котором хранится следующий адресс.

Но тогда что? Уравнение? Типа PC=0x00CC8289 - 4 ?

Или я ошибаюсь?

 

Просвятите меня пожалуйста!

Хороший враг - мертвый враг

Ericson(damps)->Nokia5525(damps)->Samsung SCH-611(cdma)->Panasonic GD75(Наконец GSM)->Samsung SGH-X100+Samsung SGH-E630->Жду Е350Е!

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

Но тогда что? Уравнение? Типа PC=0x00CC8289 - 4 ?

:lol: какое еще уравнение?? если я правильно понял что ты хочешь, то:

 

000290CC LDR R2, =0x00CC8289 R2 = значение по адресу (PC + 4)= 0x00CC8289 - это означает, что в регистр грузим значение которое находится по адресу PC + 4; РС - ты сам написал что значит, так вот прибавь к нему 4 и получишь адрес 000290D4, а что мы видим по этому адресу? правильно - данные = 00CC8289

Вот и получается что в регистр R2 мы грузим значение =00CC8289 (т.е. R2= 00CC8289 ) Просто в бинЭдит подробно всё расписано (спасибо автору за прогу :lol:)

Siemens C45 => С100 => X100 => E720 => X700 [256Mb] => SonyEricsson K750i [1Gb High Speed] => Samsung Galaxy Spica => Samsung Galaxy S

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

Спасибо что "разживали"!! :lol::lol::)8)

Хороший враг - мертвый враг

Ericson(damps)->Nokia5525(damps)->Samsung SCH-611(cdma)->Panasonic GD75(Наконец GSM)->Samsung SGH-X100+Samsung SGH-E630->Жду Е350Е!

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

Batareika,

Это организация ссылки на тело патча:

R0 - в тело патча (адрес далее) передается индекс картинки из таблицы и картинок и ему вычисляется соответственно название картинки из другой таблицы

R3 - индекс для таблиц областей обновления... чесно не знаю зачем... всегда ставлю 0

Далее конструкция имитирующая команду BL, поскольку BL не дотягивается (более 4 мб) были сделаны следующие извращения :)

В R2 загоняется адрес на который надо перейти + 1 (еденичка - указатель на Режим Thumb), сам адрес указан далее в коде по смещению РС + 4

Далее в регистр R1 - кладется адрес возврата, здесь пляшем от PC, и также прибавляем еденичку :!:

Команда BX - фактически перемещает нас на тело патча.

В патче регистр R1 (в котором лежит адрес возврата) - сначала сохраняется, а потом в конце восстанавливается в R0 и по нему также командой BX возвращаемся назад

Ковыряю e630 :)

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

Сори за репост...

 

Итак вопрос в следующем. Давайте разберемся как работет стек?

По командам PUSH и POP прочитал следующее

 

Команда сохранения регистров в стэк - PUSH

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

Т.е. если сохраняем группу регистров R0-R7,LR получается что:

 

SP = LR

SP-4 = R7

SP-8 = R6

SP-12 = R5

SP-16 = R4

SP-20 = R3

SP-24 = R2

SP-28 = R1

SP-32 = R0

Далее SP уменьшается на учетверенное число сохраненных регистров.

т.е. выходит, что SP = SP - 36 ?

И получается, что теперь для к стэку нужно обращаться по:

R0 = SP

R1 = SP+4

R2 = SP+8

R3 = SP+12

R4 = SP+16

R5 = SP+20

R6 = SP+24

R7 = SP+28

LR = SP+32

Правильно????

 

Соответственно это должна выполнять обратная команда POP:

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

... и в конце SP = SP + 36?

 

Еще вопрос - что происходит если сохранить скажем регистры R0-R1,R5,LR

а потом восстановить просто R5???, получается что значение R0 восстановится в регистр R5, а остальные будут висеть в стэке уже со смещением R1 = SP, R5 = SP+4, LR = SP+8??? Прав ли я???

И еще... :) Я так понимаю значение регистра SP - это какой-то адрес в оперативке? Как процессор его определяет, в смысле как определяется в какой конкретно адрес пишутся значения сохраняемых регистров?

Ковыряю e630 :)

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

Хацкер, всё верно

SP - это R13, а значение задаётся для разных процессов разное во время инициализации телефона. в конце оперативки. Для больщинства процессов не больше 0x400 байт

PC - R15

LR - R14

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

AlexeyK.gif

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

Хацкер,

Я там выше читал как ты про eeprom писал и str/strb....

 

Вопросы:

1. eeprom-это область флешки встроенной в телефон которая используется как оперативная память?

2. str может записывать значения регистров только в eeprom а в другие части той же самой флешки нет? Почему?

3. Как узнать где находится eeprom и свободные области в нем?

4. Каким может быть размер eeprom?

5. Что происходит с eeprom после выключения телефона?

6. Прога SFE 1.7 сможет прочитать eeprom если я укажу ее правильные адреса?

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

Я имею ввиду тот eeprom который считается оперативкой а не тот где залиты картинки мелодии.

 

8. Действует ли все это как в сисолах так и в гуми?

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

Опыт в этом направлении к сожалению отсутствует... но мне известно следущее:

1. Я бы не отождествлял eprom и оперативку. Другое дело, что при иницилизации телефона происходит ее чтение в оперативку. Оперативка при выключении телефона слетает, а значения записаные в eprom остаются - это энергонезависимая память.

2. Команды str пишут только в оперативку, я так понимаю для записи в/загрузки из eprom какого-либо значения существует какая-то группа даже не команд, а специальных функций, к сожалению мне неизвестных.

3. В этом у меня тоже вопрос :respect: Наверно можно попробовать поизучать дамп eprom.

4. У телефонов в прошивках которых я ковыряюсь (х100,х640,е630,е800,е820) - 2 метра.

5. Наверно ничего, т.к. память энергонизависимая.

6. Что за программа? Получить дамп eprom можно SGHFD v0.66

Ковыряю e630 :)

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

Давайте разбираться.

Вот тут в мануале для тела самсунг х120 есть схемка.

там нарисовано

256 Mbit flash memory

64Mbit SRAM

 

Значит еепром находится в конце флешки, а оперативка отдельно-SRAM?

И куски кода с флешки загружаются в оперативку?

Она наверно у х120 тоже около 2 мегов, больше наверно и не надо

Тогда адреса памяти оперативки могут меняться от 0х00000000 до 0х200000?

используем ldr для загрузки адреса из указанного интервала в какой-нибудь регистр потом str для загрузки другого регистра по указанному адресу оперативки?

Если я укажу больше то наверно ничего не сохранится?

 

Возникают еще вопросы Есть ли в оперативке неиспользуемые или редко используемые области в которых можно сохранять нужные на время работы телефона данные? потом естесственно их загружать но чтоб они не затирались загружаемыми из флешки кусками кода и наверно саундами и пикчами. Мне бы хоть полслова сохранить ( очень нужно).

 

Samsung Firmware Editor 1.7 читает флешку включенного телефона, до SRAM он наверно не добирается.

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

Глаза боятся руки делают

Открыл пршивку бинедитом и ткнул пальцем куда попало

Заценил там код нашел аналог с сохранением регистра

Написал свой код указав в качестве адреса записи тот адрес который увидел так сказать первым 0x03009C46

И самое главное все заработало :-)

Хотя странновытый адресок. Больше флешки. 48ой метр гдето а флешка всего 32

Какая же тогда оперативка? Ну да ладно работает и зая зая зая-бис@

 

Хацкер, Я тут где-то наверно писал или мож в другом форуме что хочу сделать для х120 режим 128*128

Нашел две функции в одной выставляешь 128 и все получается а в другой нет

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

 

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

 

и самое то главное в одной функции работает а в другой нет.

 

Вот бы переход сделат наподобие короткого но там разрыв большой.

Вопрос BX переход тоже идет с push( на push)

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

EvgenyM, с постами ты через чур перебрал...

С вопросами тоже, прочитал все твое и даже незнаю что ты хочешь спросить...

1. Больше не постим так энергично, есть кнопка редавтировать!

2. Я не пойму это у тебя вопросы, или что другое?

Тогда адреса памяти оперативки могут меняться от 0х00000000 до 0х200000?

При чем тут ЕпРом и опиратива???

Совсем нет, опиративы по мойму 4 метра на x100.

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

str это сохран. регистров, но не как не загрузка

 

PS Увижу еще подобное, буду наказывать!

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

Попробую исправиться.

Конечно не принципиально на почему оперативка имеет такие адреса (большие) 0x03009C46 т.е. 0х0300хххх?

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

Значит еепром находится в конце флешки, а оперативка  

отдельно-SRAM?

Да

Тогда адреса памяти оперативки могут меняться от 0х00000000 до 0х200000?
Адресация организована в следующем порядке (по воозрастанию адреса начиная с 0х00000000):

1. Прошивка - Bin

2. Eprom

3. Оперативка

Написал свой код указав в качестве адреса записи тот адрес который увидел так сказать первым 0x03009C46
Похоже ты и попал на оперативку

Если я укажу больше то наверно ничего не сохранится?

На х120 есть же вроде символьная инфа? Там все видно. Попытка записи командой str приведет к перезагрузке :lol:

Есть ли в оперативке неиспользуемые или редко используемые области в которых можно сохранять нужные на время работы телефона данные?
Думаю что есть, поискать можно.

Samsung Firmware Editor 1.7 читает флешку включенного телефона, до SRAM он наверно не добирается.
Програм читающих оперативку вкл. тела вроде нет.

Ковыряю e630 :)

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

MaxKis, На последний мой вопрос можно не отвечать Хацкер, на все почти ответил.Хацкеру,Спасибо

 

Наверно глупо задавать вопрос как сделать режим 128*128 для х120-го

 

Нашел код который отвечать за вывод картинки. Там указывается ее размер и координаты. Выставитлять размер больше 111 бесполезно, все равно 111 пикселов только выводится на дисплей.

Есть еще одна функция для mms. Предварительный просмотр картинок. Там ставлю 128 и все получается. Код похож по структуре. Поэтому:

 

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

Она не закрываетс софтовой полосай а именно подрезается).

2. можно ли организовать переход но не BL а что-нибудь вроде B c адреса 0х00034ХХХ на 0х00054ХХХ.(переписывать код нереально, он большой и не получается у меня) пробовал скопировать в компилятор переделал все короткие переходы длинные сами посчитались -залил и ничего не получилось.

 

Готов выслушать любые предложения.

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

Програм читающих оперативку вкл. тела вроде нет

Есть :o . Resman при помощи патча screenshot например. В патче указан адрес выходного буфкра экрана, Можно его поменять снять дамп с любой области. только при дампе Resman байты по парно меняет местами

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

AlexeyK.gif

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

2. можно ли организовать переход но не BL а что-нибудь вроде B c адреса 0х00034ХХХ на 0х00054ХХХ

Вариантов несколько. Примеры:

000B48BC  4B00      LDR R3, =0x007959A1       R3 = значение по адресу (PC + 0)=[0xFFF4B740]= 0x007959A1

000B48BE  4718      BX R3                     переход по адресу в R3

000B48C0  007959A1  ".yYЎ"                    Данные для команды по адресу 0xB48BС

Или

007959B4  B403      PUSH {R0,R1}              Сохранить регистры R0,R1

007959B6  4801      LDR R0, =MemMgr_Allocate+1  R0 = значение по адресу (PC + 4)=[0xFF86A644]= 0x00350BBD

007959B8  9001      STR R0, [sP, #0x4]        слово по адресу [sP + 4] = R0

007959BA  BD01      POP {R0,PC}               Загрузить регистры R0,PC

007959BC  00350BBD  ".5.Ѕ"                    Данные для команды по адресу 0x7959B6

Можно ещё в РС сразу адресс загрузить. Но примера не нашёл :oops: Посмотри по патчам типа Ronyx, GP, там найдёшь примеры :idea:

E630XEDK2 + Nokia N72+1Gb

Всё, что нас не убивает, то нас делает сильней! (Е. Летов)

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

CTAPbIY, не прав...

007959B4  B403      PUSH {R0,R1} Сохранить регистры R0,R1  

007959B6  4801      LDR R0, =MemMgr_Allocate+1 R0 = значение по адресу (PC + 4)=[0xFF86A644]= 0x00350BBD  

007959B8  9001      STR R0, [sP, #0x4] слово по адресу [sP + 4] = R0  

007959BA  BD01      POP {R0,PC} Загрузить регистры R0,PC  

007959BC  00350BBD  ".5.Ѕ" Данные для команды по адресу 0x7959B6

Это не B переход, а BL если расстояние более чем +/- 0x40000 байт для THUMB...

 

Переход B на более +/- 0x400 байт для THUMB я делаю обычно так:

 

PUSH R3

LDR  R3, =0x...+1;адрес перехода +1

MOV  R12, R3

POP  R3

MOV  PC, R12

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

Samsung FirmWare editor 1.7 тоже после установки патча может и опиративку читать. Сам проверил. Теперь можно все знать что в прошивке происходит во время работы.

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

Сейчас пополним знания еще парочкой МСС которые отвечают за создание меню.  

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

 

Вообщем я в BinEdit`е ввёл в строку поиска "SMS сообщения".

Получил вот это:

Расположение строки SMS

0хА36F2C

0хА3А8C4

 

И ни где нету

(1)007F2558  C8 00 0000 0000 0000 00000000 0000 0000  Подготовка окна

(2)007F2568  60 08 04FA 0004 0042 00000000 0000 0000  Создание меню с первым индексом Вxодящие из 4 пунктов

(3)007F2578  51 08 0000 0000 04F3 007F59E8 04FA 0000  Первый пункт меню Вxодящие

(4)007F2588  52 08 0000 0000 04F3 007F25D8 04FB 0000  Пункт меню Новое сообщение

(5)007F2598  52 08 0000 0000 04F3 007F5A98 04FC 0000  Пункт меню Исxодящие

(6)007F25A8  53 08 0000 0000 04F3 007F5DC8 04D9 0000  Последний пункт меню Удалить все

 

Там что то вроде этого:

 

00A36F2C  53 4D 5320 D181 D0BE D0BED0B1 D189 D0B5  Последний пункт меню edItem[%d]

00A36F3C  D0 BD D0B8 D18F 0000 4D4D5320 D181 D0BE  MCC_DELAY_S

00A36F4C  D0 BE D0B1 D189 D0B5 D0BDD0B8 D18F 0000  MCC_DELAY_S

X100 рулит!!!

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

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

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

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

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

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

Войти

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

Войти



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