Как стать автором
Обновить

Рецепт фасолей: как я отреверсил бюджетный кнопочный телефон, хакнул его и научил запускать нативные программы на C

Уровень сложностиСредний
Время на прочтение19 мин
Количество просмотров9.5K
Всего голосов 78: ↑76 и ↓2+99
Комментарии69

Комментарии 69

Друзья, наработки по бинлоадеру доступны здесь:
https://github.com/monobogdan/spreadtrum-binloader

Если у вас есть B240 и вы хотите прошить уже готовую прошивку с лоадером, в папке есть файл patched.bin - это уже пропатченный фуллфлэш. Библиотека функций пока что статически линкуется с бинлоадером (из-за чего ограниченя в размерах), но позже должна переехать в конец фуллфлэша. Помимо этого, в прошивке есть еще пару полезных патчей (на пропуск анимации включения например).

Если кому-то нужна будет база в IDA Pro - пишите в ЛС, поделюсь.

Также мне читатели и зрители надонатили денюжку, а я решил заказать на них НОВЫЕ бюджетные кнопочники с интересным, по моему мнению, дизайном. Все они работают на базе SC6531DA и конечно мы с @ILYA_ZX будем ковырять. Илья написал распаковщик сжатых LZMA областей в прошивке, а я мечтаю систематизировать паттерны самых необходимых функций и написать УНИВЕРСАЛЬНЫЙ патчер, которому на вход поступает прошивку от любого бюджетного кнопочника из DNS и на выходе будет уже готовая, пропатченная прошивка, способная запускать произвольные эльфы!

Скрытый текст

А скоро мы с вами в рамках статьи вскроем коробочку, которая с 2004 года лежит запечатанная.. Кто догадается что в ней? :)

Какая-то мобила из двухтысячных, с MP3, двумя симками и телевизором? Или ещё один телефон-консоль?

Какой-то КПК наверное... Случайно не тот, где экран можно по разному поворачивать?

Тот

Верно)

О. Крутое пополнение!

Какой симпатичный!

кверти-слайдер а-ля нокла е7 или n950

Добрый день, Богдан.
А если взять более древний арм - типа TI Calipso, ARM4TDMI?
Осмоком - есть, но может другие есть исходники?
моторолок было много упрощенных.

На осмокомах MMI разный же

Я все жду статьи, когда можно будет не только на любом кнопочнике запускать эльфы, но и использовать его как одноплатник.

С разработкой бинлоадера такая возможность уже есть. Найти функции прошивки для отправки данных в UART не не составит труда, а через UART можно общаться с микроконтроллером, который будет выполнять мост между процессором и GPIO :)

Ну вообще бурное развитие электроники нас сильно разбаловало, поэтому сейчас не только лишь все вас поймут... И эти люди в целом будут даже по своему правы, а зачем собственно? Причем это даже по цене не имеет смысла уже, какой нить esp32-s3 все равно стоит меньше и под него есть удобные и понятные средства для разработки, ну если не брать варианта что вы телефон на помойке нашли или ещё как получили, например по наследству. :)

Когда прочитал про то что недавно наконец-то сделали возможность запускать эльфы на с380, с650 - всплакнул даже, но потом вспомнил какой сейчас год на календаре... Как говорится - дорога ложка к обеду! Хотя может и откопаю свою с380, если она заведется и у меня будет подходящее настроение, может и вспомню как это было 20 лет назад...

В есп32 не будет дисплея и такого количества памяти)

На алике есть куча готовых полуфабрикатов с экранами, разъемом для сд карты и даже ОЗУ целых 8мб! :) А ещё с гпс, лорой и так далее. Даже практически готовые устройства есть с е-инк и тачскрином, есть с кнопками. Ну или б.у. смартфон за копейки можно взять, короче вариантов тьма, не то что было 20 лет назад конечно. Так что в общем и целом это ковыряние сейчас имеет очень мало какого то прям практического смысла. Ни разу пытаюсь принизить саму проведенную работу, это реально круто.

Недостаток б/у смартфона в том, что их сложно найти даже десяток одинаковых, а тем более больше, а значить мелкосерийное изделие на них не сделать. А полуфабрикаты с экранами и 8мб ОЗУ стоят заметно дороже кнопочных телефонов. И в них как правило нет GSM, а он тоже может быть полезен.

