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

    Вы сейчас не залогинены на форуме.

    Для возможности комментариев, загрузки файлов, подписок на ответы - вам надо войти.

Все о Samsung Champ Gt-c3011


gluk-v48

Рекомендуемые сообщения

1. Что с форумом почему у меня такая чушь
Опции - Режимы отображения… И замечу что на жалобу админам обратной связи не сделано.

 

2. Можно ли в прошивке убрать лимиты, изменить место установки Java игр и т.п?!
Убрать лимиты обычно можно, там просто где-то константы подправить… Изменить место установки вероятно будет не просто, там это завязано на какие-то особенности разных путей файловой системы, вобщем ява живёт более независимо от всего остального и её переделывать очень сложно.

 

Я так понял IDA Pro можно использовать но какой процессор там выбрать и какой файл кидать .BIN или .FLS ?
Прошивка у Infineon - это контейнеры… Там несколько частей и несколько адресных диапазонов.

Для начала надо извлечь блоки кода и данных (при помощи InfineonTools)… А потом уже их можно изучать в дизассемблерах.

Удобнее изучать прошивку в BinEdit.

 

Я думаю сначала получить C-псевдокод прошивки, потом там найти нужные места для патча, и через какой-нибудь редактор поменять что-нибудь на что-нибудь :ak: Так получится ? :)
Не получится. Там же каждый байт на счету. Твой этот C там будет абсолютно безполезен (хоть прошивка в оригинале и написана на ANSI C).

Только чистый ассемблер… На уровне ассемблера можно где-то что-то изменить или оптимизировать так чтобы высвободить место для своего патча.

Ещё там есть некий скриптовый язык, типа как у Swift было MCC (оно тут немного описано), но тут нечто другое (вроде нигде не описано, патчеписатели немного исследовали но мануал по Infineon для новичков никто не писал (поскольку изучать его стали поздно, когда уже пользователей почти не стало и потенциальных новых патчеписателей тем более).

Изменено пользователем f2065
  • Like 1

Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

Ссылка на комментарий
Поделиться на другие сайты

Спс наконец получилось переключится в человеческий вид :ak: А то через "Версия для печати" смотрел содержимое темы)))

 

 

А в IDA вроде бы все адреса функций верные, такие же как и BIN файле прошивки который я достал через этот InfineonTools.

 

Вот псевдокод https://dl.dropboxusercontent.com/u/2803076..._pseudocode.rar

 

Нашел в коде вот такую константу:

signed int sub_679664()

{

return 204800;

}

 

Это может быть ограничение в 200КБ Java ? Хотя потом сам посмотрю)

 

Главный вопрос это как потом все обратно в прошивку собрать что бы на телефоне проверить ))))

Ссылка на комментарий
Поделиться на другие сайты

Главный вопрос это как потом все обратно в прошивку собрать что бы на телефоне проверить ))))
Вот именно поэтому C - это абсолютно ложный путь, который только забивает голову множеством мешающей и бесполезной информации.
  • Like 1

Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

Ссылка на комментарий
Поделиться на другие сайты

Да нет вопрос был не "Как из C получить код ассемблера" а как модифицированный файл прошивки поместить обратно в fls файл :ak:

 

 

 

А где есть прямая ссылка на BinEdit последней версии ? http://binedit.sgh.ru/download.php?act=get 100 раз жал там "Скачать" но ничего не происходит.

Ссылка на комментарий
Поделиться на другие сайты

Да нет вопрос был не "Как из C получить код ассемблера" а как модифицированный файл прошивки поместить обратно в fls файл :ak:
Тем же InfineonTools, в мануале C3322i всё описано - тут аналогично должно быть.

 

А где есть прямая ссылка на BinEdit последней версии ?
Последние версии для Infineon - не публичные (потому что авторы думают что новых патчиписателей уже не будет)… Одна из предпоследних - там http://OldPh.one/ipb.html?s=&showto...st&p=597795 Изменено пользователем f2065
  • Like 1

Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

Ссылка на комментарий
Поделиться на другие сайты

Кстати я с первого раза угадал

 

//----- (00679664) --------------------------------------------------------

signed int sub_679664()

{

return 204800;

}

 

это и есть ограничение на размер JAR данных, в C-псевдокоде очень легко разобраться)))

 

А название функции это адрес в BIN файле, binedit : http://i.imgur.com/CD6suwH.png

 

Вот только я не понял как в BinEdit отредактировать значение. А через хексредактор не могу найти нужные байты по этому адресу что бы заменить. (Они как будто не соответствуют коду: 19 20 40 03 70 47 00 00, а число 202800 это 032000)

Ссылка на комментарий
Поделиться на другие сайты

Вот только я не понял как в BinEdit отредактировать значение. А через хексредактор не могу найти нужные байты по этому адресу что бы заменить. (Они как будто не соответствуют коду: 19 20 40 03 70 47 00 00, а число 202800 это 032000)

