Jump to content
Old Phone Forum
  • Login

    You are currently not logged in to the forum.

    To comment, upload files, subscribe to answers - you need to login.

MaxKis

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

Recommended Posts

происходит запуск МСС, а код продолжает выполняться дальше, не ожидая завершения МСС-скрипта...

Неверно.

Завершение МСС ожидается.

Но есть МСС-функции, после которых ожидается какое-либо событие (нажатие клавиши например). Они имеют обработчик событий, функцию с таким-же именем и "_S" на конце (MCC_CONFIRM - MCC_CONFIRM_S). Вот на таких функциях выполнение МСС прекращается, но запоминается адрес останова, и при поступлении нужного события выполнение скрипта продолжится.

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

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

  • Like 5

5073IA3.png

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

Куда-то туда, где окошко будильника вызывается.

  • Like 3

5073IA3.png

Share this post


Link to post
Share on other sites

Всем привет.Есть 2 вопроса и одна прозьба

Так как я разбираю уже созданые патчы у меня есть вопрос по патчу

1)Прозьба .Раскажыте пжл про патч "Сохранение USB настройки.Ну тоисть Разписать патч,как он делался

1)Адрес пункта где после перезагрузки телефона,настройки сбрасываются на заводские.Здесь переход сюда

2)Здесь мы вызываем функцыю и так далье.

3)Здесь мы возращаемся сюда,иль делаем переход сюда.Ну по каждому адресу какуюту информацыю.Заметил что исп.мастер-патч.Иль нада сначала разобртся с мастером-патчем,а потом спрашывать?Спасибо заранье

2)Где и как смотреть обработку остальных клавиш

Пример

2083CCE0  5C 00 0000 0000 0000 00000000 0000 0000  Подготовка окна

2083CCF0  49 58 2C00 D705 0100 00000000 0E03 0000  MCC_QUESTION

2083CD00  18 09 0100 0F00 0000 B87B7C20 0000 0000  Если кнопка "правая софт" в состояни 1 то переход на 0x207C7BB8

2083CD10  19 09 0100 0900 0000 10C68320 0000 0000  Или если кнопка "вкл/выкл" в состояни 1 то переход на 0x2083C610

2083CD20  19 09 0100 0200 0000 B87B7C20 0000 0000  Или если кнопка "С" в состояни 1 то переход на 0x207C7BB8

2083CD30  1C 00 0000 0000 0000 1CEC9D21 0000 0000  Переход на адрес 0x219DEC1C

Как видим нету кнопок левая софт и I .Действия на них есть,а вот где смотреть,если хочется изм.чтобы при нажатии например левая софт,переходило на другой адрес.

Ето все ищим на вкладке код?Если да,то как?

Спасибо

___________USB__________.rar

Share this post


Link to post
Share on other sites

2083CCE0  5C 00 0000 0000 0000 00000000 0000 0000  Подготовка окна

2083CCF0  49 58 2C00 D705 0100 00000000 0E03 0000  MCC_QUESTION

2083CD00  18 09 0100 0F00 0000 B87B7C20 0000 0000  Если кнопка "правая софт" в состояни 1 то переход на 0x207C7BB8

2083CD10  19 09 0100 0900 0000 10C68320 0000 0000  Или если кнопка "вкл/выкл" в состояни 1 то переход на 0x2083C610

2083CD20  19 09 0100 0200 0000 B87B7C20 0000 0000  Или если кнопка "С" в состояни 1 то переход на 0x207C7BB8

2083CD30  1C 00 0000 0000 0000 1CEC9D21 0000 0000  Переход на адрес 0x219DEC1C

Как видим нету кнопок левая софт и I .Действия на них есть,а вот где смотреть,если хочется изм.чтобы при нажатии например левая софт,переходило на другой адрес.

Ето все ищим на вкладке код?Если да,то как?

Спасибо

Отвечу как Рейнджер из жизненого опыта :)

(0) - Я хочу есть!
(1) - Вопрос: Что есть в холодильнике?
(2) - Если в нем есть фрукты, то сьем их
(3) - Если есть колбаса, сыр, помидоры и тд, то сделаю бутерброд
(4) - Если есть суп, разогрею его..
; в холодильнике ничего не оказалось, условия не выполняются
(5) - Иду чистить картошку.. 

Ну вот такое обьяснение.. То есть если нет описания обработки клавиш, ты просто идешь дальше.. в твоем случае происходит переход с этого адреса 0x2083CD30 на адрес 0x219DEC1C

  • Like 1

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

сиспсон,

по кнопкам левая софт и ок переход на адрес 0х219DEC1C и описание каждой клавиши отдельно не обязательно...

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

т.е. переходишь по адресу 0х219DEC1C и там делаешь врезку, в которой проверяешь какая конкретно нажата клавиша, если нужная - переход на свой адрес, если не нужная - компенсация врезки и возврат...

 

примерно так:

 

