Что для этого нужно?

1. Естественно нужен телефон.
2. Он должен быть прошит, установлен патч "CGSN"
3. Вам нужна прога BinEdit (где скачать и кому сказать за неё спасибо, надеюсь, знаете )
4. Комплектный (сквозной) шнурок
Ну и пару минут свободного времени...

Итак, наши действия:

Подключаем телефон к компу в режиме модема (PC Studio)

Запускаем BinEdit

Открываем в BinEdit нашу прошивку

Запускаем встроенную в BinEdit терминалку:

http://img408.imageshack.us/img408/566/1bfa22bb43a8.png

Когда окно откроется, жмём на кнопку для подключения к телефону:

http://img408.imageshack.us/img408/9595/e12aaefb0236.png

Когда телефон подключится - внизу, на статус-баре появится надпись "Подключен" и модель нашего телефона:

http://pic.ipicture.ru/uploads/091029/51225/4US7psZTQ3.png

Если телефон не подключился - в опциях необходимо выбрать правильный 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:

http://pic.ipicture.ru/uploads/091029/51225/H0uVHySsDc.png

Как видно, ниже появилось 16ричное число и слово ОК, так вот, это число - адрес текущей MCC-команды, копируем его:

http://pic.ipicture.ru/uploads/091029/51225/udYUVMbNVW.png

Теперь переходим в главное окно BinEdit, вставляем это число в окошко для адреса, жмём Enter и открываем вкладку MCC:

http://pic.ipicture.ru/uploads/091029/51225/ImDKVq26Ns.png

Чуть ниже видим описания MCC-команд:
По пункту 1 переход туда-то
По пункту 2 переход туда-то
...
и т.д.
Смотрим в наш телефон - Мои файлы - это шестой пункт меню (если в главном меню нажать цифровую кнопку 6 - то передем как раз в Мои файлы)
Теперь смотрим в окно BinEdit и ищем строчку:
По пункту 6 переход...

http://pic.ipicture.ru/uploads/091029/51225/obLcYrIAlD.png

копируем адрес перехода - это и есть искомый адрес! Можно добавлять его в карту прошивки РесМана и назначать на любую кнопку...
Но (!) хотелось бы точно быть уверенным в этом адресе, как проверить не прошивая телефон? А очень просто - для этого нам и потребуется следующая команда:
AT+CGSN=8,"AAAAAAAA"
Не забываем вместо AAAAAAAA вставить наш адрес:

http://pic.ipicture.ru/uploads/091029/51225/Os03KCORY8.png

жмем Enter и смотрим в телефон - он на наших глазах переходит в Мои файлы!
Все, теперь мы на 100% уверены, что правильно нашли адрес...

А как же найти адрес меню, в которое невозможно попасть из другого меню, спросите вы?..
Ну, например, адрес главного меню???

Делаем следующее:
Заходим в это меню и снимаем его адрес (через AT+CGSN=7)
Копируем этот адрес и вставляем его в аресное окошко BinEdit, жмём Enter - программа откроет нам на вкладке MCC адрес текущей MCC-команды...
Что же тут делать? Нам нужно подняться от этой команды вверх - неспеша жмём мышкой на верхний треугольник полосы прокрутки, справа от окна с кодом...
И на сколько же нужно подняться вверх?..
А тут очень просто - нужно подняться вверх до того места, где BinEdit поменяет цвет символов команд:

http://pic.ipicture.ru/uploads/091029/51225/L9yoOA68WJ.png

После этого нам необходимо вернуться на один шаг назад (См. скрин), скопировать адрес:

http://pic.ipicture.ru/uploads/091029/51225/12qkr55lo6.png

И проверить его уже известным образом...

http://pic.ipicture.ru/uploads/091029/51225/eHTur4bcjR.png

Вот и все...