Как прошить кнопочный телефон на java
Кстати, у меня DrWeb иногда ругается именно на isms, потому что так сделана эвристика приложения, иначе оно не сможет подставлять анонимного отправителя.
Фактически, время обычных камер неустанно истощается. Технологический прогресс принес нам еще одно ощущение - появление такого замечательного устройства, как мобильный телефон. Трудно представить, что это замечательное изобретение использовалось только для телефонных звонков всего несколько лет назад. Но время неумолимо ставит все на свои места, и теперь у продвинутого любовника может не быть камеры, сотового телефона и желания снимать все, что приходит перед его глазами.
В связи с этим необоснованный рост продаж цифровых фотоаппаратов вызывает у меня большую недоумение. Объяснение, на мой взгляд, является исключительной маркетинговой добычей компаний-производителей. Эта статья написана именно так, чтобы не попасть под их влияние.
Так же ругается на «противоугонку», замаскированную под игрушку в моем телефоне, но вещь действительно полезная
Сейчас почти все телефоны имеют дополнительную память — флешку.
Как вариант — мы можем просто вытащить флешку из телефона и вставить ее в картридер на компьютере. Если картридера не имеется, будем импользовать сам телефон.
Надеюсь, что, прочитав это, вы поймете, что вам не нужна камера. После прочтения они скоро продадут свою фототехнику и получат нормальный мобильный телефон. Давайте теперь подробно рассмотрим неопровержимые аргументы в пользу мобильного телефона. Прежде чем покупать камеру, подумайте, нужна ли она вам. Если у вас есть сотовый телефон со встроенной камерой, покупка камеры будет не только напрасной потерей денег, но и приведет к необходимости нести два предмета вместо одного.
В фотомагазине вы можете быть атакованы тем, что не подходит вашему стилю. Несмотря на то, что грамотные производители фотоаппаратов долгое время уделяют дизайну много внимания, а техническая сторона - далеко. На рынке мобильных телефонов в этом смысле значительно больше вариантов. Кроме того, продавцы в салонах для мобильных телефонов лучше ориентированы на стиль и внешний вид клиентов, чем фотографы. Последний, в большинстве случаев, заполнит вас кучей ненужных технических деталей, и вам все равно, как вы выглядите с покупкой.
Пример установки java в телефон привожу не на самой новой модели, обычной моторолке, но вам главное понять принцип. Начнем с того, что некоторые модели имеют варианты подключения к USB, ик или блютуз: 1- в качестве модема и 2 — в качестве запоминающего устройства, т.е флешки, это то что нам нужно. Выбираем Подключения — usb синхронизация — установить соединение — карта памяти. (название пунктов и порядок меню может отличаться)
До сих пор фотографические производители не заботятся о пользователе в этом направлении, что можно сказать о компаниях, выпускающих телефоны. Легче подсчитать, что у современных телефонов нет, чем у них нет. Будем надеяться, что это упущение будет устранено в ближайшем будущем. Но с камерами большинство наиболее необходимых функций никогда не появятся.
С другой стороны, у камеры телефона нет такого огромного количества ненужных функций, которые есть у камеры. Это значительно увеличивает вероятность создания отличных фотографий. Для красивой фотографии достаточно нажать одну кнопку, все остальное является оправданием для производителя, чтобы одеть клиента с максимальной ценой. Каждый владелец сотового телефона подтвердит это.
Теперь, собственно, сам процесс установки java приложения в телефон
Теперь соединяем ваш ПК и телефон, в Моем компьютере у вас появится еще один съемный диск, открываем его.
Здесь видим набор папок, нам нужна папка java (может называться «Приложения»), открываем и закдидываем в нее скачанный файл с расширением jar, в моем случае это isms.jar
Фотографии, которые заставляют камеру занимать много места на карте памяти. Мобильные телефоны в этом отношении намного более экономичны. С картой памяти 64 Мб на телефоне вы можете снимать целый год без ограничений и без необходимости удалять фотографии. Действительно, иногда трудно понять, что изображено на картине - вы в Италии или ваша мать в Чертаново. Но дело в том, что эти фотографии неотделимы от автора и должны сопровождаться вашими живыми и остроумными комментариями, когда они просматриваются.
Так что это не недостаток, а достоинство для тех, кто это понимает. Сейчас много споров - фильм или матрица. Для нас с вами эти обсуждения жалких дилетантов просто забавны. Должен отображаться фильм, на мониторе отображаются кадры цифровой камеры. С камерой на вашем мобильном телефоне вы лишены этих головных болей, и вы всегда можете показать свои шедевры друзьям и знакомым.
Кроме того, отображение в большем масштабе может негативно повлиять на эстетическую сторону ваших фотографий. Эксперименты здесь неуместны. Если вы все еще поклонник фильма, все сложнее. Люди с хорошо развитым художественным вкусом могут теперь встречаться с телефонами с 5-мегапиксельной камерой. Как известно каждому культурному человеку, чем больше мегапикселей, тем лучше. Это означает, что 5-мегапиксельная камера подходит лучше, чем любая 2, 3 и 4-мегапиксельная камера. Это особенно верно при минимальных помехах фотографа в процессе съемки.
Лучший же вариант установки, это воспользоваться кабелем usb и установочным диском с программным обеспечением идущим в комплекте с вашей мобилой. На моделях, не имеющих, флешки установка java возможна лишь с помощью специального программного обеспечения, которое имеется на диске. Так же его можно скачать с сайта производителя телефона.
Главный парадокс фототехники заключается в том, что чем больше и дороже камера, тем меньше функций требуется человеку. Например, можете ли вы представить, что в так называемом «зеркальные» камеры, используемые «профессиональным» отсутствием видео-функции! Жадность и глупость производителей здесь видны в целом и блеском. То есть, если ваш талант простирается за пределы фотографии и попадает в область кино, вам придется покупать дорогую и большую видеокамеру. У каждого приличного телефона есть функция захвата видео со скоростью 15 кадров в секунду, что более чем достаточно для любого кинотеатра.
Мобильные телефоны выполняют не только функции устройств для общения. Поддержка игровых приложений позволяет пользователям использовать их в целях развлечения. Зачастую набора стандартных игр оказывается недостаточно, поэтому становится задача загрузки новых java-игр.
Представим себе и представьте себе, что с развитием такого типа кино, со временем, в кинотеатрах с маленькими формами, казалось, смотрели такие фильмы. Остается решить проблему записи звукового формата 1 прямо в телефоне. Вы представляете, какие перспективы открываются перед вами сейчас? Возьмите видео с телефона на будущее, не паникуйте!
И это всего лишь половина проблемы. Главное - нет возможности установить дополнительно! Вы когда-нибудь видели эти уродливые огромные сумки, которые носят профессиональные фотографы? Изготовлены ли они из прозрачного розового силикона, например, сотового телефона? Все миллионы патчей и подвесок, которые составляют современный мобильный телефон, продаются на камеру? Можете ли вы поместить живое изображение красивой красоты на дисплей камеры?
Мобильный телефон, конечно, сегодня. Сегодняшние мобильные телефоны могут быть инструментом для организации времени, создания разнообразных записей и, наконец, для развлечения. И забава - это то, что мы будем делать в этой статье. В частности, это будет забавный игровой тип, опосредуемый так называемым.
Другой способ – загрузка игр при помощи компьютера. Запустите интернет-обозреватель на ПК. Перейдите по адресу сайта, на котором располагаются java-игры , которые необходимо загрузить. Сохраните файлы в формате.jar на жесткий диск компьютера.
Многие из нас сталкивались с ситуациями когда только что купленный (и, возможно, за большие деньги) новый телефон или смартфон вдруг, при ближайшем рассмотрении, оказывался не таким «золотом», каким он блестел на витрине.
Стандартные симптомы его поведения – выключения и зависания без всяких особых причин, медленная реакция на команды, нестабильная работа приложений или просто мобильный «склероз» на выбранные рингтоны. Список можно продолжать…
Разбор полётов
Конечно, особо привередливые владельцы тут же побегут в сервисный центр (или салон связи) ломать стул о голову незадачливого менеджера, подсунувшего ему испорченный HTC или Nokia. Но давайте отбросим эмоции – не так страшен чёрт как его малюют. Как бы себя ни вёл ваш мобильный телефон, практически всегда можно решить возникшие с ним проблемы. И дело не в аппаратном браке устройства (хотя и такое может быть) а, скорее всего, в его «софтовой» составляющей.
Не секрет, что между компьютером и мобильным телефоном много общего. Например, и у того и другого есть процессор, flash-память, оперативная память, устройства ввода и вывода информации (клавиатура и дисплей). Отметим, что первичной по важности деталью в компьютере и телефоне является именно микросхема flash-памяти с основными настройками, отвечающими за запуск и взаимодействие аппаратной и программной составных этих устройств. Память flash энергонезависима, размер ее от 0,5 до 16 Мб, состоит она из полупроводникового чипа, в котором специальными электрическими импульсами пропечатаны, в народе «прошиты» аппаратные настройки и программное обеспечение (firmware).
Но если в компьютере flash-память и операционная система, как говорят в Одессе «две большие разницы», то в телефоне прошивка является их симбиозом — «два в одном». Поэтому под прошивкой телефона мы понимаем не только перечень рабочих настроек аппарата, но и весь остальной комплекс программного обеспечения, который входит в операционную систему и отвечает за интерфейс взаимодействия с пользователем телефона. Роль прошивки в телефоне очень велика. Именно она отвечает за связку заложенных в телефоне аппаратных компонентов между собой и сотовым модулем. Прошивки являются плодом кропотливой работы программистов компаний-производителей и разрабатываются исключительно под определённую модель телефона, естественно, своего производства. То есть, если в телефон Samsung залить прошивку от какой-нибудь модели Nokia, телефон даже не включится. Исключение составляют случаи когда одна прошивка может подойти к близкому по классу телефону, например ближайшей линейки. Как пример можно привести модель Siemens SL45, перепрошив который можно получить поддержку Wireless Java. Или Nokia 6210, в которую можно установить прошивку от 6250-ой модели, в результате чего владелец получает функции Nokia 6250 за меньшие деньги. Или Sony Ericsson K750i, который прошивают в W810i, превращая его тем самым в Wolkman.
Вы спросите — и какая-же связь между глюками телефона и прошивкой? Самая прямая. Поскольку рынок мобильных телефонов очень насыщенный, компании стараются как можно скорее запустить в продажу свои новинки, зачастую не до конца протестировав программное обеспечение. Поэтому первые покупатели навороченного смартфона или коммуникатора и сталкиваются с недоработками программистов. Первый совет – не «кидаться» покупать новейшую модель устройства, а подождать вплоть до полугода-года – за это время будет выпущена ещё не одна версия прошивки, порой их количество за всё время производства телефона достигает нескольких десятков.
Наихудший вариант – 1-ая, 2-ая или 3-я версии ПО, они обладают большим количеством недоработок. К примеру, первые прошивки Sony Ericsson K800i «славились» глюком — внезапно переставали сохраняться фото с камеры.
Версия прошивки, кроме основного цифрового, может иметь и дополнительные обозначения, например, 4.7 или 2A. Их величина говорит о существенности внесённых изменений, доустим, добавлены новые возможности или была просто произведена лёгкая «рихтовка» патчами.
Что даёт нам в конечном результате процесс перепрошивки? Конечно, даже если вы не жалуетесь на работу своего мобильного телефона, вам ничто не мешает сменить версию прошивки на более новую — просто так, из спортивного интереса. Например в самом свежем варианте прошивки могут быть реализованы некоторые новые возможности (к примеру, появится поддержка новых гарнитур), добавится встроенное ПО, будут загружены новые обои или ригтоны, темы меню. Но чудес ждать всё же не стоит, просто так «нарисоваться» поддержка Bluetoth, mp3 или более высокое разрешение фотокамеры не сможет. Зато изрядно улучшатся рабочие характеристики телефона, например приём сигнала, быстрота реагирования меню, приём-отправка SMS или даже увеличится ресурс аккумулятора (вплоть до 10-15%), поскольку будут оптимизированы алгоритмы взаимодействия между компонентами телефона.
Тем более вам нужно сменить прошивку телефона, когда он глючит все больше и больше. Глючить телефон может даже новый, как мы и описали во вступлении к статье. Причина проста — это еще «свежая» модель и ПО в ней не окончательно доработано. В этом случае рекомендуется ставить каждую новую прошивку, повышая стабильность работы трубки. Ну а бывает еще и так, что телефон служил вам верой и правдой, а тут внезапно начались проблемы. Это может быть связано с глюками в ПО, которые вдруг проявились, а может и с вашими действиями — например, установкой каких-нибудь непроверенных программ. В этом случае прошивка вернет телефон к его изначальному работоспособному состоянию.
Как же обновить ПО мобильника? Это можно сделать двумя путями. Первый вариант — просто отнести телефон в сервисный центр. Прошивка стоит недорого (в пределах 500 р.), а по гарантии и вовсе всегда бесплатна (даже если проблем с трубкой нет и вам хочется просто повысить версию ПО). Второй вариант – обновить ПО телефона самому.
Сами с усами
Конечно, доверить телефон рукам специалиста проще пареной репы. Но ведь это надо будет ехать куда-то и сдавать телефон, заполнять бумаги, ждать (иногда несколько дней), потом ехать его забирать.
А что если попробовать все сделать самому? От этой мысли, у некоторых наверное появится кислая улыбка. Оно и правда, многим покажется что процесс перепрошивки это архисложное дело и новенький телефон этим можно запросто угробить. Но не будем делать однозначных выводов. Для начала скажем, что окончательно и бесповоротно уничтожить телефон в процессе «заливки» софта можно разве что ударив по нему молотком :). Или отключив от сети компьютер, к которому мобильный подключён через кабель. В любом случае, если в процессе прошивки что-то случилось, вам всегда помогут в сервисном центре (нередко и бесплатно — по гарантии).
Прежде чем мы перейдём к описанию необходимых компонентов, уточним пару нюансов. А именно, какие марки телефонов больше предрасположены к самостоятельной «дрессировке», а какие лучше доверить специалистам.
Есть производители, которые сами поощряют пользователей прошивать телефоны дома. К ним можно отнести Nokia и Sony Ericsson. Эти замечательные компании выпускают и предлагают для бесплатного скачивания на своих сайтах специальные программы для прошивки телефонов. Пользоваться ими предельно просто и, главное, безопасно — подключил телефон, нажал кнопку, подождал. Требуется разве что быстрое и надежное соединение с интернетом для закачки файла прошивки из сети.
Компании Siemens (BenQ-Siemens) специального ПО для обновления открыто пользователям не предлагают. Зато для сервисных центров разработаны специальные программки для прошивки (они доступны всем, у кого есть интернет, на фан-сайтах). Они также очень просты, работают по нажатию одной кнопки «прошить» и ничего из сети не качают (скачиваются уже со «встроенной» прошивкой — то есть программа для прошивки сама по себе является и прошивкой как таковой).
Чуть посложнее программы для прошивки телефонов Motorola, LG, Samsung. Пользоваться ими неопытным «мобиломанам» мы бы не рекомендовали — есть риск допустить ошибку на каком-нибудь из этапов и сломать телефон (не окончательно, скорее всего, но восстанавливать его будет уже непросто и чаще в сервисном центре).
Итак. Решились на прошивку. Что вам для этого нужно?
Хорошие фан-сайты владельцев телефонов с обширной информационной базой:
У телефонов других производителей мы не можем порекомендовать вам столь же хороших фан-сайтов. Информацию по ним можно поискать на «общих» форумах, воспользовавшись, например, поисковой системой Google.
Аппаратные компоненты – телефон, дата-кабель (некоторые телефоны, в частности, Samsung, требуют особых «прошивочных» кабелей для прошивки), компьютер, лучше с наличием источника бесперебойного питания (мало ли что может случиться по закону подлости) или заряженный ноутбук.
Драйвера для кабеля. Простые программы (от Nokia и Sony Ericsson, допустим) отдельных драйверов для кабеля не требуют и ставят их сами. Для кабелей телефонов других производителей нередко требуются особый драйвера, найти их можно также на фан-сайтах, на них нередко есть и целые разделы про виды дата-кабелей и ПО для работы с ними.
Последняя версия прошивки для вашего телефона (исключая официальные программы-прошивальщики для Nokia и Sony Ericsson, которые, как мы уже знаем, сами качают прошивку из сети). Найти ее на официальном сайте производителя нереально, так как компания-производитель занимается сервисным обслуживанием только в стенах своих центров. Мало того, с точки зрения закона – само распространение такого ПО является нелегальным. Причина – никто не хочет загружать и без того загруженные ремонтные центры претензиями горе-прошивальщиков. В общем, опять же обратите ваш взор на сообщество интернетчиков, многие из которых по доброте душевной организовывают тематические сайты и форумы, на которых делятся проблемами и опытом. Там же вы найдёте информацию, ответы на вопросы и сам «пошивочный» материал.
Программа для прошивки. Выбор прошивки — это хорошо, но это только полдела. Необходимо заранее установить на компьютер программное обеспечение, так называемый «прошивальщик». Для некоторых — и не по одной программе. Официальное ПО для прошивки Nokia — NSU (Nokia Software Updater), сторонняя программа (вот ее использование — только на ваш страх и риск — Phoenix Service). Официальный «прошивальщик» моделей марки Sony Ericsson — SEUS (Sony Ericsson Update Service), неофициальный — DaVinchi. LG прошивают программами GsMulti, Speedo или Infinion FlashTool, в случае Samsung хорошо зарекомендовал себя OptiFlash, для BenQ — Update Tool или WinSwup. Не забудем и про Motorola, тут «правят бал» RSD Lite, Flash&Backup, P2K.
Несмотря на то что любой процесс постороннего вмешательства во внутреннюю жизнь телефона чреват определёнными рисками, желающих самостоятельно улучшить свой телефон становится всё больше. Почти все они успешно переходят в разряд «уше прошивавших и понявших, что это совсем не страшно). Всё, что вам понадобится, — это кабели, соответствующее ПО, файл-прошивка и инструкция-алгоритм действий, благо интернет всегда рядом. Так что дерзайте! :)
Автор: Дмитрий Дейнека
А вот теперь объясните для самых чайников, где найти мне эти проги для прошивки. А то я совсем в телефонах не разбираюсь…
Несмотря на чрезвычайную популярность смартфонов, обычные кнопочные телефоны не потеряли свою актуальность среди людей, которым нужны исключительно базовые функции связи.
Рынок РФ заполнен множеством моделей разных характеристик, размеров, форм-факторов и расцветок: от миниатюрных телефонов размером с автомобильный брелок для удобной доставки на зону, до моделей а-ля 90-е, которыми можно убить грудного ребёнка.
Inoi 102 и Strike F10
Купил я телефон Inoi 101: дешевый, но функционально достойный даже на фоне более дорогих моделей. Всё бы хорошо, если бы не нежелательная функциональность, присущая большинству недорогих звонилок:
Пробные игры с покупкой полной версии через СМС, причём состояние покупки сбрасывается при полном сбросе устройства;
Попробуем устранить недостатки путём анализа и модификации прошивки.
Чипсет
Современные кнопочные девайсы строятся на платформах трёх производителей: RDA Microelectronics, Spreadtrum, Mediatek. Первой компании уже не существует: её купил Spreadtrum в середине 2015. Обе компании ребрендировали под именем Unisoc в 2018 году.
General Description
RDA8826C is a high performance, highly integrated system-on-chip solution for low cost, low power, GSM/GPRS mobile phone.
Integrating all essential electronic components, including baseband, quad band RF transceiver, power management, FM receiver, Bluetooth onto a single system on chip, RDA8826C offers best in class bill of material, space requirement and cost/feature ratio for complete phone handsets.Key Features
1. MIPS 312MHz processor
2. GSM/GPRS modem
3. 32Mb Flash and 64Mb PSRAM integrated
4. 320x480(HVGA) resolution
Нынешние телефоны построены в основном на процессорах Spreadtrum и Mediatek архитектуры ARM. Inoi 101 — не только «последний из могикан» на чипе ныне несуществующей компании, но и работает на ныне непопулярной архитектуре, с не самым известным набором команд MIPS16e, в котором инструкции кодируются в 2 байта вместо четырех, для уменьшения размера прошивки, что жизненно необходимо устройству со всего 4 МБ (32 Мбит) флеша.
SoC RDA8826 содержит в себе центральный процессор RDA8809e2, Baseband-процессор CT8851C, Bluetooth и FM-модули rdabt_8809 и rdafm_8809. Достоверная информация о всех компонентах в интернете не представлена.
Получение прошивки
Чтобы модифицировать прошивку, нужно сначала завладеть ей. Самый простой вариант — поискать на веб-сайте производителя. Inoi выкладывает прошивки ко всем своим моделям, но они не всегда самые последние — оказалось, что в версии с сайта отсутствует набор Т9 и игра «Тетрис».
Что-ж, телефон уже прошит, придётся покупать второй и скачивать актуальную прошивку с него. Сделать это можно, в случае RDA, только сторонними программами, т.н. «боксами» — аппаратно-программными комплексами для прошивки и восстановления от сторонних разработчиков. Обычно необходимо купить сам «бокс» (устройство с набором кабелей) и подписку на ПО, но к счастью подходящее ПО уже есть взломанной версии, отвязанное и от бокса, и от подписки — Miracle Thunder 2.82 от Gsm_X_Team. Относитесь к этому ПО как к трояну — устанавливайте на отдельный компьютер, без интернета (в виртуалке не работает).
Miracle Thunder
Официальные прошивки поставляются в текстовом формате .lod. Этот формат описывает процесс прошивки поблочно, в соответствии с размерами блоков флеш-памяти, в виде адреса загрузки и бинарных данных, закодированных по 4 байта little endian. Формат нестандартный, но простой, без особенностей. Единственное, что нужно учесть при написании конвертера — файл описывает не все блоки флеша, некоторые из блоков не программируются (есть «дыры»).
Открываем дамп флеша или преобразованный файл прошивки в вашем любимом дисассемблере, начинаем анализировать, быстро разочаровываемся: строк мало, сегментация памяти непонятная, IDA норовит неправильно определить MIPS32/MIPS16-код, тут и там странные указатели 0x82xxxxxx на оперативную память, в которые никто не пишет…
Скребём по сусекам
Раз не получается найти спецификацию на процессор, попробуем поискать какие-либо исходники по немногочисленным строкам, найденным в прошивке.
Из заголовочных файлов узнаём самое основное:
Флеш располагается по адресу 0x88000000 (4 МиБ)
Оперативная память — в 0x82000000 (8 МиБ)
SRAM — 0x81C00000 (64 КиБ)
BootROM — 0x81E00000
UI на моём устройстве построен на форке фреймворка MMI (man-machine interface) от компании Pixtel — CoolMMI. Подобный фреймворк используется и в ОС для кнопочных телефонов Mediatek MAUI, под названием PlutoMMI.
Обращение к текстовым строкам, ресурсам, задачам, меню, элементам NVRAM происходит с помощью уникального цифрового идентификатора, что затрудняет исследование: вы видите только цифры, далеко не сразу поддающиеся установке соответствия в осмысленную строку, пункт меню или ресурс.
Начальную информацию об основных функциях PlutoMMI от Mediatek можно почерпнуть из файла mmi framework and architecture.pdf. Архитектура CoolMMI и PlutoMMI совпадает в достаточной мере, чтобы пользоваться (аналогично скудной) документацией конкурирующего производителя.
Поиск сжатых ресурсов
Итак, память размечена правильно, а кардинальных изменений не видно — множество функций продолжают вызывать код из оперативной памяти, но найти, кто пишет в эти адреса, с наскока не получается. Да и ресурсов подозрительно мало.
После непродолжительного анализа обнаруживаются три особенности:
Переиспользование функций из BootROM
Для максимальной экономии пространства на флеш-памяти производитель реализовал наиболее востребованные функции библиотеки C непосредственно в ROM-памяти чипа: строковые функции (strlen, strcmp, strcpy, strcat, strtok), функции сравнения и копирования памяти (memcmp, memcpy, memmem, memchr), форматирования и вывода (sprintf, vsprintf), поиска и сортировки (bsearch, qsort) вызываются из памяти ROM, и не содержатся в коде прошивки, экономя драгоценные килобайты.
Сжатие кода и ресурсов алгоритмом LZMA
Код наиболее объемных «модулей» (WAP-браузера, мультимедиа-плеера, приложения FM-радио, инженерного меню) хранится в сжатом виде, а распаковывается один раз, при запуске телефона. Ничего дополнительного после распаковки не происходит: код скомпонован так, будто эти модули всегда в оперативной памяти по фиксированным адресам.
Аналогично распаковываются текстовые строки, но только для одного, текущего языка.
Копирование несжатого кода в оперативную память
Самый архитектурно важный код ОС копируется в оперативную память и выполняется из неё. Вероятно, это сделано для максимальной скорости исполнения базовых функций ОС.
Сжатые ресурсы легко находятся через binwalk. Можно было бы каждый из них вручную распаковать и загрузить в текущую базу IDA по корректным адресам, но я нашел способ проще, надёжней и быстрее.
Снятие оперативной памяти
Оказалось, протокол прошивки не только простой, но и разрешает чтение произвольных адресов без какой-либо подготовки, прямо во время работы телефона. В интернете была найдена готовая программа для чтения прошивки через UART, которая после модификации была использована для чтения всех 8 МиБ оперативной памяти через USB. 2 минуты — и никакой ручной работы!
Чтобы получить коммандный порт через USB, можно воспользоваться модулем usb-serial в Linux. Достаточно всего лишь «научить» модуль работать с RDA:
$ echo 1e04 0900 | sudo tee /sys/bus/usb-serial/drivers/generic/new_id
Разжатая функция в оперативной памяти
Отныне нам доступны все распакованные функции и ресурсы в оперативной памяти, что позволяет нам беспрепятственно их проанализировать.
«Покупаем» игры
В рассматриваемом телефоне присутствуют 3 платных игры производства Gameloft: Danger Dash, Ninja Up, Tetris. Первая — раннер, без какой-либо физики прыжка, вторая — примитивный фроггер с одним экраном, играть можно разве что в тетрис, но он начинает тормозить при заполнении экрана фигурами.
Каждая игра запускается всего 5 раз, далее их предлагается оплатить. Игры стоят 99 рублей каждая — половину стоимости телефона — обдираловка!
С точки зрения пользователя, покупка совершается так: нажимаем на кнопку «купить», телефон отправляет платное СМС, пользователю приходит ответный код, который нужно ввести в окно регистрации. Но если купить игру, запомнить ответный код, сбросить телефон и попробовать заново ввести этот же код, то он, с большой вероятностью, не подойдет.
Как так?
Генератор псевдослучайных чисел инициализируется значением текущей минуты;
Генерируется псевдослучайное число от 1000 до 9999;
Случайное число отправляется в СМС и сохраняется в NVRAM;
Ответный код проверяется с учётом сохраненного случайного числа.
Связка запрос-ответ уникальна для каждой модели, и зависит от той минуты, в которую была нажата кнопка «купить»:
Самый простой способ зарегистрировать игры навсегда — пропатчить код инициализации, заменив переменные количества демо-запусков на переменные купленности игры. Так как эта функция находится в несжатой области кода, проблем с её модификацией не возникнет.
Замена переменных в функции инициализации
Найти функции можно по отладочным строкам, содержащим характерное имя файла:
Функция вывода номера строки файла src/gameloft_billing.c
Отключаем Funbox
Меню платных СМС-подписок — ожидаемая, но неуместная функция послепродажного заработка денег производителем. Одно неловкое нажатие — и минимум 5 рублей со счёта в сутки вам обеспечено. Подобные вещи позволяют держать цены на кнопочные телефоны на очень низком уровне, но в моём устройстве им не место.
Как и в случае с играми, в функциях Funbox присутствует отладочный вывод номеров строк с именем файла "src/gmb_smart_sms_win.c". С этих строк можно «дошагать» до функции-обработчика выделения элемента главного меню (в CoolMMI они называются hilite, очевидно имеется в виду highlight), в котором и находится иконка.
Методом проб и ошибок удалось обнаружить обработчик входа в интерфейс подписок, который был благополучно за'nop'лен — нажатие на иконку Funbox центральной кнопкой или левой софт-клавишей более ни к чему не приводят.
Функция расположена в несжатой области и легко поддаётся изменению.
Исправляем громкость
Компонент аудиоусилителя телефона имеет 15 ступеней усиления, но для мультимедии прошивка телефона предусматривает всего 7 уровней громкости, с большими шагами между ними. Это неудобно: на «единице» телефон еле слышно, а на «двойке» он сразу ОРЁТ.
Использование регистра происходит через сегмент KSEG1, в обход MMU и кешей. Полный адрес audio_spk_cfg, обращения к которому нужно искать в дисассемблере — 0xA1A24028.
После непродолжительного поиска обнаруживается функция, преобразующая уровень усиления (по всей видимости, в децибелах) в значение SPK_GAIN:
Изменив уровни с [0, 2, 4, 6, 8, 10, 12, 14] на [0, 1, 2, 3, 5, 6, 8, 10], мы получили более плавную регулировку ценой уменьшения максимальной громкости, которая всё равно только приводила к перегрузу маломощного динамика телефона.
Если при воспроизведении MP3-файлов положительный эффект очевиден, то громкость FM-радио всё ещё регулируется с недостаточной гранулярностью. Вероятно, это аппаратная проблема подключения FM-чипа.
Неожиданные трудности
Для MIPS существует два стандарта 16-битных инструкций: MIPS16e и microMIPS. Первый является дополнением (extension) к архитектуре MIPS32: код может использовать одновременно оба набора инструкций, процессор может переключаться между режимом выполнения MIPS32 и MIPS16e в любое время, прыжком на нечётный адрес инструкции. Не все инструкции и возможности MIPS можно выразить командами MIPS16e — иногда переключение в режим MIPS32 просто необходимо.
microMIPS же — полноценная архитектура с полным набором 16-битных команд. Вот что говорит официальная брошюра:
The benchmarks prove that the microMIPS architecture delivers similar memory savings as the MIPS16e ASE, but with much better performance. The question is how? The list of reasons includes new optimized 16- and 32-bit instructions, an optimized recoding of MIPS32 instructions, and optimized op code format and register utilization.
The earlier stated fact that microMIPS is a complete architecture – not an extension − is also key. Both MIPS16e, and for that matter the similarly-targeted ARM Thumb technologies, are extensions. Both microMIPS and these extensions rely on the concept of new 16-bit versions of regularly used instructions to minimize code size. And all deliver reductions in code size. But only microMIPS delivers 32-bit performance.
The microMIPS mode can handle all operations such as exception handling, and offers a superset of the MIPS32 ISA. With MIPS16e, the programmer had to swap modes to use ASEs such as MIPS DSP. The microMIPS mode can seamlessly access the ASEs. The need to run legacy binary code is really the only reason that would prompt a programmer to use the MIPS32 mode.
Проблема в том, что привычные утилиты инлайн-ассемблирования кода для патча программы, такие как rasm2 из состава Radare2 и kstool из KeyStone, не поддерживают режим MIPS16e. Они либо ассемблируют 32-битные команды, несмотря на то, что выбран 16-битный режим, либо выводят опкоды, явно не соответствующие MIPS16e.
К счастью, ассемблер gcc поддерживает режим MIPS16e, а работать с ним почти так же удобно, как с rasm2/kstool. Есть, разве что, одна особенность: он выравнивает блок nop'ами.
Вывод
Надеюсь, эта небольшая заметка поможет исследователям прошивок кнопочных телефонов на платформе RDA и подогреет желание к погружению в звонилки на платформах других производителей. Доступные в любом магазине, эти дешевые но полнофункциональные двухсимочные телефоны с доступом в интернет так и просятся в руки хакеров, чтобы их адаптировали не только под базовые потребности связи.
Как оказалось, нет ничего сложного в минимальном изменении функциональности подобных устройств. Автор не столкнулся с неразрешимыми проблемами, проделанный путь в целом совпадает с анализом прошивкок любого другого устройства, а доступные исходники, хоть и устаревшие, позволяют разобраться в архитектуре и, при желании, интегрировать новые функции, не обладая кодом самой прошивки.
Все мобильные телефоны Nokia, выполненные на платформах S40 и S60, имеют встроенную в прошивку виртуальную машину Java. Все, что необходимо для установки на такой телефон J2ME-приложения - поместить его во встроенную память аппарата либо на карту памяти.
- Как установить java на Nokia
- Как установить java-игру на телефон
- Как загружать ява-игры
Помните, что телефоны Nokia, в отличие от аппаратов многих других производителей, не требуют обязательного наличия файла формата JAD. Они вполне могут обходиться и одним файлом формата JAR. Впрочем, наличие JAD-файла работе программы никак не помешает. А если скачать браузером телефона JAD-файл, аппарат автоматически скачает и соответствующий ему JAR-файл.
Пользуясь телефоном на платформе S40, скачайте JAR-файл встроенным браузером. Не используйте для этого Opera Mini, UCWEB и подобные программы. Он будет автоматически установлен, после чего вы найдете программу в разделе «Игры» или «Приложения».
Если у телефона есть съемная карта памяти, отключите аппарат, вытащите карту, после чего установите ее в кардридер и найдите на ней папку с JAR-файлами. Поместите туда новые такие файлы, корректно отключите кардридер от компьютера, затем переставьте карту в телефон и включите его. В соответствующем разделе его меню появятся новые приложения.
Если вы пользуетесь аппаратом на платформе S60, после скачивания JAR-файла встроенным браузером телефона автоматически начнется его установка. Сам файл либо никуда не сохранится, либо, на новых моделях, останется в папке карты памяти под названием download. Браузер UCWEB сохранит файл в папку UCDownloaded, а браузер Opera Mini или Opera Mobile позволит выбрать для сохранения практически любую папку карты памяти. Рекомендуется выбирать для этого папку Others, а файлы, скачанные в другие папки - переносить туда. В эту же папку можно поместить JAR-файл и при помощи кардридера, при этом, для снятия карты телефон выключать не обязательно. Достаточно кратковременно нажать клавишу выключения, а затем в появившемся меню выбрать пункт «Извлечь карту».
Если файл скачан браузером стороннего разработчика, зайдите в папку, где он находится, встроенным браузером телефона, а затем запустите его. Если вы используете менеджер файлов X-Plore, выберите в меню пункт «Файл» - «Открыть в системе».
Независимо от того, каким именно образом вы запустили установку, помните, что исходный JAR-файл останется неизменным. Это позволит при необходимости переустановить программу с настройками по умолчанию. В ходе установки вам будет задано несколько вопросов, на которые надо ответить положительно. Когда будет предложено указать место установки, выберите карту памяти. Помните, что JAR-файлы, в отличие от SIS- и SISX-файлов, в телефонах Nokia любых моделей не требуют обязательного наличия цифровой подписи.
Читайте также: