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

AlexeyK

SGH Open Club
  • Постов

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

  • Посещение

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

  1. Есть примерно такой код:

     

    .align 2

    table_EHK_info:

    .word t_msg_not_used, mcc_lk_exit

    .word t_msg_voicemail, mcc_pb_vms_idle_call_in_idle

    .word t_msg_usb_mode, mcc_set_change_usb_class

    table_EHK_size8 = $-table_EHK_info

    .word 0, mcc_lk_exit

     

    BinEdit ругается что отсутствует параметр в вычислениях…

     

    Пробовал по всякому…

    table_EHK_size8 = $-table_EHK_info

    .equ table_EHK_size8 $-table_EHK_info

    .equ table_EHK_size8 table_EHK_info_end-table_EHK_info ; сделав вторую метку в конце

     

    Не получается.

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

    Можно попробовать так

    .align 2
    table_EHK_info:
    .word t_msg_not_used, mcc_lk_exit
    .word t_msg_voicemail, mcc_pb_vms_idle_call_in_idle
    …
    .word t_msg_usb_mode, mcc_set_change_usb_class
    .align 1
    table_EHK_info1:
    table_EHK_size8 = table_EHK_info1-table_EHK_info
    .word 0, mcc_lk_exit

     

    Хотя у меня и начальный вариант без ошибок отработал.

  2. А компилятор знает команды LDRD, STRD?

    Почему-то команда LDRD R8, [R4] компилируется в ORRS R8, R4, R0, а STRD R8, [R4] - в ORR R8, R4, R0...

    Нет не знает. а из какой это спецификации? На момент разработки, таких команд не было. 64 битная арифметика не поддерживалась

  3. Например вот, при обновлённом режиме иконка life не компилируется и ошибок тоже нет.

     

    .patchname "Значки операторов RU7+BY+UA #4"

    .group "Интерфейс"

    .ver 1.1

    .patchinfo "test

    .little

    .thumb

    .binid S5610XXLL4

    .start 0x20D5D4BA

    .align 2

    table_Life:

    .word icon_Life_0, icon_MTS_0

    .patchcoment "tab"

    .align 2

    icon_Life_0: .insertdata "type4\Life_0.ifg"

    .patchcoment "lf"

    .align 2

    icon_MTS_0: .insertdata "type4\MTS_0.ifg"

    .patchcoment "mts"

     

    Если переместить все иконки в эту же папку - то компилируется, а вот из type4 - Life не компилирует а MTS компилирует. В обновлённом режиме. И опять никакого сообщения об ошибке.

    А в необновлённом режиме - компилирует обе иконки из type4 нормально.

     

    Баги можно поправить. Только из за нехватки времени необходим качественный лог:

    1. код компилируемый с ошибкой.

    2. место ошибки.

    3. как должно быть в итоге правильно.

     

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

     

    Сам код STMIA R0!,{R1-R6} компилируется. Получается 00000000: C07E. Где то в другом месте ошибка, например, нет закрывающей кавычки.

  4. ещё есть

     

    ; команды для меню

    Command name="Блокнот" path="notepad.exe"

     

    ; описание пользовательских типов данных

    TYPE Name="font china" Maska="byte:4,int:4,long:16"

     

    Сохранение описания прошивки можно включить через меню "настройка" или в be файл добавить SaveDataBin Enable="Y"

    • Like 4
  5. В файле C5212XEIB5.be указано RAM_Area Start="0x21800000" Len="0x800000".

    Разве RAM начинается не с 0x30000000 и длина не 0х10000000?

     

    При первой загрузке прошивки производится её сканирование и определение её параметров.

    Адрес загрузки, зоны ремапинга, адрес оперативки и её длинна определяются путём анализа кода прошивки. Естествено это не даёт 100% результата.

     

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

    LDR Rx, =0x????????

    LDR Ry, [Rx]

    CMP Ry, #0x0

    BNE

    (если кому интересно, сигнатура используемая для поиска: &*??48006?0?28??D1)

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

     

    можно было бы ещё попробовать использовать это

    LDR Rx=0x?????????

    LDRB Ry,[Rx]

    обращение к 1 байту происходит как правило только в оперативной памяти.

     

    Дальше все найденные Rx объединяются по AND и OR что даёт максимальный и минимальный адрес используемый для загрузки байта.

     

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

     

    И если есть чтение из этой области по 1 байту, то скорее всего там тоже оперативка, например та, что встроена в сам процессор.

     

    На вкладке МСС некоторые блоки строк затенены серым цветом. Это, то что не используется?

     

    сиспсон верно ответил, цветовое выделение сделано для разделения функционально независимых блоков МСС.

    • Like 1
  6. не помню с какой версии, но уже довольно давно ....

     

    поправил.

     

     

    тоже внесу свои пять копеек smile.gif

    Алексей, можно сделать, чтоб при сохранении патча в .vkp адресация была абсолютной а не относительное

     

    можно попробовать в начале кода написать директиву

     

    .baseload 0x0

     

    З.Ы. И еще некорректно работает поиск в прошивках с базой 0х80100000.

     

    можно по подробнее?

    какая прошивка (желательно со ссылкой) и что именно ищется. для примера

     

    AlexeyK,

    В новых прошивках BinEdit не правильно считает case-переходы...

    Например, для E2120XEIL1:

     

    Такие case в текущей версии совсем не определяются. Будет время и прошивка под руками постараюсь добавить.

    BinEdit.7z

    • Like 9
  7. не помню с какой версии, но уже довольно давно у меня стал плохо отображаться текс в кодировке UTF-8:

    Это наверное с тех пор как для преобразования из UTF8 в то что можно показать стал использовать API Windows вместо своей функции. Видимо что то не срослось. Скорее всего не показываются строки которые содержат не полные символы UTF8. Посмотрю что можно сделать.

     

    и еще, почему BinEdit выравнивает текст по адресу кратному 2? Ведь строка это не word и не short и обрабатывается она в любом случае побайтно...

    причем выравнивает не всегда, а только когда перед ней стоит метка

     

    таким образом теряются драгоценные байты, а их так порой нехватает... :jokingly:

    и еще, странно ведет себя директива .align при работе с нечетными адресами

     

    или я ошибаюсь? :scratch:

     

    с четными адресами все нормально...

    Это никогда не проверялось, на sysol строки выравнивались по 4 байта.

    Проверю и поправлю

    • Like 3
  8. Привет Алексей :(

    А можно сделать, чтоб по кнопке "Копировать только код" копировался только код, без комменрариев :)

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

     

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

     

    Ну и в догонку - вчера пробнул сделать скрипт коррекции переходов для IDA через BE - в процессе мы вылетели в Runtine error '13' - Type mismatch =)

    Проша - M3510XEHJ2/G600XEGL1.

     

    поправил

     

    ну тогда еще: http://OldPh.one/ipb.html?s=&showto...st&p=459296

    примеры прошивок:

    M3510XEHJ2

    C5212XEIB5

    B5702XEIE1

     

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

    BinEdit.7z

    • Like 6
  9. огромное спасибо :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

     

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

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

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

    помогите, пожалста :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
  11. Алексей а можно сделать загрузку и работу с сегментированными файлами???

    Просто прошивка Broadсom устроена так что одна часть НЕПРЕРЫВНОГО файла грузится по одному адресу, а вторая по другому адресу расположенному далеко от первого.. то есть получается разрыв между частями...

    Например файл размером 45 мб, первая часть грузится по адресу 80100000 а начиная где то со второй трети файла грузится на адрес 8С000000...

    так это было предусмотрено начиная с первых версий. для этого служат директивы REMAP в be файле.

    указывается смещение в прошивке, на какой адрес и длинна блока

    • Like 4
  12. Вчера пробовал обновить.Установилась 2007 года.Хотя пишется что доступна 2008.09.18 .Можно прямую сылку на обновление?Спасибо

    Не было дуступа к сайту, чтобы залить версию от 26 февраля. Сейчас вроде сайт ожил.

    Проверяйте обновление через программу, там пишется какая версия актуальная на сайте по кнопке обновить.

     

    PS. Хотя сейчас не знаю что там вообще на сайте залито, так как не было доступа.

    • Like 1
  13. в результате разницы абсолютно никакой, но, имхо, с точки зрения программирования второй вариант грамотнее... :)

     

    Параметр №2
    бит 0 - OK
    бит 1 - ?
    бит 2 - ?
    бит 3 - ?
    ...
    

    открываешь калькулятор и сочиняешь себе маску как угодно душе... :)

     

    В компиляторе вместо 0x.... можно использовать 0b...

     

    биты в такой последовательности 0bFEDCBA9876543210

    • Like 2
  14. Обнаружил ошибку в BinEdit.

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

    .code 32

    STRH R1 [R0]

    В результате получается код 001080E1 что соответствует ORR R1 R0 R0

    должно скомпилироваться в B010C0E1

    Тоже самое с инструкцией LDRH R1 [R0] без разници какие регистры

    STRH R1 [R0,0] так нормально компилирует, но в любом случае спасибо за баг, исправлено

     

    При применении некоторых патчей выскакикает окошечко "Данные отмены в блоке не совпадают с оригиналами. Обновить данные отмены?"

    Можно ли сделать кнопочку "Да, для всех". А то иногда замучиваешься жать "Да" по 30-50 раз. smile.gif

    Заранее спасибо

     

    Теперь правильно проверяет блоки отмены. Есть возможность подтвердить только 1 раз для всех блоков.

    • Like 5
  15. AlexeyK :) нет, числа перевожу калькулятором в виндовсе :idea:

    а смысл небольшой, но есть. вот например на той картинке - ето урывок с прошывки Х700....с3, там третий и четвертый адреса сверху расчитывают размер хипа в джаве (по какой формуле думаю Вы сами знаете :idea: ), третий адрес есть полностью независимым (потому ево и редагируют патчами на увеличения хипа), вконце 4-го адреса можно увидеть результат в десятеричной системе. так вот представте теперь есть некие независимые (от прошывки, тоесть задаются 1 раз а дальше от них чонить там зависит) величины как ета, имеют так сказать значение редкое (число например 30704-десятеричное) но нам ведомое, как нам теперь найти ево? (звучит бредово но я шас в такой ситуации :idea: ) было бы неплохо если поиск велся хотябы с учотом соседних(1-2) адресов как в моем случае искать надо, думаю ето пригодилось бы не толко мне :67:

     

    Для поиска данных типа

    LDR Rx, =0xXXXXXXXX

     

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

     

    Для поиска данных получаемых вычислением, всё сложнее. Как вариант, можно скомпилировать варианты получения этих чисел и искать как HEX или сигнатуру.

    • Like 1
  16. как зделать поиск по выделенным числам?

    c1oP2FU54W.png

    это готовые переведеные числа.

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

    Или вопрос по переводу чисел из десятеричной системы счисления в шестнадцатеричную? :(

  17. Московская симка, тариф «подружки», включена услуга «соседние регионы».

    Однако, они врут! Во владимирской области за звонки на московский мтс - сдирают по 4руб за каждую минуту! Хотя вроде как смысл услуги «соседние регионы» чтобы всё было как дома - ведь тариф имеет 4руб только за первую минуту, а не за каждую!

     

    Вобщем, вопрос.

    А если ещё подключить любимый номер ?

    Будут ли звонки из владимирской области (симка московская!) с услугой «соседние регионы» на «любимый номер» бесплатны (как обещано в описании услуги) ?

    Или там тоже наврали ?

    Если часто бываешь во владимирской области, то там есть тарифный план "Стимул" звонки с него на телефоны владимирской области вроде 3 к секунда, на телефоны МТС Москвы также, по остальным операторам москвы точно не помню. Услуга "Соседние регионы" платная - 6.2 р в месяц, но зато в москве пользуешься телефоном как по Владимирской области.

    Про "любимый номер" лучше уточнять в офисе МТС. (С диктофоном :ad: )

     

    PS. Услуга "Соседние регионы" сейчас вроде на всех тарифах платная, причём на московских тарифах стоит около 30р в месяц.

  18. Вот такой баг есть:

    Некоректно опознает MSR ( E321F0D3), в версии за сентябрь 2008 он ее понимал как TEQ, но сейчас считает как DSP Extension for AMR v5 .

    Делаю ARM эмуллятор, может чего еще найду

    поправил, и компиляцию за одно тоже

    • Like 4
  19. Продолжу... :128:

     

    2 AlexeyK !

     

    На новых прошивках (смотрел B5702 и C5212) не раскрываются подфункции на вкладке MCC.Вернее на B5702 вообще не расрываются, а на C5212 только одна-MCC_RP, и раскрывает таблицу тасков.

     

    Можно ли как-то победить это?

     

    Можно, нужна ссылка на прошивку.

     

    И какая версия программы (недавно правил определение МСС для новых прошивок)

  20. А как скомпилировать патч для Agere в SMP ?

     

    К примеру вот:

    .little

    .thumb

    .binid C3110PDIC2

    .start 0x216017DC

    B 0x216017EA

     

    Получается:

    <nord offset="0x1425974" from="05D0" to="05E0" />

     

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

    руками редактирую:

    <nord offset="0x216017DC" from="05D0" to="05E0" />

     

    В настройках компилятора, специально для компиляции патчей S3 есть настройка - "При компиляции S3 не подменять реальные адреса". Если выбрать этот пункт, то в S3 патчах будут сохраняться реальные адреса, а не смещение от начала прошивки как в патчах smp и других. Для smp такой настройки нет, но если надо можно добавить.

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