Jump to content
Old Phone Forum

All Activity

This stream auto-updates     

  1. Today
  2. Yesterday
  3. Earlier
  4. Фактически да. С прошивкой шёл x/elf, sym и dwarf извлекаются из elf. Ещё из dwarf извлекается краткое описание функций - https://oldph.one/index.php?showtopic=17767&p=612891 Ну платформа постепенно изменяется, в каждой новой модели часть функций не совпадает. Ещё бывает у функций меняется кол-во и состав аргументов. Плеер на C3322 вообще существенно отличается от D780/D880/B5722.
  5. Файл С3322XWKL1.sym шел вместе с прошивкой? Функция music8_SetNoActionTimeFlag уже была в sym или Вы ее туда добавили? Сравнивал файл С3322XWKL1.sym c D880JPHH1_Master_original.sym и не нашел похожей функции.
  6. Давате, у меня дети до сих пор на нем Гарри Поттера слушают... А что патчи делают, можно описание?
  7. Есть в живых владельцы данного аппарата? Есть довольно много патчей для прошивки S5250XXLD1. Могу все опубликовать, если хоть кого-то интересует.
  8. Почему я именно этот код выделил, так как удивился схожести. В С3322 ldr r0,=0x914E5F3C и в J210 ldr r0,=0x212FBC9C(mcc_mplib_T_bgm_event_after_player_on_pause) и ldr r0,=0x914E5FDC и ldr r0,=0x20652B54 (mcc_mplib_T_bgm_event_after_player_on_stop). Только в С3322 есть переход на нужный адрес 90BBCB50, а в моем коде - нет. Я уже использовал ранее трассировку для поиска эквивалентов. У меня до этого получилось сделать так, что при нажатии паузы в плеере и выходе потом в фон плеер не сбрасывался и продолжал потом играть с паузы.
  9. Идентичных кодов может быть много… Надо сравнивать вызываемые оттуда функции. Имена подключить, для C3322XWKL1 ведь есть полный sym/bsig-файл - BinEdit будет все имена функций писать. Далее, для J210 выявлять вручную имена функций. Например, в случае адресов запуска MCC - часто есть трассировка с названием функции. Например 20E28D50: 8648 LDR R0, =0x206519BC 20E28D52: B1E7 B loc_20E28CB8 206519BC 9F 25 0000 0000 0000 FC196520 0000 0000 MCC_MULTI_TRACKING 206519CC 17 23 2000 0000 0000 00000000 0000 0000 Выполнить 0x23 x2=32 x3=0 x4=0 x5=0 x6=0 206519DC 18 0A 0D00 0100 0100 24992820 0000 0000 Если x1=10 x2=13 x3=1 то переход на 0x20289924 206519EC 1C 00 0000 0000 0000 D4D7A620 0000 0000 Переход на адрес 0x20A6D7D4 206519FC mcc_mplib_T_play_on_quiet_Q Значит, 206519BC = mcc_mplib_T_play_on_quiet_Q, можно на вкладке символов в BinEdit это добавить и он будет потом в листинге сразу писать имя 205FFAF8
  10. В прошивке C3322XWKL1 нашел этот код: 90AFDF14: 3979 LDRB R1, [R7, #0x4] 90AFDF16: 4029 CMP R1, #0x40 90AFDF18: 3AD1 BNE loc_90AFDF90 90AFDF1A: 0128 CMP R0, #0x1 90AFDF1C: 01D0 BEQ loc_90AFDF22 90AFDF1E: 0328 CMP R0, #0x3 90AFDF20: 36D1 BNE loc_90AFDF90 loc_90AFDF22: 90AFDF22: 002C CMP R4, #0x0 90AFDF24: 01D0 BEQ loc_90AFDF2A 90AFDF26: 022C CMP R4, #0x2 90AFDF28: 32D1 BNE loc_90AFDF90 loc_90AFDF2A: 90AFDF2A: 022C CMP R4, #0x2 90AFDF2C: 02D1 BNE loc_90AFDF34 90AFDF2E: 0120 MOV R0, #0x1 90AFDF30: BEF00EFE BL off_90BBCB50 В своей прошивке почти идентичный код: 20E28D2A: 402B CMP R3, #0x40 20E28D2C: 2AD1 BNE loc_20E28D84 20E28D2E: 0128 CMP R0, #0x1 20E28D30: 01D0 BEQ loc_20E28D36 20E28D32: 0328 CMP R0, #0x3 20E28D34: 31D1 BNE loc_20E28D9A loc_20E28D36: 20E28D36: 002D CMP R5, #0x0 20E28D38: 01D0 BEQ loc_20E28D3E 20E28D3A: 022D CMP R5, #0x2 20E28D3C: 2DD1 BNE loc_20E28D9A loc_20E28D3E: 20E28D3E: 1078 LDRB R0, [R2] 20E28D40: 0128 CMP R0, #0x1 20E28D42: 01D1 BNE loc_20E28D48 20E28D44: 081C MOV R0, R1 20E28D46: B7E7 B loc_20E28CB8 По переходу 20E28CB8: 20E28CB8: 05B0 ADD SP, SP, #0x14 20E28CBA: F0BD POP {R4-R7,PC} loc_20E28CBC: 20E28CBC: F4F6A4EA BL _off_209D67F8 20E28CC0: 0128 CMP R0, #0x1 20E28CC2: 01D1 BNE loc_20E28CC8 20E28CC4: 201C MOV R0, R4 20E28CC6: F7E7 B loc_20E28CB8 Посмотрел адрес 209D67F8 209D67F8: 0248 LDR R0, =0x3015F540 209D67FA: 0349 LDR R1, =0x00003090 209D67FC: 4018 ADD R0, R0, R1 209D67FE: 407B LDRB R0, [R0, #0xD] 209D6800: 7047 BX LR 209D6802: 0000 NOP 209D6804: 40F51530 DCD 0x3015F540 209D6808: 90300000 DCD 0x00003090 Правильно ли я копаю?
  11. А в фоне - плеер интегрирован в глобальный обработчик IDLE-событий десктопа. Там нет MCC-скриптов, там огромный thumb-код со множеством многоуровневых переходов. Автозакрытие на паузе я там удалял, но на более новой платформе. Надо найти места установки таймера бездействия плеера, это где-то в thumb-коде. Надо пробовать с C3322 перетащить патч, но там отличий очень много, напрямую на J210 не получится, надо брать схожую старую модель с sym-файлами (например D880JPHH1) и делать сначала там (сравнивая по sym C3322XWKL1).
  12. Насчет mp3 плеера в фоне: при нажатии паузы плеер прекращает свою работу через 2 минуты после выключения подсветки (например, если подсветка на 3 минуты, плеер исчезает через пять минут после паузы в фоне). Для плеера, не свернутого в фон, user_key известны, а вот для фона непонятно как их определить. Может быть это особенность только этого телефона.
  13. В системе есть много фиксированных блоков памяти разного размера, можно командой RtkGetMemory их получать (и потом не забыть командой RtkReleaseMemory их освободить). Причём кол-во блоков тех или иных размеров предусмотрено по оценке разработчиков и бывает что при запросе например 500 байт - памяти нет, а при запросе 1000 байт память есть. В инженерном меню есть монитор памяти, там блоки показаны. Memory Pool. Ещё есть функция Rtk50_11GetDynMemory для запроса больших кусков памяти, она медленнее. Если памяти надо в пределах 1кб - то обычно целесообразнее брать её в текущем стеке (смещать указатель стека вниз, потом перед выходом поднимать обратно). sub sp, sp, 0x80 ; тут с адреса SP получается 0x80 байт памяти add sp, sp, 0x80 ; когда работа с памятью закончена - надо восстановить стек Это пример как делать не следует. Там просто автор полагает что верхняя граница физического ОЗУ не используется. Но, она может использоваться например разными кешами и т.п. Во втором патче вообще надо всего 81 байт - это надо брать в стеке (перечитав соответственно остальные адреса - там есть обращение к старому [sp] - его надо тоже сместить). Глобально память ОЗУ можно брать в каких-нибудь неиспользуемых в данный момент статических путях файлов (например для многих патчей можно брать буфер имени файла видеокамеры).
  14. А как вообще определить свободную память с помощью CGSN (что должны показывать значения регисторов, если память свободна)? В asm (например FileTypes Register, Caller`s Name in SMS) может быть указана .equ FreeRAM. Она определяется с помощью cgsn?
  15. Сериал Странные дела.. Супер
  16. В патче (asm) ExtraDesktop для телефона G600XEGL1 не могу найти эквивалент p_EDSettings 0x30FFFFAC. Подскажите, пожалуйста, что означает p_EDSettings (и как его найти) и EDFuncCounter (в asm для G600 он равен 14)?
  17. Спасибо, проблема решена, все отправляется и распознается!
  1. Load more activity


×
×
  • Create New...