Найти десяток смартфонов одного производителя и одной модели для вашего мелкосерийного изделия, вполне посильная задача, но тут даже это не нужно, достаточно брать +/- одного поколения, с относительно схожим железом и с +/- одной версией андроида, причем все это в довольно широких пределах. А наличие унифицированной ос, апи - гарантирует работу одного и того же приложения на всем этом разнообразии устройств. В том то и прелесть унифицированной ос в отличии от написания кода на голом железе, там да шаг в право, шаг в лево и все уже все поплыло или вообще окирпичило железку.

Вот сейчас взять и найти 10-к каких нить айфонов 4-5-6 даже в хорошем состоянии не проблема совсем, так же в принципе с достаточно популярными самсунгами к примеру и так далее это если надо вообще полностью идентичное железо и ос конечно, но скорее всего это и не нужно в большинстве случаев.

У этих решений плюс в том, что десяток таких телефонов можно найти дешевле, чем вот такой набор на ESP. Можно, например, сделать какой-нибудь пульт управления с расчётом на то, что если разобьют или потеряют - не особо жалко.

И если взять армейское применение, США в 00-е приняли, ибо могли такое соорудить, для своих систем тактического звена C4ISR - ниже роты шли обычные тогда лопатники самсунги, только не с типовой прошивкой. Массовое железо, дешевле некуда.
Сломал, пролюбил - выдали новую, ключ ид пользователя зашили, старый - бан в сети.
Как на такое решение облизывались разработчики в СНГ.

Айфоны это супермассовая модель, потому что в один год все любители яблока покупают какой-то условный айфон 6/7/8 .. и они расходятся миллионами. А с китайскими девайсами не так. Их меньше было выпущено раз, после старения к ним относятся как к мусору два, и третье, самое главное - несколько устройств с одинаковым названием от производителя могут иметь сильно разные аппаратные ревизии и разные запчасти.

Ну поэтому я и вспомнил про айфоны, полностью идентичное железо и софт, а цена на устаревшие модели очень низкая. Даже если использовать чисто по прямому назначению, как звонилку, то лучше уж взять какой нить старенький айфон в хорошем состоянии чем новенький китайский кнопочник. А уж для всяких самоделок и подавно.

Да и в принципе какой-то топ или средний сегмент нулевых в хорошем состоянии сейчас будет при схожей цене лучше, чем что-то бюджетное сейчас. Что по качеству изготовления, что по возможностям.

Мелкосерийное изделие - это не только электроника, но и корпус. А корпус для разной электронной начинки или разных моделей телефонов, которые в него будут встраиваться, нужен разный. Десяток может и можно найти, а 50, 100? Кнопочные телефоны на Spreadtrum можно купить от $12, хоть сотню, хоть две.

На готовых поделках с esp32 своих подводных камней как грязи...

Но в целом да - сейчас есть какой-нибудь luckfox, milk-v duo или hi-link, делающие очень мелкие, но паябельные дома SoM, не надо морочить голову разводкой сложных многослоек. Причем там есть полный sdk c с линуксом. Есть Simcom, у коорого навалом сотовых модулей, 2G по баксу на али лежат, 4G пятнаху стоят. Экранов ваще навалом, и хороших, и плохих, и даже круглых. Корпуса на фотополимернике самого днищевого уровня получаются как заводские. Бери и запиливай свой кнопочный телефон с блекджеком и змейкой... Всё есть в модулях, причем если раньше это были корявые оргомные поделки для ардуино, то сейчас полно и приличных мелких SoM, которые не стыдно в прод ставить.

Единственное, ради чего стоит ломать старые телефоны - спортивный интерес. Это реально занимательно, пусть и не очень-то полезно в глазах окружающих.

Единственное, ради чего стоит ломать старые телефоны - спортивный интерес. Это реально занимательно, пусть и не очень-то полезно в глазах окружающих.

Иногда в процессе такого ковыряния обнаруживается кое-что интересное...

Зато дешёвые телефоны! Которых можно набрать мешок по рублю и внедрить в свои проджекты!:)) Как тут выше @Sun-amiсоветует... А потом доказывай что верблюд не ты...

Я никому ничего не советую, я говорю, что доступность серийно выпускаемых до сих пор кнопочных телефонов для запуска своих бинарных программ даёт новые возможности. А пользоваться ими или нет - каждый решает сам. Если опасаетесь бэкдоров и троянов - не вставляйте SIM-карту и не используйте сотовую связь. Или найдите и удалите их из системы. Или используйте проверенный кем-то на отсутствие троянов и бэкдоров телефон - есть разные возможности.

Подскажите волшебное слово, как найти на алике эти полуфабрикаты.