.start 0x219DEC1C
.mcc mcc_transf 0 0 0 0 my_vrezka



.start 0x...
my_vrezka:
.mcc mcc_if 9 1 14 0 my_deystvie
.insertbin 0x219DEC1C 0x10
.mcc mcc_transf 0 0 0 0 0x219DEC1C+0x10

 

третий параметр IF'а - код клавиши, в данном случае - левая софт, если не знаешь, какие коды у кнопок - загляни в binedit.ini :)

  • Like 1

Share this post


Link to post
Share on other sites

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

можно, конечно, на примере патчей с опциями вручную всё это отмучать, но у меня подозрение, что всё может оказаться гораздо проще...

помогите, пожалста :)


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

Share this post


Link to post
Share on other sites

BaRsupillamy,

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

Share this post


Link to post
Share on other sites

я тоже думал, что есть... ну раз ручками, значит ручками...


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

Share this post


Link to post
Share on other sites

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

можно, конечно, на примере патчей с опциями вручную всё это отмучать, но у меня подозрение, что всё может оказаться гораздо проще...

помогите, пожалста :67:

 

Отрывок из описания компилятора

 

Компиляция опций.

 

.options [check|list] , "Наименование опций" - начала формирования блока опций. По умолчанию формируются опции типа list

.option [def|default] [, "Наименование опции"] – заголовок отдельной опции. Опция с ключом default будет использована в основном коде. Приоритет имеет последняя опция с таким ключом.

 

.endoptions - завершение формирования блока опций

 

Примечание. Внутри определения опций не допускается изменение текущего адреса компиляции. В основной код попадает кусок после директивы .options и до первой директивы .option или после директивы .option с ключом default. Длину блоков можно не подбирать, при компиляции будет произведено автоматическое выравнивание длины. Пустое место заполняется нулями, что эквивалентно команде NOP. Для опций типа check наименование опции можно не использовать, всё равно для варианта on будет использоваться первая следующая директива .option, а для off – вторая.

Пример.

 

02346:

;Код до начала описания опций

mov R1, 10

add R1, 20

;заголовок опций

.options list, "опции списком"

;этот код окажется в основном коде, если в директивах .option не будет ключа default

bl 0x12344

;описание первой опции

.option "Переход на адрес 0x3456"

 

bl 0x3456

 

;описание второй опции

.option def, "Sub R1, 100"

 

sub R1,100

 

;описание третьей опции

.option "несколько команд"

 

mov R0, R1

add R1,34

mul r0,r1

 

;описание четвёртой опции

.option "данные"

 

.word $+7

 

;завершения описания опции

.endoptions

 

;код который будет после опций

add R1,5

Compile_binedit_help.zip

  • Like 4

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

AlexeyK.gif

Share this post


Link to post
Share on other sites

огромное спасибо :67:

 

.start 0x20BCFBE4

 

.options list, "Вкл\выкл пароля на просмотр смс"

 

.option "Включено"

.mcc mcc_transf 0 0 0 0 0x20C681FC

 

.option def, "Выключено"

.mcc MCC_SET_KEYBOARD

.endoptions

 

всё верно??? не нужна ли после

 

.options list, "Вкл\выкл пароля на просмотр смс"

 

строка с дефолтовым значением? def прописано... т.е. по умолчанию будет .mcc MCC_SET_KEYBOARD???

или надо вот так написать

 

.options list, "Вкл\выкл пароля на просмотр смс"

.mcc MCC_SET_KEYBOARD


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

Share this post


Link to post
Share on other sites

огромное спасибо :67:

 

.start 0x20BCFBE4

 

.options list, "Вкл\выкл пароля на просмотр смс"

 

.option "Включено"

.mcc mcc_transf 0 0 0 0 0x20C681FC

 

.option def, "Выключено"

.mcc MCC_SET_KEYBOARD

.endoptions

 

всё верно??? не нужна ли после

 

.options list, "Вкл\выкл пароля на просмотр смс"

 

строка с дефолтовым значением? def прописано... т.е. по умолчанию будет .mcc MCC_SET_KEYBOARD???

или надо вот так написать

 

.options list, "Вкл\выкл пароля на просмотр смс"

.mcc MCC_SET_KEYBOARD

 

вроде и так и так можно, давно делалось. Всегда можно проверить :)


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

AlexeyK.gif

Share this post


Link to post
Share on other sites

можно.. проверю :67: кабель дома забыл... теперь вот скучаю на работе... пишу пока что так.. без проверки...

проверять буду завтра :)

вроде как в компилируемом патче всё красиво :)

спасибо за помощь :)


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

Share this post


Link to post
Share on other sites

.start 0x20BCFBE4

.mcc mcc_transf 0 0 0 0 0x20C681FC

 

.start 0x20C681FC

.mcc MCC_IF 0x7 0x54 0x1 0 0x20BC67BC

.mcc MCC_SET_KEYBOARD 0xC

.mcc mcc_transf 0 0 0 0 0x20BCFBF4

 

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

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


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

Share this post


Link to post
Share on other sites

BaRsupillamy, Не уверен, но по моему, когда ты поставил условие, то по переходу по нему Адрес 0x20C681FC с которого пришло это условие не запоминается, поэтому тебя и выкидывает на рабочий стол.


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

Share this post


Link to post
Share on other sites

BaRsupillamy, Не уверен, но по моему, когда ты поставил условие, то по переходу по нему Адрес 0x20C681FC с которого пришло это условие не запоминается, поэтому тебя и выкидывает на рабочий стол.

 

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

просто везде раньше вроде как делал то же самое... и всё работало...


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

Share this post


Link to post
Share on other sites

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

просто везде раньше вроде как делал то же самое... и всё работало...

 

а РАЗВЕ в стандарте не запароливаются сообщения? :)

Share this post


Link to post
Share on other sites

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

я ж учусь... вот в целях обучению и делаю, всё что в голову приходит...


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

Share this post


Link to post
Share on other sites

Хочу заменить один текстовый индекс на другой. В коде выглядит так:

20238D12:	4248			LDR		   R0, =0x00000316
20238D14:	CEF6C8EF	 BL						lk_get_text

В компиляторе пишу следующую конструкцию:

.start 0x20238D12
ldr	r0,=0x00001251

на выходе дает <nord offset="0x238D12" from="4248CEF6C8EF" to="004851120000" />, то есть как я понял, переход в lk_get_text теряется (( а если напишу так:

.start 0x20238D12
ldr	r0,=0x00001251
bl  lk_get_text

получаю вот что - <nord offset="0x238D12" from="4248CEF6C8EF002200924222031C04250321201CCFF6" to="014800F002F85112000003B40148019001BDAD33AF20" /> - как я понимаю что то уж слишком многое замещается и затирается..

 

Не подскажете, как можно попроще сделать такую замену текстового индекса? Заранее спасибо! :)

 

FRAER, Спасиб! :az: Думал о ней, но всё же надеялся что можно проще ) Оптимизация точно нет, всё таки менюшка описывается :)


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

Share this post


Link to post
Share on other sites

SantaX,

команда LDR загружает данные в регистр, следовательно эти данные должны где-то лежать, если глянуть в комментарии, расставляемые Бинедитом:

R0 = значение по адресу (PC + 264)=[0x20238E1C]= 0x00000316

т.е. индекс текстового ресурса (число 0x316) лежит по адресу 0x20238E1C

вообще можно было бы там и заменить индекс:

.start 0x20238E1C

.word 0x1251

 

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

20238D2A: 3C48 LDR R0, =0x00000316 ;R0 = значение по адресу (PC + 240)=[0x20238E1C]= 0x00000316

20238D2C: DF38 SUB R0, #0xDF ;R0 = R0 - 223 "Я" = 0x237 (567)

так что этот вариант неприемлем...

 

другие варианты решения:

как-то оптимизировать код, чтобы уместить там наш ввод числа в регистр, но записать число 0x1251 в регистр

можно как минимум только тремя командами

например:

mov  r0,0x12
lsl  r0,8
add  r0,0x51

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

 

таким образом остается последний вариант - врезка:

 

.start 0x20238D12; обращаем внимание - адрес не кратен 4, поэтому врезка займет 10 байт
ldr r0,=Metka+1
bx  r0
.data

...
...
...

Metka:
ldr r0,=0x1251
bl   lk_get_text

mov  r2,0
str  r2,[sp,0]

ldr  r2,=0x20238D1C+1
bx  r2
.data

  • Like 2

Share this post


Link to post
Share on other sites

Продолжаю работать с текстовыми ресурсами :az:

 

Название: Вперед - Переслать

Версия: 1

Прошивка: G600XEGL1

...

 

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

патч бы вышел в разы меньше

 

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

.start 0x21533F10
.word TextStringOf0316Ru

.start 0x...
TextStringOf0316Ru:
.string "Переслать"

:)

  • Like 1

Share this post


Link to post
Share on other sites

FRAER, так и хотел, правда боялся что произойдет смещение адресов.. :az:


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

Share this post


Link to post
Share on other sites

а объясните мне, пожалста, как воспользоваться патчем regview... не просто ради интереса :) а с пользой...

туплю, как всегда...


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

Share this post


Link to post
Share on other sites

BaRsupillamy,

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

 

А вообще - просто в нужном месте кода вставляешь BL RegView.

equ RegView для соответствующей прошивки указаны в описании патча.

 

Ещё можно через BinEdit запустить (через его терминал связи с мобилой, если там есть CGSN v.1.4 патч):

.plugin

push {LR}

sub sp, 0x100

bl RegView

add sp, 0x100

pop {PC}

.endplugin

Только практического смысла естественно нету.


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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now



×
×
  • Create New...