Как сделать вайп из телефона кнопочного
Многие из нас и сейчас остаются фанатами кнопочных телефонов. Сенсорные гаджеты слишком сложны, ярки, чрезмерно инновационные, то ли дело кнопочный гаджет, безотказный, привычный, простой и надёжный. Но даже такие телефоны могут сбоить и работать нестабильно, вследствие чего мы решаем сбросить их до заводских настроек. Но с этим часто возникают проблемы, так как выполнить такой сброс владельцу кнопочного телефона попросту неизвестно. В нашем материале мы разберём, каким образом можно сбросить до заводских настроек наш кнопочный телефон, и какие шаги в этом помогут.
Сброс кнопочного телефона до базовых настроек – что необходимо знать?
Прежде всего укажем, что единого кода сброса для всех моделей телефонов не существует. Каждый производитель часто использует собственный код сброса для своих телефонов, который не работает на кнопочных телефонах производителей-конкурентов.
Часто для сброса телефона до заводских настроек необходимо просто набрать в меню вызова данный код, после чего подтвердить сброс. В некоторых же моделях необходимо через настройки телефона перейти в меню сброса, ввести специальный код, после чего подтвердить сброс.
Помните, что сброс кнопочного телефона до заводских настроек полностью удаляет все ваши данные на телефоне (включая контакты, файлы, смс и другое). Перед ресетом позаботьтесь о переносе необходимых вам данных на другой надёжный носитель, выполнив бекап.
Давайте рассмотрим работающие способы ресета кнопочного телефона до заводских настроек.
Способ №1. Используйте комбинацию клавиш
Первый способ сброса до заводских настроек кнопочного мобильного состоит в следующем:
- Включите ваш телефон, нажав и удерживая несколько секунд кнопку питания;
- После включения зажмите вместе кнопки «*» и «3» и «клавиша вызова» и «кнопка питания»;
- Когда на экране появится логотип производителя, отпустите все эти кнопки;
- Далее вам будет предложено выбрать вариант восстановления заводских настроек;
Способ №2. Скидываем настройки простого сотового телефона с помощью кнопок громкости и питания
Второй способ ресета кнопочного телефона заключается в следующем:
- Включите ваш телефон с помощью нажатия и удержания кнопки питания;
- После этого зажмите кнопки «увеличение громкости» и «питание»;
- Отпустите данные кнопки когда на экране появится логотип;
- После этого введите пароль сброса для вашего телефона;
Способ №3. Для сброса кнопочного телефона до заводских значений используется меню настроек устройства
- Откройте меню настроек на вашем кнопочном телефоне;
- Выберите параметр «Восстановить заводские значения»;
- Затем введите пароль к вашему устройству. Обычно это может быть 1122, 4321, 12345, 0000;
- Подтвердите выполняемую операцию, нажав на «Да»;
- Будет завершен сброс настроек на вашем мобильном телефоне.
Способ №4.
Еще одним способом сброса кнопочного телефона является следующий:
- Включите ваш мобильный телефон, нажав и удерживая кнопку питания;
- Затем откройте меню настроек;
- Там выберите опцию «Сброс»;
Способ №5 (актуален для кнопочных телефонов Самсунг)
Данный способ работает преимущественно с телефонами Самсунг. Выполните следующее:
Когда необходимо делать Wipe смартфона?
Сбой работы в результате получения рут-прав. Несмотря на то, что права администратора позволяют расширить возможности телефона, некоторые пользователи сталкиваются с разнообразными неполадками. Для исправления ошибок не требуется посещать сервис — сначала рекомендуется сделать сброс настроек. Это поможет решить большинство программных сбоев.
Продажа телефона. Многие владельцы смартфонов через некоторое время решают продать устройство, чтобы приобрести более современный аппарат. Перед продажей рекомендуется полностью очистить встроенную память от конфиденциальной информации (текстовые документы, фото, видео), чтобы данными не воспользовался покупатель.
Каким бывает Wipe?
Производители телефонов предусматривают несколько разновидностей системного сброса, предназначенные для различных целей:
- Полная очистка — удаляет пользовательскую информацию (телефонные контакты, фотографии, документы, приложения). Восстановить очищенные данные невозможно.
- Заводские настройки — восстанавливает стандартные параметры мобильного устройства. Такая возможность помогает вернуть работоспособность телефона после сбоя определенной программы. Все пользовательские данные остаются нетронутыми.
Как сделать Wipe телефона?
Второй вариант — использование меню Recovery. Нужно выключить устройство, зажать верхнюю клавишу регулировки громкости одновременно с кнопкой включения. Телефон запустится в режиме восстановления. Перемещаться по меню можно посредством клавиш громкости. Выбор действий осуществляется нажатием кнопки питания. Важно заметить, что меню Recovery также обладает двумя разновидностями очистки информации — полной и частичной:
- Wipe data/factory reset — полный сброс удаляет установленные приложения на телефоне, предназначен для исправления неполадок после получения обновления или самостоятельных действий с прошивкой. — частичный сброс помогает восстановить функциональность устройства при ошибках программного обеспечения за счета очистки кэша и временных файлов. Вся пользовательская информация сохраняется.
Итоги
Вайп — полезная функция для владельцев телефона, которым можно воспользоваться для удаления персональной информации и восстановления работоспособности смартфоне. Иногда сброс настроек помогает предотвратить посещение сервисного центра, а еще такая процедура полезна перед продажей гаджета.
Wipe (Вайп) на Андроид. Как правильно выполнить сброс настроек на Android. В данной статье рассмотрим как правильно выполнить сброс настроек или wipe на Android. Какие виды сброса бывают и различные нюансы.
Для чего нужно выполнять сброс настроек?
Сброс настроек выполняет очистку Android от ваших данных и программ и может быть нужен по различным причинам:
- Если Android работает не корректно и часто возникают критические ошибки
- После получения Root прав Android
- После прошивки (переход с оригинальной прошивки на кастомную, обновление ОС)
- С целью не распространения личных данных (при перепродажи устройства и передачи в другие руки)
В экосистеме Android сброс настроек принято называть — wipe. Английское слово Wipe [вайп] — протирать, вытирание. Для многих знакомое слово в данном случае будет форматирование или формат. Так что запомните, Wipe в Android это — сброс настроек, форматирование!
Виды wipe на Android
Wipe на Android можно разделить на полный и частичный.
Полный wipe — удаляет полностью все данные на разделе.
Частичный wipe — удаляет определенную директорию (папку) на разделе.
Из каких режимов можно выполнить Wipe на Android
- Из меню настроек (обычная загрузка)
- Из меню Recovery
- Из меню Bootloader средствами fastboot
- С помощью аппаратной кнопки сброс (если такая имеется)
Как делать wipe на Android
Выполнение сброса настроек из меню настроек
Зайдите в меню настроек и найдите меню Восстановление и Сброс и перейдите в него
В меню можете (при необходимости) отметить Очистить SD-карту - это сотрет данные на карте памяти и внутренней память тоже, а также все программы и их данные!
Выполнение сброса настроек c помощью аппаратной кнопки сброс
Чтобы выполнить сброс, возьмите тонкую скрепку и разогните ее. Зажмите скрепкой кнопку reset секунд 15- 30. После чего настройки Android обнуляться.
Wipe на Android из меню Recovery
Wipe можно выполнить как из стандартного Recovery так и кастомного. Выполнение Wipe из меню Recovery более гибкое по возможностям чем из меню настроек.
Выполнение Wipe из стандартного Recovery
В стандартном Recovery можно выполнить 2 вида сброса настроек.
wipe data/factory reset — выполнит удаление данных с раздела DATA и CACHE и папку на во внутренней памяти с данными программ. При данном wipe удаляться все ваши программы их данные, личные настройки, но остаются все ваши картинки, видео и музыка.
Wipe cache — удаляться временные данные деятельности программ, данный сброс нужен если у вас иногда возникают ошибки на Android!
Выполнение Wipe из кастомного Recovery
В кастомном Recovery также есть аналогичные пункты как и в стандартном.
wipe data/factory reset — выполнит удаление данных с раздела DATA и CACHE и папку во внутренней памяти с данными программ. При данном wipe удаляться все ваши программы их данные, личные настройки, но остаются все ваши картинки, видео и музыка.
Wipe cache — удаляться временные данные деятельности программ, данный сброс нужен если у вас иногда возникают ошибки на Android!
Если у вас возникают какие либо проблемы с работой программ, то стоит попробовать сделать вначале WIPE DALVIK CACHE, сделать его можно из меню advanced, все ваши программы и их данные останутся
Если же проблемы останутся, то тогда стоит сделать WIPE DATA/FACTORY RESET
Также в кастомном recovery есть доп. возможности сброса, для этого стоит перейти в меню MOUNTS AND STORAGE. Здесь у вас есть возможность выполнить wipe на любой раздел Android.
С меню Bootloader через утилиту Fastboot
Выполнить wipe возможно также и через меню Bootloader, с помощью утилиты fastboot для прошивки устройств Android. Выглядит это так:
После чего будут удалены все данные с раздела Cache. Более подробно читайте в в статье — Прошивка Android девайса с помощью утилиты FastBoot.
Дополнительная информация о wipe на Android
Данная информация для тех кто хочет знать больше о wipe.
БРЕД про WIPE
В Internet, в частности сайты по Android тематике, можно встретить инструкции по прошивки или получению root прав. В этих инструкциях часто пишут что надо сделать wipe и расписывают как его делать. Звучит это примерно так:
После прошивки сделать — wipe data, wipe cache, wipe dalvik cache, format data!
ЭТО ПОЛНЫЙ БРЕД И ЧУШЬ!
Почему? Все потому что люди не читают логи которые выдают Recovery и не знание файловой структуры Android, плюс не знание команд Linux.
Когда вы выполняете wipe data/factory reset — стирается раздел data, а в разделе data находиться каталог dalvik cache, и также стирается раздел cache. Теперь вы понимаете почему не надо делать все эти лишние манипуляции! Но наверное вы заметили что я не сказал ни слово о format?
FORMAT или WIPE
WIPE и формат это одно и тоже! Как так? могут сказать некоторые грамотеи Android! А вот так, выполняя wipe или format это одно и тоже и это легко проверить. В разделе /system/xbin или /system/bin вы не встретите бинарный файл format только wipe, да и в других Linux тоже. Есть переформатирование в другую файловую систему, но это уже другая история которая с wipe не как не связана.
О тонкости выполнения Wipe на Android
Перед многими стоит вопрос когда выполнять wipe? До прошивки или после? Выполнять лучше до прошивки, так как во многих прошивках может быть встроена функция автоматической перезагрузки после установки прошивки! Если в прошивки есть файлы которые заливаются на раздел data, то стоит проверить как система поведет себя, если загрузиться, хорошо, если нет, то выполнить wipe data.
О тонкости выполнения Wipe на Android 2
По личным наблюдениям заметил следующую особенность, в популярной кастомной прошивке CyanogenMod есть скрипт, который выполняется во время установки из под меню recovery. Данный скрипт бекапит вначале файлы системы (раздел system) до прошивки и восстанавливает после. Из за данного скрипта иногда могут возникать и кочевать ошибки, от прошивки до следующей прошивки. Поэтому если вы пользователь прошивок CyanogenMod или вы знаете что в updater-script есть скрипт который выполняет данный бекап, то перед прошивкой лучше сделать еще и format system.
Вайпом (wipe – протирать, вытирать) в системе Android называют сброс настроек. Этот процесс также носит название «форматирование» или «Hard Reset». Для чего нужно делать перезагрузку на андроиде?
Что такое «вайп» и для чего он нужен
Дело в том, что после этого действия устройство полностью очистится от предустановленных программ, и поможет избавиться от следующих проблем:
- Возможного сбоя работы в результате получения root прав;
- Некорректного функционирования и появления системных ошибок;
- Ухудшения работы в результате обновлений операционной системы;
- Неполадок вследствие перепрошивки т.е., после перехода с оригинальной на костомную прошивку;
- Удаления всех личных данных (хард ресет) при предпродажной подготовке устройства.
Виды «сброса» на Android
Аппаратный сброс на андроиде условно можно разделить на два вида:
- Полный (он же жёсткий ребут на андроиде) – удаление всех программ и данных на самом устройстве, или в каком-либо из выбранных разделах.
- Частичный – удаляет определённую папку (директорию).
Способы выполнения wipe
Выполнить Android wipe можно из следующих режимов:
- Меню настроек: переходим в меню настроек, затем «восстановление» и «сброс», отмечаем галкой «очистить SD-карту» (удаляются данные, хранящиеся на карте памяти, программы и файлы включительно, из памяти телефона информация тоже будет удалена).
- С помощью расположенной на аппарате кнопки «сброс» (если наличие предусмотрено производителем): с помощью скрепки (или похожего предмета) зажимаем кнопку сброса, и удерживаем 15-30 секунд (настройки сбрасываются на заводские).
- Меню recovery: чтобы попасть в меню рекавери, отключаем питание, зажимаем клавишу «домой» и качельку звука на увеличение, одновременно с кнопкой «включение». Важно: разные устройства могут иметь другие комбинации клавиш. Передвижение по любому меню производим уменьшением или увеличением громкости, а выбор действий осуществляем клавишей «питание» (включение). Кроме того, возможно использование ПК и программы ADB, универсальной для всех устройств. Предварительно включаем отладку по USB.
а) В стандартном меню recovery Android : выбираем Wipe data/factory reset, далее « Wipe cache partition», перезагружаем смартфон (Reboot system now);
б) В меню Recovery CWM (или аналогичное):
- Частичный Wipe (в случае «глюка» какой-то программы), с сохранением всех данных или программ: «Wipe cache partition», далее «Advanced», затем «Wipe Dalvick Cache», в заключение перезагрузка, или reboot на android
- Полный Wipe или hard reset android ( удаление всех программ и их данных): выбираем «Wipe data/factory reset», далее «Wipe cache partition», и перезагружаем смартфон (Reboot system now). Контент сохраняется.
Wipe через рекавери
Теперь непосредственно о wipe через рекавери. В классическом варианте recovery Android доступно два вида сброса:
Для удаления всех данных, хранящихся в разделах DATA или CACHE и папки, содержащие данные программ. Этим способом мы окончательно удаляем все приложения вместе с корневыми каталогами и личными настройками, но сохраняем медиафайлы (изображение, видео, музыка).
Wipe cache – стираем временную информацию о работе программ и приложений. Это действие обязательно при возникновении сбоев в функционировании системы.
А если ничего не помогает? Не стоит пенять на то, что «руки не оттуда растут», просто нужно выполнить «WIPE DATA/FACTORY RESET». В этом случае предусмотрена возможность сделать wipe применительно к любому разделу системы.
Дополнительная информация о вайп на Андроид
Зачастую на сайтах, публикующих информацию об android, можно найти инструкции по прошивке, а так же получению рут-прав. Эти руководства предписывают выполнение сброса настроек таким образом: wipe data, wipe cache, wipe dalvik cache, format data. Однако, это откровенно некорректная рекомендация, потому что она не раскрывает полной структуры меню recovery и говорит о незнании файловой структуры системы Андроид. Действие wipe data/factory reset удаляет раздел data, хранящий каталог dalvik cache. Значит выполнение некоторых манипуляций будет совершенно ненужным. Дело в том, что wipe и format – это термины, имеющие одно и то же значение, например раздел system/xbin не содержит файлов format, но там находится файл wipe.
Некоторые нюансы выполнения вайпа на Андроид
Часто пользователи стоят перед дилеммой: когда делается сброс настроек, перед прошивкой аппарата, или после? Ответ лежит на поверхности – конечно до перепрошивки , потому что любая прошивка как правило имеет встроенную функцию, с помощью которой производится автоматическая перезагрузка системы после того, как установка была завершена.
Если в прошивке в разделе «data» есть залитые файлы «wipe», смотрим, как система будет выполнять свои функции после загрузки, если плохо, то выполняем «wipe data».
И ещё чуть-чуть информации о тонкостях.
Вот, собственно, и всё, что мы хотели рассказать, очень надеемся, что наша информация оказалась полезной.
Несмотря на чрезвычайную популярность смартфонов, обычные кнопочные телефоны не потеряли свою актуальность среди людей, которым нужны исключительно базовые функции связи.
Рынок РФ заполнен множеством моделей разных характеристик, размеров, форм-факторов и расцветок: от миниатюрных телефонов размером с автомобильный брелок для удобной доставки на зону, до моделей а-ля 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 и подогреет желание к погружению в звонилки на платформах других производителей. Доступные в любом магазине, эти дешевые но полнофункциональные двухсимочные телефоны с доступом в интернет так и просятся в руки хакеров, чтобы их адаптировали не только под базовые потребности связи.
Как оказалось, нет ничего сложного в минимальном изменении функциональности подобных устройств. Автор не столкнулся с неразрешимыми проблемами, проделанный путь в целом совпадает с анализом прошивкок любого другого устройства, а доступные исходники, хоть и устаревшие, позволяют разобраться в архитектуре и, при желании, интегрировать новые функции, не обладая кодом самой прошивки.
Читайте также: