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

AlexeyK

SGH Open Club
  • Постов

    316
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные AlexeyK

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

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

    PC - R15

    LR - R14

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

  3. Ни одна революция не обходится без жертв. К сожалению, в данном случае тоже. В результате библиотека конфликтует с патчами: ED, GP, Мелодиями на абонента, а также всеми патчами, использующими таблицу в патче Мелодии на абонента (в частности, Talker, MMF_Player, KeyBacklightOff v2.0).

    Прежлагаю в патч ExtendedAPI добавить изменение идентификатора прошивки, например на X10XEDG1E, это сразу избавит от проблем со старыми патчами.

    Ещё не прохобы добавить несколько часто используемых функций: загрузкасохранение файла, вывод картинки, проигрывание мелодии, с учетом что патчи находятся за границей 0x40000. Естественно необходимо засписать весь интерфейс использования

  4. AlexeyK,  

    А почему ASM файл не сохраняется, пока не откомпилируешь его? Получается, что нажимаешь сохранить файл, и файл действительно изменен во столько то, когда нажал сохранить, но в нем ничего не сохраняется!

    в версиях старше 2006.05.03 исправлено

  5. Заметил еще один "жук" в компиляторе. Несмотря на заявленное понимание команды  

     

    add rd, hs ; rd=rd+hs  

     

    компилятор переделывает ее в  

     

    add rd, hs, 0  

     

    Тоесть команду ADD R0,SP пришлось вводить через .byte

     

    ;) "жук" отловлен и исправлен

    на add r1 sp

    получил      ADD R1, SP R1 = R1 + SP

     

    причём для R8-R12 и раньше нормально было.

  6. (Почти в самом низу) Если код перенести вверх под .binid D500XEEG3 (а код ни с чем не связан, так что можно в исходнике прописывать где угодно), то генерируется совсем другой код (в тело патча вставляется странные 16 нулевых байт)

    странно, посмотрю

    .include e:datadownloadsnew26resmanpropatchesother0_5task.asm  

    Опять ошибка с путями? В прошлых версиях не нужно было прописывать пути для файлов, лежащих в одном каталоге с основным ассемблерным файлом....

    догадываюсь в чём проблема, пока можно убрать путь.

    Так вот, тут нужна вторая  Хотя, у меня она не работает (уже писал про это  ).

    посмотрю

  7. в новой версии переделан анализ строк. желательно писать завершающую кавычку и для строк в прошивке особенно после .byte, для .string не обязательно

     

    для записи - , " - ", перевод строки - n, табуляция - t и некоторые другие число, xчисло

     

    PS. В настройках можно отключить новый анализ.

  8. Если там ARM совместимый процесор то подойдёт. МСС - это только для Samsung Sysol или Swift.

    Если тип автоматически не определился то надо установить или убрать галку в зависимости от кода.

    PC. авто определение могу сделать только если у меня будет хотябы одна прошивка.

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

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

    Дело в том, что нормальная команда BLX шифруется так для Little ??F???E? (BL - ??F???F?). То что ты привёл вообще не является командой процессора.

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

     

    bcFafgEd - F и E обозначают команду BLX, если бы было F и F, то была бы - BL

    остальные формируют половину смещения 0xabcdef старший бит знаковый. реальное смещение получается PC+4+((0xabcdef << 1) and 0xFFFFFF) для a<8 или PC+4+(0xFFabcdef << 1) для a>=8

    Смещение вычисляется в обратном порядке. Только для BLX дополнительно перед высислением смещения текущий адрес PC и адрес назначания округляются до кратных 4.

     

     

    .org 0x102B4FD6  

    BLX 0x10DBD754  

    Результат:  

    102B4FD6: 00F001E8  

    102B4FDC: 03B40148019001BD54D7DB10

     

    EvgeniyZ всё правильно. команды BL и BLX могут адресовать только в диапазоне плюс/минус 0x400000 байт, переход указанный тобой значительно больше, компилятор пытается компенсировать его промежуточным переходом.

    ___rt_udiv=0x10DBD754 это адрес самой функции, поищи адрес для этой __rt_udiv

     

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

  10. Хацкер я разбирал только основную базу (LDB) пользовательские базы (UDB) хранятся в flesh, размер вроде 1 кб для X600. с ними работает другой набор функций. Их не смотрел. Раньше думал что всё сохраняется в ANSII кодировке, по этому потом нельзя восстановить русский текст, но сейчас думаю по другому. Похоже там привязка к одному языку, так как пользовательская база одна. По умолчанию 0109 (English)

  11. AlexeyK, у меня вопрос. Почему при загрузке файла sym у меня не устанавливаются сигнатуры, т.е. в НЕХе слева нет подписей переход на мсс_ ...? Этот файл я скачал с портала sym и map файлов от Vadiks'а. А второй файл(у меня есть еще один, правда он немного стар) работает на отлично.

    а в самих символах мсс_ присутствуют? это простой текстовый файл, можно поиском посмотреть. Возможно файл получен одной из первых версий SymCreater by Javer, там не было поиска эквивалентов для МСС.

  12. Открываю ARM компилятор пишу BLX off_1063782C, он выдает ошибку: "Не определена переменная

    off_1063782C". Как этот переход превратить в код?

    .equ off_1063782C 0x1063782C
    
    BLX off_1063782C

    или

    BLX 0x1063782C

     

    для установки адреса компиляции

    .org 0xXXXXXXXX

    перед кодом[/code]

  13. Проблема сохранилась: Открываю прошивку (X700XEEK6), загружаю файл сигнатур (sym), открываю патч (Убрать нарастающий звонок) в "Редакторе патчей", перехожу по адресу патча (10122ED0), открываю вкладку МСС и прога виснет! (Тоже самое происходит, если даже не загружать файл сигнатур и не открывать патч, а просто перейти по этому адресу (10122ED0) и перейти на вкладку МСС.) 

    у меня нет этой прошивки, найди такойже адрес для X700XEEJ5. Пока не удаётся повторить глюк

  14. AlexeyK, извиняюсь, что не по теме, но больше мне нигде не могут подсказать. Дело в том, что при создании патча, суть которого, в том, что при выходе из написания смс мы видим окно Вы уверены? Если нажать да (левый софт), то мы выходим на рабочий стол, здесь все работает как часы, но если нажать нет, то мы возвращаемся на написание смс, но если до этого был набран текст, то сейчас его уже нет. После нескольких операций было установлено, что при нажатии на клавишу вкл/выкл очищается или обновляется, точно не знаю, экран. Вот я и хотел бы попросить тебя помочь найти это “очищение”. Если можешь, то, пожалуйста, помоги.

     

    Посмотри MCC_EDIT_S, а там обработку события нажатий кнопок.

  15. EvgeniyZ, до какой версии обновил? последня на сегодня 2006.03.25 по ссылке в подписе.

    У меня Cel 950 и 512 Mb. Остальное вроде не важно. Описанных глюков не обнаружил. Приведи пример с адресами желательно для EJ5 или FA1

  16. вот что удалось накопать по прошивке от X140 по базам T9

     

    за работу с базой отвечает непосредственно 6 функции

    SetDataOffset ReadByte, ReadWord и ReadNibble - последовательное чтение и GetByte, GetLong - чтение по адресу

    Единицей информации в базе является полбайта и SetDataOffset адресует к полу байту. для чтения 0x20 байта выполняется следующее

    r0= указатель

    r1=0x40

    SetDataOffset

    r0= указатель

    ReadByte

    получили в R0 значение 0x20 байта.

     

    примерное описание функций

    void SetDataOffset(word handle, word index)

    word Read....(word handle)

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

    r0=указатель

    ReadWord

    в R0 будут 0x21 и 0x22 байты, причём 21 будет младшим.

     

    За чтение заголовка базы отвечает функция InitializeLDB (одинаковая в sysol, shift, agere, в siemens наверное тоже)

     

    описание таблиц по возрастанию адресов

    1. описание кнопок для T9

    2. описание кнопок для ABC

    3. Указатели (простые) как правило 2 числа. их количество определяется байтом 0x6B

    Указатель равен смещению от начала таблицы данных T9 (последня)

    4. Указатели (сложные) состоят из коэффициента (2 байта) и смещения. Полное смещнние вычисляется как роизведение коэффициента на index из базы плюс смещение.

    5. таблица ValidKeys - по 3 полубайта на индекс

    6. таблица корректировки символов по 2 бита на индекс.

    7. таблица индексов Instructions по 2 байта на индекс

    8. коды символов пунктуации (по ним определяется завершение слов) по 2 байта на символ.

    9. непосредственно база данных.единицей записи явлется полубайт (4 бита). имеет примерно такую структуру:

    Key - битовая маска кнопок (0 бит- цифра 1, 1 бит - 2 и т.д.)

    Instruction_key1-1 - номер буквы на кнопке для цифры бит которой включён

    Instruction_key1-2 - номер другой возможной буквы для этой цифры

    ....

    Inctruction_key1-N - последний вариант для этой кнопки

    Pointers - адрес следующей наборной комбинации для этой кнопки

    Instruction_key2-1 - номер буквы на кнопке для цифры бит которой включён (следующая возможная кнопка)

    Instruction_key2-2 - номер другой возможной буквы для этой цифры

    ....

    Inctruction_key2-N - последний вариант для этой кнопки

    Pointers - адрес следующей наборной комбинации для этой кнопки

    ... и так для всех возможных кнопок.

     

    Для хранения чисел используется оригинальный подход

    в заголовке есть так называемые базы (числа)

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

    Для разных данных свой набор баз.

     

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

     

    Последняя инструкция для каждой кнопки отдичается старшим битом установленным в 1. т.е. максимальная первая база не может быть больше 7 для inctruction.

     

    во вложении описание структуры заголовка баз T9 и немного структура данных по T9 применительно к X140

    У каждой базы есть 2 контрольных числа.

    1. OEM_ID - сдесь закладывается производитель и язык базы

    2. validateLDB - контрольная сумма файла.

     

    и то и другое легхко вычисляется.

     

    PS. Это в краце всё, если что не понятно спрашивайте.

    T9_fieldinfo_X140.zip

    T9_fieldinfo_X140.zip

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