FRAER Posted May 12, 2009 Report Share Posted May 12, 2009 Чё-то мне лень искать адреса... да и времени особо нет...Поэтому: "Хочешь накормить человека - дай ему рыбу, хочешь чтоб он никогда не голодал - дай ему сеть." Вот и я хочу дать вам своеобразный "невод" - небольшую инструкцию "Как найти адрес того или иного меню" SpoilerЧто для этого нужно?1. Естественно нужен телефон.2. Он должен быть прошит, установлен патч "CGSN"3. Вам нужна прога BinEdit (где скачать и кому сказать за неё спасибо, надеюсь, знаете )4. Комплектный (сквозной) шнурокНу и пару минут свободного времени... Итак, наши действия: Подключаем телефон к компу в режиме модема (PC Studio) Запускаем BinEdit Открываем в BinEdit нашу прошивку Запускаем встроенную в BinEdit терминалку: Когда окно откроется, жмём на кнопку для подключения к телефону: Когда телефон подключится - внизу, на статус-баре появится надпись "Подключен" и модель нашего телефона: Если телефон не подключился - в опциях необходимо выбрать правильный COM-порт, на этом конкретно не останавливаюсь, думаю проблем нет... Так, ладно, телефон подключен, что же тут делать?!Вот тут нужно почитать описание команд CGSN-патча, в данном случае описание выглядит так:AT+CGSN? - выдаётся расширенная (многострочная) справка по всем командам. AT+CGSN=0,"AAAAAAAA","LLLL" Читает массив байт с адреса AAAAAAAA, длинной LLLL. Если L больше 100hex - выдаст сообщение об ошибке.Попытка чтения за пределами ОЗУ - ребут. AT+CGSN=1,"AAAAAAAA","WWWWWW..."Запись массива байт WWWWWW по адресу AAAAAAAAПопытка записи за пределами ОЗУ - ребут. AT+CGSN=2,"LLLLLLLL"Запрос памяти размером L через RtkGetMemory. Вернёт начало свободного куска. Правда, при попытках запроса более 60кб мобила вешается (не выдавая ошибку). AT+CGSN=3,"AAAAAAAA"Освобождение ранее выданной памяти (RtkReleaseMemory). AAAAAAAA - это то значение которое ранее было выдано в CGSN=2.Повторная попытка освободить уже освобождённую память приведёт к ребуту. AT+CGSN=4,"XXXXXXXX","1234567811111111...CCCCCCCC..."запуск кода с адреса XXXXXXXX с параметрами R0=12345678,R1=11111111,...,R12=CCCCCCCCзадаются все регистры с R0 по R12. SP,LR,PC - игнорируются.Регистры передаются в виде LitteEndian.Регистры передаются последовательно - т.е. если надо например только R12 передать - то надо передавать и прешествующие - R0-R11.Возврат - 1234567811111111...CCCCCCCC - все R-регистры R0-R12 Используется это так: по CGSN=2 получаем память, пишем туда по CGSN=1 исполняемый код,потом по CGSN=4 его запускаем, потом после возврата - по CGSN=3 освобождаем память.Код может быть как Thumb так и ARM: соответственно указывайте правильный адрес запуска - для Thumb XXXXXXXX+1. В исполняемом коде не потеряйте LR, возврат по нему. Режим CGSN=4 поддерживает BinEdit, он сам запросит память (по CGSN=2), запишет туда код и правильно его запустит. См инструменты - подключение к телефону - запуск.При компиляции кода - рекомендуется использовать директивы .plugin/.endplugin AT+CGSN=5,"AAAAAAAA","LLLLLL","SSSSSSSSSSSSSSSS"Поиск в памяти hex-массива. Допустима маска ?? на места отдельных байт.AAAAAAAA - стартовый адрес, L - длинна области поиска (если выйдете за пределы ОЗУ - мобила повиснет просто), SS - искомые байты. Пример использования - ищем где мобила хранит имя файла диктофона: редактируем имя на 223344551 (врядли такая последовательность будет где-то ещё), и затем ищем: AT+CGSN=5,"30000000","F00000","323233333434353531"Потом найденные места перепроверяем по CGSN=0.Мест причем несколько обычно, так что надо перезапускать поиск после найденного адреса. Режим поиска CGSN=5 поддерживает BinEdit.См инструменты - подключение к телефону - поиск.Не забудте задать адекватную длинну блока - иначе при выходе за пределы ОЗУ мобила повиснет AT+CGSN=6,"AAAAAAAA" - читает сразу 32-битное слово с указанного адреса. Применяется для работы с аппаратными портами AT+CGSN=7Возвращает адрес текущей MCC команды.Очень удобно искать в прошивке адреса тех или иных меню, и точек вызова разных самсунговских программ. AT+CGSN=8,"AAAAAAAA"Запускает MCC-интерпретатор с адреса AAAAAAAA. Позволяет таким образом проверятьправильность найденный адресов программ для карты прошивки (ну чтобы в карте прошивке вешать там диктофон, калькулятор и т.д. - при помощи этой команды можно проверить чтобы найденные адреса работали правильно, не прошивая десятки раз мобилу для проверки). AT+CGSN=9,"AAAAAAAA","WWWWWWWW" - пишет сразу 32-битное слово W по адресу A.Применяется для работы с аппаратными портами Все числа - в шеснадцатеричном виде (т.е. 10 тут - это 16 человеческое), с ведущими нулями, если Long - то LittleEndian.Все числа (кроме номера режима CGSN) должны быть в кавычках (иначе, они будут обработаны неадекватно). Какие из команд нам понадобятся - я подчеркнул И так, как же с ними работать?! Для начала определимся, адрес чего мы будем искать, ну допустим найдём адрес "Мои файлы"Теперь думаем - из каого меню можно попасть в "Мои файлы"... Самое простое - есс-но через главное меню!Нажимаем на телефоне кнопки - переходим в главное меню...Теперь через терминал даём команду AT+CGSN=7 и жмём Enter:Как видно, ниже появилось 16ричное число и слово ОК, так вот, это число - адрес текущей MCC-команды, копируем его:Теперь переходим в главное окно BinEdit, вставляем это число в окошко для адреса, жмём Enter и открываем вкладку MCC: Чуть ниже видим описания MCC-команд:По пункту 1 переход туда-тоПо пункту 2 переход туда-то...и т.д.Смотрим в наш телефон - Мои файлы - это шестой пункт меню (если в главном меню нажать цифровую кнопку 6 - то передем как раз в Мои файлы)Теперь смотрим в окно BinEdit и ищем строчку:По пункту 6 переход...копируем адрес перехода - это и есть искомый адрес! Можно добавлять его в карту прошивки РесМана и назначать на любую кнопку... Но (!) хотелось бы точно быть уверенным в этом адресе, как проверить не прошивая телефон? А очень просто - для этого нам и потребуется следующая команда:AT+CGSN=8,"AAAAAAAA"Не забываем вместо AAAAAAAA вставить наш адрес:жмем Enter и смотрим в телефон - он на наших глазах переходит в Мои файлы!Все, теперь мы на 100% уверены, что правильно нашли адрес... А как же найти адрес меню, в которое невозможно попасть из другого меню, спросите вы?..Ну, например, адрес главного меню??? Делаем следующее:Заходим в это меню и снимаем его адрес (через AT+CGSN=7)Копируем этот адрес и вставляем его в аресное окошко BinEdit, жмём Enter - программа откроет нам на вкладке MCC адрес текущей MCC-команды...Что же тут делать? Нам нужно подняться от этой команды вверх - неспеша жмём мышкой на верхний треугольник полосы прокрутки, справа от окна с кодом...И на сколько же нужно подняться вверх?..А тут очень просто - нужно подняться вверх до того места, где BinEdit поменяет цвет символов команд:После этого нам необходимо вернуться на один шаг назад (См. скрин), скопировать адрес:И проверить его уже известным образом... Вот и все... 28 Link to comment Share on other sites More sharing options...
f2065 Posted May 13, 2009 Report Share Posted May 13, 2009 FRAER, Последняя версия BinEdit не требует изучения AT-команд, там есть вкладка MCC… Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com Link to comment Share on other sites More sharing options...
FRAER Posted May 13, 2009 Author Report Share Posted May 13, 2009 f2065, я знаю это я и не пытаюсь обучить кого-то ат-командам, просто пытался сделать более-менее "универсальную" инструкцию, не привязанную к какой-то конкретной версии бинедит или патча цгсн... 4 Link to comment Share on other sites More sharing options...
Recommended Posts