esp32 display, esp32 e-ink, esp32 lora, esp32 sim module и так далее и тому подобное... :)

И эти люди в целом будут даже по своему правы, а зачем собственно?

Возможно, кого-то привлечёт наличие уже готового корпуса с кнопками, дисплеем, а иногда и какой-то периферией. С учётом того, что эти телефоны зачастую можно заполучить почти бесплатно или купить в состоянии, не сильно далёком от нового, по цене буквально в триста-пятьсот рублей (зачастую в составе целого лота в духе "Пять старых телефонов и три зарядки, всё работает, но давно не используется"), ничего так вариант.

Именно в этом и прикол) А еще есть GSM, так что можно намутить что-нибудь полезное сигнализационное)

Сразу вспомнилось вот такое:

Это такая приблуда, Spy-Tel называется. Туда втыкается Nokia 3310, которая может контролировать несколько шлейфов сигнализации.

А со своей прошивкой можно сделать что-то подобное, только компактное и дешёвое...

Например некто Sabodyn сделал для Siemens C45 и C55 патч Simpage который превращает телефон в охранную сигнализацию. Патч был в бесплатном варианте на один шлейф и в платном на два. Архитектурно патч построен на отправке AT команд из кода патча в обработчик команд в телефоне. Подробнее тут: https://web.archive.org/web/20070128001333/http://www.webcenter.ru/~kat/SimPage.html
Если что у меня сохранился патч и pdf к нему.

А вот использовать отправку AT на S/ME45i не полкчилось, там обработчик не работал пока кабель не подключишь. Я покопался немного но так обход и не нашел.

Хобби. Купил телефон, BQ3587, телефон понравился, основной минус - на мои bluetooth наушники заикается. Пришлось расковырять прошивку, поправил. Хотел отпуск провести на связи, без интернета. В итоге из 28 дней отпуска 3 провел на берегу озера, с допиленным телефоном) Телефон на Spreadtrum. Разбираться было интересно, отпуск не прошел даром, это к вопросу зачем. Электроника действительно нас разбаловала в плане выбора, я набрал кучу модулей/микросхем/FPGA, которые лежат и я более чем моргание диодом не сделал. ESP32 там же, руки не доходят проверить возможности и производительность.

Круто. Фикс BT кажется нетривиальной задачей, даже если иметь исходники. Возможно потому что у меня поверхностное представление о BT и A2DP.

Электроника действительно нас разбаловала в плане выбора, я набрал кучу модулей/микросхем/FPGA, которые лежат и я более чем моргание диодом не сделал.

Нужно иметь внятную цель чтобы что-то сделать. Вот есть у тебя плата с МК или FPGA и можешь ты на ней что-то сделать, на одной, на второй, на третьей - на любой. И если надо что-то делать делаешь на привычной. А вот если есть конкретный девайс и в него надо что-то добавить, то тогда прийдется его изучить, возможно что-то отреверсить и добавить то, что тебе нужно.

Откопайте обязательно, даже прошивка новая с эльфпаком для Motorola C380, C650, V180, V220 есть. Носталгия на пару вечеров обеспечена (:

Motorola C380/C650/V180/V220 custom firmware
Motorola C380/C650/V180/V220 custom firmware

Или использовать как пульт управления старшим братом-одноплатником без экрана и клавиатуры.

Огонь статья, прочитала на 1 дыхании

Спасибки) На этом еще не все, я просто не успел змейку дописать))

Я возможно потом возьму интервью у @ILYA_ZX и @Andy51 если они захотят

В процессе реверса функций для открытия окон в прошивке я нашел скрытое меню... с дополнительной игрой, которая есть в прошивке, но штатными способами до неё невозможно добраться!

Прямо напомнило восьмибитные картриджи. Когда-то пару раз перемычками тоже находил "скрытые" игры.

Интересно, много ли людей встаривали в картриджи переключатели, чтобы получить бесплатно еще пару игр?)

Точно помню, как кто-то рассказывал, что проделывал такой трюк с тетрисом (Brick game из девяностых). Там в какой-то из бесчисленных модификаций при замыкании перемычек помимо тетриса появлялись гонки и ещё какая-то игра.

  • Стрелялка наверное. У меня было несколько таких игрушек, но в основном позже, а в той что в студенческие годы купил, уже сразу было 96 или 99 игр. Вскрыл на 3 или 4 день, т.к. при включении оно орало мелодию, лекторов пугало ) пришлось доработать. Там уже без всяких перемычек и намеков на какие-то настройки.

