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

AlexeyK

SGH Open Club
  • Постов

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

  • Посещение

Весь контент AlexeyK

  1. в более ранних версиях терминала, просто не было сканера портов. Но как тогда, так и сейчас можно ввести любой номер порта с клавиатуры.
  2. Дамир, в обычном терминале соединяется? Что отвечает на команды AT, ATX, ATZ?
  3. [AlaSToR], я видел, как что сделаю отпишусь, просто пака нет времени.
  4. Mako, я тебя понял. Для этого надо делать возможность устанавливать точки останова. У меня телефон X600, в нём нет 15 сопроцессора, через который это можно сделать. А без тестирования это сложно реализовать. На X600 для этих целей используются порты, но документации по процессору нет, да и врят ли бы это помогло владельцам более новых телефонов. Пока можно в том патче сделать вывод не на экран, а в COM порт, как это сделано в CGSN патче. т.е. в буфер заносятся данные и запускается команда передачи. Терминал настраивается на непрерывный приём. думаю так будет даже удобнее чем выводить на экран телефона, особенно если контролировать в нескольких точках. тогда значение LR будет указывать на конкретную точку, откуда снимаются регистры. Можно ещё не передавать в ком порт, а сохранять их в фиксированной области памяти, и потом просматривать её через монитор. Этот вариант наверное самый простой. Примерно так: push {R0-R7,LR} LDR R0,=adres ; адрес оперативки, куда будут сохранятся данные mov R1, SP ; откуда копировать mov R2, 9*4 ; 9 регистров по 4 байта bl memcopy ; адрес функции надо уточнить, как и через какие регистры что передаётся. pop {R0-R7,LR}
  5. если предыдущая кнопка сейчас будет работать нормально, я эту уберу
  6. а что там не так со второй кнопкой? с жуком постараюсь разобраться. там вроде контекстное меню появляется, пока повторить баг не получается.
  7. по поводу png - теоретически можно. если есть готовая dll по распаковке и упаковке этого формата, то можно сделать даже быстро, а так копать надо. по поводу ifg - ситуация почти аналогичная. только недавно по этому вопросу с Павлом (Pako777) беседовал
  8. [AlaSToR], я ещё не выкладывал версию с указанными исправлениями. по этому ctrl+A не работает, как впрочем и все остальные изменения
  9. сохранение проекта подправил, на всякий случай добавил ещё одну кнопку сохранения проекта. по ней не проверяется правился код или нет, а просто сохраняется как есть. РАСПЛОЖЕННЫЕ - подправил. такое есть не только на delphi, и кое какие наработки для этого есть уже в проге, но пока нет времени до конца всё реализовать. Результат видно только во время отладки. так что возможно будет. запрос на сохранение проекта теперь должен появлятся вроде бы по поводу отдельного COM модуля это отдельный разговор, планировалась его совместная работа с основной программой и её данными. Можно запускать 2 binedit один из них для терминала. кнопки для CGSN отдельные делать нет большого смысла, так как они как правило требуют дополнительных пераметров, а CGSN=6 - например в орегинальном патче делает совсем другое. плпнировалось сделать програмируемые кнопки быстрого вызова для пользовательских функций. т.е. пишется код на асме, компилируется и создаётся кнопка в терминале или скорее всего будет отдельная вкладка, по ней будет запускаться код. Думаю так возможности будит гораздно шире. при подключении код пользовательских функций загружается в тело, по кнопкам запускается, а при отключении память освобождается. по поводу remap блоков. при старте прошивки некоторая её часть копируется в оперативку. для анализа прошивки, надо чтоб эти блоки и были по соответствующим адресам. далее Блок 0x0 копируется на 0x0 с длиной 0x100 означает, что блок с адреса прошивки 0x0 длинной 0x100 размещается по адресу 0x0 в телефоне, хотя при этом вся прошивка в телефоне лежит с адреса 0x20000000 например. т.е. адрес "откуда" - это смещение в файле прошивки, а адрес "куда" - это где он ложится в телефоне. причем в компиляторе надо указывать адрес как в телефоне, компилятор при создании патча, сам разместит его по адресу прошивки, на основании данных блока remap ctrl+A - теперь "выделить всё"/"снять выделение", в зависимости от текущего выделения. при автосохранении сохраняются временные файлы с расширением bak. основные файлы переписываются только при явном их сохранении.
  10. [AlaSToR], при редактировании старых сообщений дата не меняется, а раз нет новых сообщений, то и не заглядываю. Как что то сделаю, отпишусь.
  11. Позитрон, эти команды программа сама использует. для поиска данных в прошивке и оперетивке включённого телефона, для мониторинга памяти, для запуска кода в телефоне. А в терминале можешь давать любые AT команды? которые поддерживает телефон.
  12. в принципе можно пока не выкладывал
  13. это из за добавления директивы .timeout. компиляция прерывалась. исправил видимо как то случайно. вернул как было.
  14. поправил. на всякий случай, вот прямая ссылка обновление что изменено во вложении news.zip
  15. Mako, количество тасков не ищется а задаётся фиксировано, в зависимости от модели sysol или swift. По поводу загрузки. Загружал опять с сайта или по кнопке "Да"? Та что на сайте содержит все дополнительные файлы. т.е. полная версия и всё что на сайте касается только её. А по кнопре "Да" только обновление до указаной версии. Т.е. сама программа. Для того, чтоб тем у кого уже есть полная версия меньше загружать надо было.
  16. [AlaSToR], проверь обновление. официальный релиз будет после лобавления директив .namespace и .using (для знакомых с С++ наверное объяснять не придётся) нет, не совсем так. при наличия синхронизации, использование перемещения по коду при помощи полос прокрутки приводит к аналогичным действиям в связанной прошивке. а для открытия эквивалентного места, есть кнопка - Синхронизировать. Таже, что используется для загрузки связанной прошивки.
  17. перезапуском не вылечится. чтобы этого не было, надо отключить синхронизацию прошивок. Скорее всего при изменении адресов в первой прошивке при синхронизации во второй получился адрес которого нет в прошивке. в результате нулевой адрес. я не сталкивался с таким багом, по этому если и исправил, то случайно. проверь обновление через окно информации "о програме", есть новее версия. проблему не замечал. всегда проявляется или только на некоторых адресах? если второе, то какая прошивка? у меня так 109B83BC: 08B5 PUSH {R3,LR};Сохранить регистры R3,LR 109B83BE: 6946 MOV R1, SP;R1= SP 109B83C0: 0A20 MOV R0, #0xA;R0 = 10 109B83C2: 52F7DAE9 BL _off_1160B5C0;(компенсирован) Переход по адресу 0x1160B5C0 с сохранением адреса возврата 109B83C6: 08BD POP {R3,PC};Загрузить регистры R3,PC 109B83C8: 80B5 PUSH {R7,LR};Сохранить регистры R7,LR 109B83CA: 00F037F8 BL off_109B843C;Переход по адресу 0x109B843C с сохранением адреса возврата более похожего варианта у себя в прошивках не нашёл. поправил
  18. PS по поводу второго. Правильнее всего не писать .equ my_code2 0x10BFB014 .equ insert_my_code 0x10C0EC40 .equ insert_my_code2 0x116FEC78 .equ insert_my_code3 0x10651C00 и .start insert_my_code .start insert_my_code2 .start my_code2 а использовать автоопределяемые метки .equ my_code 0x10BFB004 ;.equ my_code2 0x10BFB014 ;.equ my_code3 0x10BFB024 .equ check_password 0x102af5ec .equ insert_my_code 0x10C0EC40 ;.equ insert_my_code2 0x116FEC78 ;.equ insert_my_code3 0x10651C00 .start insert_my_code .mcc mcc_transf 0 0 0 0 my_code my_code: .mcc mcc_call 0 0 0 0 check_password .mcc MCC_TASK 0x21 0x10 0x2B .mcc mcc_transf 0 0 0 0 my_code; insert_my_code+16 (+ 16 крайне не верный подход. так как есть прошивки в которых на запись MCC отводится 20 байт, что создаст определённые трудности для переноса патча) ;-------------------------------------------------- insert_my_code2: .mcc mcc_transf 0 0 0 0 my_code2 my_code2: .mcc mcc_call 0 0 0 0 check_password .mcc MCC_IF 0x2 0x1F 0x4 0x1 .mcc mcc_transf 0 0 0 0 my_code2;insert_my_code2+16 ;-------------------------------------------------- insert_my_code3: .mcc mcc_transf 0 0 0 0 my_code3 my_code3: .mcc mcc_call 0 0 0 0 check_password .mcc MCC_IF 0x2 0x1F 0x4 0x1 .mcc mcc_transf 0 0 0 0 my_code3;insert_my_code3+16 если конечно код нельзя расположить в одном большом блоке, то для правильного размещения отдельный частей можно использоват $ (текуций адрес PC) для определения меток .start my_code .mcc mcc_call 0 0 0 0 check_password .mcc MCC_TASK 0x21 0x10 0x2B .mcc mcc_transf 0 0 0 0 insert_my_code+LenMCC; где нибудь в начале определить что lenMCC=0x10 или 0x14 [b].equ my_code2 $-2[/b] ;-------------------------------------------------- .start insert_my_code2 .mcc mcc_transf 0 0 0 0 my_code2 .start my_code2 .mcc mcc_call 0 0 0 0 check_password
  19. [AlaSToR], по поводу ощибки. Опиши подробнее как и когда возникает, чтобы я мог её повторить и локализовать. потом: 1) могу сделать, чтоб сохранялись опционально. 2) Честно говоря привдён код совсем не корректный. отдельного контроля наложения блоков нет, так как иногда это можно использовать, например для создания опций к пачу. Есть директива .setbyte, она запорняет область до указанного байта и за одно проверяет не пройдн ли байт. В таком варианте: equ my_code 0x10BFB004 .equ my_code2 0x10BFB014 .equ check_password 0x102af5ec .equ insert_my_code 0x10C0EC40 .equ insert_my_code2 0x116FEC78 .equ insert_my_code3 0x10651C00 .start insert_my_code .mcc mcc_transf 0 0 0 0 my_code .start my_code .mcc mcc_call 0 0 0 0 check_password .mcc MCC_TASK 0x21 0x10 0x2B .mcc mcc_transf 0 0 0 0 insert_my_code+16 [b].setbute my_code2[/b] ;-------------------------------------------------- .start insert_my_code2 .mcc mcc_transf 0 0 0 0 my_code2 .start my_code2 .mcc mcc_call 0 0 0 0 check_password .mcc MCC_IF 0x2 0x1F 0x4 0x1 .mcc mcc_transf 0 0 0 0 insert_my_code2+16 будет выдано сообщение об ошибке. 3) а кто сказал, что так нельзя сейчас при поиске допустимы любое положение '?' и так - ?73468C7F6A, и так - 87???8C7F6A и почти любые другие варианты. Более того '?' допустимы при поиске адресов и ссылок на них. Ещё для поиска MCC есть специальный вид сигнатур ' получение значения по сигнатуре (возврат адреса или значения) ' ' структура сигнатуры: ключи + hex код для поиска ' ключи: "+" - арифметическое смещение от адреса, задаётся в нех (8 символов) ' "&" - взать значение по адресу ' ":" - взать адрес расположения адреса ' "*" - относительное смещение по операции в адресе (обрабатываются Rx=PC+XX, Rx=[PC+XX], B, BL) ' "@" - определение сигнатуры по имени из списка сигнатур, после ключа идет 4 байта длина в HEX коде и имя ' "M" - символьная МСС сигнатура по типу MCC_TACK,param1,,,,param5;MCC_IF,param1,param2; ... paramX - hex сигнатура 00?? или 00?????? ' "S" - пропустить xxxx MCC команд, xxxx задаётся в нех (4 символа) ' "P" - взять в качестве адреса значение параметра 5 ' ' пример: +00000020&*+00000002B5FF48??01.... ' находится строка B5FF48??01...., к найденному адресу прибавляется 2, по данным инструкции 48?? определяется адрес расположения данных ' потом берутся данные по адресу и к ним прибавляется 32 (0x20). Полученное значение и будет искомым а именно "M" - символьная МСС сигнатура по типу MCC_TACK,param1,,,,param5;MCC_IF,param1,param2; ... paramX - hex сигнатура 00?? или 00?????? например, M49,,,0118 должна найти 4900 0000 1801
  20. SLYDER, есть один способ, который вроде нигде не освещён - по адресам использования этих адресов. т.е. ищешь в прошивке, где используется тот адрес для которого ищешь эквивалент. Это может быть BL переход на этот адрес, или LDR Rx,=адрес. Причём не обязательно именно тот адрес который ищешь, может быть какой то рядом. Мест где используеся адрес может быть много, надо для них искать аналогичный код в другой прошивке, как искал для первоначального адреса. Потом смотришь одинаковый ли адрес используется в найденных участках кода. Если одинаковый, то это тот который тебе нужен.
  21. SLYDER, Mako, пытался ускорить загрузку прошивок и допустил небольшую ошибку, сегодня, завтра обновлю версию на сайте, там всё работает.
  22. Снег, там кнопка есть на добавления описаний ресурсов, есть Ram_area и Flash_area. Вроде так, если ничего не забыл PS. Обновил программу на сервере. Изменения там же.
  23. Снег, вроде работала. в вверхнем поле вводится базовый адрес, от него показывается память. диапазоны памяти задаются командами в be файле
  24. во многих новых телефонах оперативка разбросана по адресному пространству. планируется добавить возможность нескольких команд RAM_Area в be файле. так же возможность заполнения этих областей при помощи CGSN патча и использования этих данных при просмотре кода. PS. в X100 и потобных тоже 2 региона ОЗУ 0x01400000-0x017FFFFF - основная оперативка (4 Мб) дополнительная микросхема наверное 0x01000000-0x0101FFFF - дополнительная и быстрая (128 кб) память процессора 0xFFFF8000-0xFFFFFFFF - это не оперативка, хотя тоже часто встречается в коде. Это порты, в том числе и управлющие. PS2. Попадались прошивки с 3 регионами.
×
×
  • Создать...