Да потому что надо читать ассемблер, а не подсказки.

Ну и вообще там даже в подсказке видно что это число 25 сдвинутое на 13.

Т.е. если вместо 0x19 написать например 0x32 - то получится 409600…

 

Смысл подобного трюка со сдвигами - потому что ассемблер в режиме Thumb, у него нельзя коротко загрузить число выше 0xFF.

MOV + LSL = 4 байта

LDR = 6 или 8 байт (оно требует align).

 

Поэтому в прошивке массово всякие числа получают сдвигами или вычитанием/сложением из каких-либо соседних чисел которые где-то рядом уже были.

 

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

Изменено пользователем f2065

Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

Ссылка на комментарий
Поделиться на другие сайты

Да потому что надо читать ассемблер, а не подсказки.

Ну и вообще там даже в подсказке видно что это число 25 сдвинутое на 13.

Т.е. если вместо 0x19 написать например 0x32 - то получится 409600…

 

Смысл подобного трюка со сдвигами - потому что ассемблер в режиме Thumb, у него нельзя коротко загрузить число выше 0xFF.

MOV + LSL = 4 байта

LDR = 6 или 8 байт (оно требует align).

 

Поэтому в прошивке массово всякие числа получают сдвигами или вычитанием/сложением из каких-либо соседних чисел которые где-то рядом уже были.

 

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

 

 

Вроде бы все понял, спс!

 

Оказывается через IDA можно редактировать тоже, кликнул в декомпиленном коде на 204800 и выбрал "патч->редактировать выделенное" и мне предложило заменить на нужно число.

 

 

У меня возник еще один вопрос, можно ли тестировать прошивку без телефона? Может есть какой эмулятор поддерживающий прошивки ? Было бы круто, а то убить телефон первой же прошивкой как-то будет не очень хорошо)))

Ссылка на комментарий
Поделиться на другие сайты

Оказывается через IDA можно редактировать тоже, кликнул в декомпиленном коде на 204800 и выбрал "патч->редактировать выделенное" и мне предложило заменить на нужно число.
Только вот вопрос насколько корректно он заменит (не затрёт ли другие данные). Там невозможно заменить на произвольное число без увеличения размера кода. Только на оптимизируемые числа…

 

У меня возник еще один вопрос, можно ли тестировать прошивку без телефона?
Нет. Эмулятор может где-то у самсунговских программистов и есть, но мы его не видели…

Для продвинутых патчеписателей существует патч CGSN - он позволяет передавать куски кода в ОЗУ и запускать на выполнение (конечно далеко не всё можно так проверить, но это существенно ускоряет создание сложных патчей).

Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

Ссылка на комментарий
Поделиться на другие сайты

В общем патч верный но он не помог, теперь вместо ошибки просто выключается телефон даже не дает установить )) (Жму на файл, открывается установка и сразу перезагружается телефон я даже не успеваю нажать "Установить" )

Ссылка на комментарий
Поделиться на другие сайты

В общем патч верный но он не помог, теперь вместо ошибки просто выключается телефон даже не дает установить ))
Показывай патч в ассемблерном виде… Не верю я тому что IDA строит.

Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

Ссылка на комментарий
Поделиться на другие сайты

Да нет все нормально в патче, я поставил туда 0xFA получилось 2000КБ (2МБ).

 

Возможно много поставил но тогда бы даже меньше 200КБ перестали запускаться игры, а так не запускаются только те которые больше 200КБ.

 

Я IDA использую только для просмотра исходника 'C' ( там просто до невозможности просто читать код) и строк а редактировал я вручную через hex редактор.

 

Кстати вот для IDA 6.8(вроде бы последняя слитая версия на данный момент) изменил немного плагин ExtraPass https://dl.dropboxusercontent.com/u/2803076...Pass_PlugIn.rar что бы можно было запустить анализ всего файла (А так IDA только 70% где-то проверяет и остальное помечает красным) (Выбирать только "поиск новых функций", остальное работает только с Win32, с arm бред получается :) )

 

Наверно что-то еще мешает :(

 

Еще есть вопросов пару.

 

Какой диск считается microsd ?

( Хотел что бы логи записывались на флэшку а не на C:\ а то смысла от них ни какого. Или по умолчанию они никуда не записываются вообще? )

 

Как искать коды сервисные? Они в виде текста или в виде цифр записываются в коде?

Ссылка на комментарий
Поделиться на другие сайты

Какой диск считается microsd ?
На этой платформе вероятно M:\… Или E:\…

 

( Хотел что бы логи записывались на флэшку а не на C:\ а то смысла от них ни какого. Или по умолчанию они никуда не записываются вообще? )
Они не пишутся на диск вообще. Они сливаются по трассировочному интерфейсу (UART-порт, у разных самсунгов по разному - где USB переключается в UART резисторами, где на прошивочных пинах, но ещё надо воткнуть ключевой резистор куда-то).

 

Как искать коды сервисные? Они в виде текста или в виде цифр записываются в коде?
Подавляющее большинство - в виде текстовой таблицы. Однако несколько кодов присобачено индивидуальной проверкой байт.

Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

Ссылка на комментарий
Поделиться на другие сайты

какую-то хрень включил , теперь вместо перезагрузки появляется "синий экран смерти" :)

 