Либо арканоид, либо стрелялка.

Вот ещё вспомнил (к телефонам никак не относится, но раз уж упомянули..). Аналогичные опыты проводил в детстве и на шестнадцатибитных картриджах - там тоже были какие-то контакты, очень похожие на какие-то перемычки или тестовые пины. Они никаких секретов не раскрыли, но зато узнал, что, оказывается, на Sega есть свой BSOD - такой же синий экран с белым текстом.

Вот этот экран "Address error" я помню хорошо. Тогда, правда, не знал, что это всё такое.

Я только об этом узнал))

Никогда не поздно вкатиться в разработку и под классические консоли...

Эх, мне не новые игры не попадались. Список изменялся от 100 в одном к 10000 в одном, и появлялись интересные вариации игр)

И особенно весело было перебирать 10000 игр нажимая кнопку инкрементирующую счетчик и пытаться понять чем игра 2566 отличается от игры 3846.

Спасибо

Отличная статья, настоящая хабрагоднота! Отдельное спасибо за то, что был найден Spreadtrum SC6500L в полноценном (не монохромном) кнопочнике. Я-то думал, этот проц ни на что не годится.

я вот думаю что чуть побольше смысла было бы покопаться в платформах которые умеют 4g в них потенциала досточно чтобы реализовать несколько более актуальную времени годноту. сименсы и моторолы то ломали когда они были в широкой продаже? помню как давным давно мне показали чб simens на котором запустили че то wolfenstein подобное

и отдельный момент - GSM ядро и протоколы, любопытно как это реализовано с точки зрения многопроцессорности и ОС

и отдельный момент - GSM ядро и протоколы, любопытно как это реализовано с точки зрения многопроцессорности и ОС

Насколько я понял, это почти всегда отдельная вселенная с своим процессором и максимально огражденная от основного процессора и прошивки. Есть некоторые модели от Моторола, где получали доступ непосредственно к ПО модуля GSM, но там их если мне по изменяет память целых две штуки они весьма старые и их ещё надо поискать на вторичке. Зато при помощи этих телефонов и одноплатного компьютера можно реализовать к примеру свою GSM базовую станцию в режиме 2G.

это да поэтому и спрашиваю

статьи про эти телефоны и свою базовую есть на Хабре

Статья интересная, ждем продолжение. Одна поправка - thumb включается нулевым битом а не первым.

Процессорный модуль для IDA взяли готовый или сами написали?

Готовый, ARM там почти с самого начала

Спасибо за статью! Это именно то зачем я захожу на Хабр

Интересная статья. Мало что мне понятно, как неспециалисту. Но такая тема может быть актуальна для распространенных mp3 плееров. Прошивка у которых та ещё китайская недоделанная. А вот хорошая функциональность востребована, например, при изучении языков. Я уже думал, что может самому с помощью ИИ прошивку переписать.

Теме альтернативных прошивок для MP3 плееров примерно столько же лет сколько и теме патчей для телефонов. Гуглите по названию Rockbox. Впрочем я плееры не патчил, это друзья мои патчили.

Решил сказать о своем (куда более локальном) патче для более свежего Spreadtrum кнопочника на платформе MOCOR12: DIGMA LINX A106 (монохромный). Это - подражание NOKIA 1202. Есть даже USSD команда, которая переключает картинку при запуске и остановке телефона с DIGMA на NOKIA и обратно. Побудительным мотивом стало то, что в минималистичном телефонном меню этого аппарата нет гибкой регулировки длительности и яркости подсветки, а дефолтные яркости слишком велики для темноты и не нужны при хорошем освещении (рефлективный STN дисплей). Яркость можно менять из инженерного меню (в интервале 1-95), но только до выхода из этого меню, при котором она сбрасывается к прежнему значению. Кроме того, в наиболее рабочей версии прошивки не предусмотрено выключение подсветки.
В итоге сделал гибкую регулировку И яркости И длительности подсветки через инженерное меню регулировки яркости. Патч перехватывает выдаваемое им значение и при величине кратной 5 выставляет соответствующую длительность подсветки в сек, а при иных значениях - яркость. Для максимального значения (95) выставляется не 95 сек, а бесконечная длительность. Аналогично, для минимального значения (1) хочу сделать выключение подсветки, но, копаясь в дизассемблированных кодах, не нашел, как она выключается. Возможно, вы сможете что-то подсказать на основе своего опыта. Можно в ЛС.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий
OSZAR »