Пишет:

 

TRAP INFO

 

HW DATAABORT TRAP

 

... slarling core dump

 

Где посмотреть информацию о ошибке :(

 

.....

При подключении к компьютеру в таком состоянии пишет обнаружен "CDS device" и драйвера не найдены. Интересно :) Значит можно как-то отладку запустить через USB? ):)

Ссылка на комментарий
Поделиться на другие сайты

Интересно что интересного можно сделать с прошивкой ? :(

 

Можно например путь к темам изменить что бы добавить поддержку своих тем?

Ссылка на комментарий
Поделиться на другие сайты

Интересно что интересного можно сделать с прошивкой ? :(
Платформа такая же как C3322i - можно наверно без особых усилий оттуда патчи портировать…

 

Можно например путь к темам изменить что бы добавить поддержку своих тем?
Можно наверно просто сами темы изменять…

Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

Ссылка на комментарий
Поделиться на другие сайты

Если после изменения константы все равно не запускаются JAR файлы больше чем 200КБ, можно ли это как-то исправить?

 

Теперь телефон просто перезагружается при попытке установить JAR файл больше 200КБ.

 

Возможно где-то еще есть проверка но числа "200*1024" нигде нет.

Ссылка на комментарий
Поделиться на другие сайты

Проверил, через IDA намного легче чем через BinEdit редактировать прошивку, там прямо в C коде можно изменять данные и они правильно сохраняются в BIN файл.

 

1.

4Kpmk9K.png

2.

di-YXAH25.png

 

 

Правда все равно никак не могу убрать ограничение на 200КБ :(

 

 

Может быть это ограничение на уровне железа, мб не хватает памяти?

Ссылка на комментарий
Поделиться на другие сайты

Не получается через InfineonTools распаковать dffs файл, кто там говорил что это возможно ? :(

 

 

Ну он то распаковывается но не как архив а просто создает несколько файлов непонятных)

Ссылка на комментарий
Поделиться на другие сайты

Не получается через InfineonTools распаковать dffs файл, кто там говорил что это возможно ? :(
InfineonTools с прошивкой C3011XEKG2 делает всё как и задумано.

 

Ну он то распаковывается но не как архив а просто создает несколько файлов непонятных)
Это не инструмент для рядовых пользователей.

 

C3011OXEKG2_CSC.dffs -> temp_GT-C3011_OXE.dffs - файловая система. Только в отличии от C3322i у него не FAT оказался, а что-то своё…

Файлы в C3011OXEKG2_CSC.dffs читаются другой утилитой - Infi-Tools. Правда, наверно не пишутся. Но там есть исходники, можно понять принципы ФС и сделать полноценный редактор образов ФС для C3011… (замечу что на более современных моделях совсем другая ФС)

Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

Ссылка на комментарий
Поделиться на другие сайты

Только в отличии от C3322i у него не FAT оказался, а что-то своё…

CTS от Agere. Распаковывается утилитой от Снега - UnpackCTS, если память не изменяет мне.

  • Like 1

Обожаю свою жену Анюточку! =)

Ссылка на комментарий
Поделиться на другие сайты

Да, CTS Manager работает, но архивы различаются после сохранения на 1 байт, не хватает одного NULL в конце файла вроде бы, а может он и не нужен, не знаю )) Но нужно будет проверить, спс.

Ссылка на комментарий
Поделиться на другие сайты

Все что получилось сделать это увеличить доступное количество игр, и то только 1 байт :128:

 

Адрес для изменения количества игр: 994E4C (1 байт) (по умолчанию 0x28)

 

Количество доступных игр изменилось но все равно максимум 40 ограничение стоит. Странно очень. поставил 0xc8, пишет 40 из 200 и дальше не дает установить ничего. :)

Ссылка на комментарий
Поделиться на другие сайты

Количество доступных игр изменилось но все равно максимум 40 ограничение стоит. Странно очень. поставил 0xc8, пишет 40 из 200 и дальше не дает установить ничего. :128:

Подобные настройки ограничения стоят в виде констант в 3-5 местах… Для подсказок на экране, для реальной поверки при открытии JAR, при записи JAR в базу, и т.п. Ищи остальные.

  • Like 1

Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать аккаунт

Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти



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