LINUX.ORG.RU

Исходники порта Doom для кнопочных телефонов на чипе SC6531

 , , , ,


3

3

Опубликованы исходники порта Doom для кнопочных телефонов на чипе Spreadtrum SC6531. Модификации чипа Spreadtrum SC6531 занимают около половины рынка дешевых кнопочных телефонов российских брендов (остальное за MediaTek MT6261, другие чипы редкость).

В чём состояла сложность портирования:

  1. Сторонние приложения на этих телефонах не предусмотрены.
  2. Малый объём ОЗУ - всего 4 мегабайта (бренды/продавцы часто указывают это как 32МБ - но это введение в заблуждение, так как мегабиты, а не мегабайты).
  3. Закрытая документация (можно найти только утечку ранней и неполноценной версии), поэтому многое добывалось методом реверс-инжиниринга.

В основе чипа процессор ARM926EJ-S с частотой 208 МГц (SC6531E) или 312 МГц (SC6531DA), может понижать частоту до 26 МГц, архитектура процессора ARMv5TEJ (нет деления и операций с плавающей точкой).

Пока что исследована работа лишь малой части чипа, это USB, экран и клавиши. Поэтому поиграть можно только при телефоне подключенном к компьютеру USB кабелем (ресурсы для игры передаются с компьютера), также в игре нет звука.

На данный момент запускается на 6-и из 9-и протестированных телефонов на чипе SC6531. Для перевода этого чипа в загрузочный режим, нужно знать какую клавишу удерживать при загрузке, клавиши для протестированных моделей: F+ F256: *, Digma LINX B241: центр, F+ Ezzy 4: 1, Joy’s S21: 0, Vertex M115: вверх, Vertex C323: 0.

Также были опубликованы два видео: с демонстрацией игры на телефоне и запуском на еще 4-х телефонах.

P.S.: Похожее было опубликовано на OpenNet, новость от меня, только отредактированная админом сайта.

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

Игра Doom была использована для привлечения внимания, в качестве примера, я бы хотел свободную прошивку для кнопочных телефонов. Их чипы гораздо мощнее, чем они используются в прошивке. Причём железо дешевое и массовое, в отличие от редких телефонов с «открытых» ОС или позволяющих выполнять свой код. Пока никого не нашел, чтобы скооперироваться, а реверс-инжиниринг тяжелое развлечение. Для начала было бы хорошо найти управление SD картой и управление энергопотреблением, чтобы можно было использовать эти телефоны как игровую приставку. Дополнительно к Doom можно портировать NES/SNES эмулятор.

>>> Исходный код



Проверено: hobbit ()

Херней страдают, что еще скажешь.

LongLiveUbuntu ★★★★★ ()

Нужно, годно.

Поскольку автор скромничает, досыплю ещё ссылок.

Публикации внахабре:

Репы на гитхабе:

Cast ValdikSS.

@ hobbit: предлагаю метку «reverse engineering» вместо «игры».

Quote ()
Ответ на: комментарий от Quote

По части ссылок еще предложу.

Тоже от меня, дампер прошивки для MT6260/MT6261:

И это старый проект 2016 года, не мой, но очень похожий:

Это разреверсили управление чипом MT6260. Периодически меня посещают мысли проверить, что из этого работает на MT6261. Но я для SС6531 уже заметно продвинулся, когда нашел этот проект. Так что решил дальше развивать реверсинг SС6531.

У меня есть несколько девайсов на MT6261 и один MT6260. К моему дамперу прошивки для MediaTek прилагается пример кода, что можно запустить на MT6260/MT6261. Так что по части MediaTek у меня есть только контроль над USB.

jpegqs ()

А есть ли клон для Nokia 1100?

Udacha ()

Хотел написать, что ненужно, а потом увидел, что речь о реверсе. Сам дум неинтересен и ненужен, а вот процесс реверса интересен

sehellion ★★★★★ ()
Ответ на: комментарий от jpegqs

Огромный респект автору этого проекта. И результат интересный, и скиллы автор прокачал до уровня 80

I-Love-Microsoft ★★★★★ ()
Ответ на: комментарий от sehellion

Я сам не фанат этой игры, но технически движок сделан интересно.

И раз уж есть традиция портировать Doom на разные девайсы, то решил ей придерживаться.

Если бы автор проекта «Fernvale OS» (для MT6260) использовал Doom в качестве примера - могло бы привлечь больше внимания.

jpegqs ()
Ответ на: комментарий от interrupted

а чего не на MT6261? этот помощнее вроде

тамо Крузис запустят

alt-tab-let ()
Ответ на: комментарий от interrupted

а чего не на MT6261? этот помощнее вроде

Вроде мощнее, ARMv6 и 260 МГц. Потому, что начал сначала Spreadtrum, и решил не гнаться за двумя зайцами одновременно.

Может еще погоняюсь и за этим. Может нет, реверс-инжиниринг это сложная работа.

jpegqs ()

Интересно, а стек gsm модуль там можно использовать? Что то типа freeswitch ил астериск звонилки, чтобы по вайфаю можно было как транк использовать?

AVL2 ★★★★★ ()

Малый объём ОЗУ - всего 4 мегабайта

Ужас какой. Даже в моем плеере на X1000 64МБ.

Meyer ★★★★★ ()
Ответ на: комментарий от Meyer

Сейчас даже в портативных консолях эмуляторах Денди и то гигабайт! О_о

I-Love-Microsoft ★★★★★ ()

может уже начать вести какой-то учет электроники на которой он запускается?

На фотиках https://www.youtube.com/watch?v=7gCZZkBATSc

На тесте на беременность https://www.youtube.com/watch?v=D5NTJSfUWDE

На гребаном кубике лего https://www.youtube.com/watch?v=DwMhtTR_8c8 + видео изготовления гребаного кубика https://www.youtube.com/watch?v=6wBrOV2FJM8

И это только то что я из головы помню

Unixson ()
Последнее исправление: Unixson (всего исправлений: 1)

Респект. Я как-то давно купил себе китайское чудо LendRover X9 (прошивка по клавише 6) на этом процессоре, долго пытался понять в каком формате туда можно устанавливать приложения. Скачал как-бы исходники MOCOR'а с сайта Spreadtrum, прочитал что их нужно собирать в MS VS под WinXP, пришёл в ужос. Попытался слить прошивку с помощью FlashTool, окирпичил телефон и забил.

Мне всё это интерестно, но свободного времени совсем нет.

mky ★★★★★ ()
Ответ на: комментарий от xt1zer

Скоро на всех кухнях страны

Главный босс - ТЕЩА, вооруженная скалкой и сковородкой :)

DrRulez ★★ ()
Ответ на: комментарий от AVL2

Интересно, а стек gsm модуль там можно использовать? Что то типа freeswitch ил астериск звонилки, чтобы по вайфаю можно было как транк использовать?

Думаю что сложно будет разобраться с gsm, я не буду этим заниматься. Если кто-то хочет попробовать - может текущее взять за базу и разбираться с gsm.

Вайфай на чипе нет, только Bluetooth. Как использовать Bluetooth - тоже надо найти реверс-инжинирингом.

jpegqs ()
Ответ на: комментарий от mky

Скачал как-бы исходники MOCOR’а с сайта Spreadtrum, прочитал что их нужно собирать в MS VS под WinXP, пришёл в ужос.

А можете вспомнить, где вы брали исходники? И что это вообще было, я хочу посмотреть. Старого сайта Spreadtrum давно не существует, после объединения Spreadtrum с RDA и переименования в Unisoc. (Часть сайта сохранено в интернет архиве.)

jpegqs ()
Последнее исправление: jpegqs (всего исправлений: 1)
Ответ на: комментарий от jpegqs

Я попробую найти. Там что-то большое было, ЕМНИП, несколько Гб. SSD были маленькие и я на какие-то НЖМД сохранял. На следующей неделе буду искать.

mky ★★★★★ ()

Вот это поинтересней чем дум на очередном чайнике.

kirill_rrr ★★★★★ ()

А в чем проблема с количеством оперативной памяти? Оригинальный Doom на 4 Мб и работал.

pandrey ★★ ()

огонь! Хоть и бессмысленно, но всё равно круто.

SpaceRanger ★★ ()
Ответ на: комментарий от pandrey

А в чем проблема с количеством оперативной памяти? Оригинальный Doom на 4 Мб и работал.

  1. Почему-то ванильный Doom аллоцирует шесть мегабайт (исходники от id Software на гитхабе). Это только для внутренних данных игры, а ведь нужно еще кучу фреймбуфферов. Что я снизил до трёх, и оно вроде работает, но подозреваю что на какие-то сложные/крупные уровни не хватит (это общий движок для Doom 1/2 и разные аддоны/модификации к ним).

  2. Если, допустим, я хотел бы запустить Doom как приложение при работающей OC - то места для игры уже будет слишком мало. Сейчас запускается без ОС, только игра. Впрочем, пока я не умею вставлять в эту ОС никакие приложения.

jpegqs ()
Ответ на: комментарий от mky

Я попробую найти. Там что-то большое было, ЕМНИП, несколько Гб. SSD были маленькие и я на какие-то НЖМД сохранял. На следующей неделе буду искать.

Поищите, пожалуйста. Если вы нашли какой-то SDK для разработки приложений - то это будет очень полезно.

Я тоже недавно искал, но ничего найти не смог. Находил пример игры для MocorOS на гитхабе, но без SDK это бесполезно.

На сайте Spreadtrum из интернет архива - есть страница про Mocor Platform, но там ничего нет кроме текста.

jpegqs ()

для кнопочных телефонов на чипе Spreadtrum SC6531

Жаль, что разработчики всего этого не желают код прошивок публиковать. Было бы любопытно изучить.

apt_install_lrzsz ★★ ()
Ответ на: комментарий от apt_install_lrzsz

Жаль, что разработчики всего этого не желают код прошивок публиковать. Было бы любопытно изучить.

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

jpegqs ()
Ответ на: комментарий от jpegqs

У меня где-то валялись утёкшие исходные коды MTK OS парочки китайских телефонов, они вам интересны? Там вроде как была даже реализация GSM-стека, но подробно я не смотрел.

Меня просто попросили некоторые энтузиасты, которые ковыряют кнопочные ретро-мобилки, перенести пару игр оттуда в Web, что я за пару вечеров и сделал:

Но лично мне вся эта китайская внутренняя кухня отвратительна, как собственно и сами современные китайские кнопочные телефоны. Гораздо интереснее поковыряться в старых Siemens, Nokia, Sony Ericsson и Motorola, чем в этом подвальном изуверстве.

EXL ★★★★★ ()
Ответ на: комментарий от EXL

У меня где-то валялись утёкшие исходные коды MTK OS парочки китайских телефонов, они вам интересны? Там вроде как была даже реализация GSM-стека, но подробно я не смотрел.

Это что MAUI называется? Выложите куда-нибудь, могут оказаться полезны, даже если для другой версии чипа.

jpegqs ()
Ответ на: комментарий от interrupted

На медиатек даташиты гуглятся

Гуглятся, но в отличие от datasheet от Spreadtrum - у Медиатековских только описание фич и описание контактов чипа, что совершенно бесполезная для меня информация. У Spreadtrum же описание глобальных регистров разных систем на чипе. Возможно у Медиатек тоже такое есть, только надо знать как правильно документ называется.

jpegqs ()
Ответ на: комментарий от jpegqs

Напишите мне в личные контакты в профиле (желательно в Telegram) я скину вам архивы, там срезы по несколько ГБ исходников и с кучей конфиденциальной информации, заливать подобное в паблик сильно лень и как по мне не особо этично.

EXL ★★★★★ ()

Малый объём ОЗУ - всего 4 мегабайта
процессор ARM926EJ-S с частотой 208 МГц (SC6531E) или 312 МГц (SC6531DA), может понижать частоту до 26 МГц

Пока не вижу каких то проблем. DOOM у меня прекрасно работал на процессоре 80386 с частотой 33 Мгц и памятью в 1 Мб.

Rodegast ★★★★★ ()

Народ Вы что ? Прочитайте внимательно новость. Никакого порта нет. Дум запускается на компе а телефон только управлялка и экран !

mx__ ★★★★★ ()
Ответ на: комментарий от tiinn

Это он с wolf перепутал, насколько я помню дум уже нужно было 4мб и выше.

mx__ ★★★★★ ()

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

Да, тут сложно говорить о лицензии. С одной стороны, какую лицензию укажет автор работы, такая и будет.

Но: https://zakon.ru/blog/2016/10/11/reversinzhiniring_i_rossijskoe_pravo

Поэтому использовать это где-то официально, думаю, нельзя. С другой стороны, это ведь «Just for fun». Поэтому nobody cares.

virx ()
Ответ на: комментарий от mx__

Да нет же, это ты внимательно новость почитай.

Doom запускается на процессоре телефона в режиме заливки прошивки (лоадера) когда запускаемой программе доступна вся оперативная память, поскольку она не занята прошивкой телефона, GSM-стеком и т. д.

EXL ★★★★★ ()
Ответ на: комментарий от mx__

Народ Вы что ? Прочитайте внимательно новость. Никакого порта нет. Дум запускается на компе а телефон только управлялка и экран !

Есть видео где я отключаю от USB и игра работает. Потом зависнет при переходе на следующий уровень. Потому что не сможет ресурсы запросить через USB. Игра честно работает на CPU телефона, компьютер используется как удалённая файловая система и для вывода логов.

jpegqs ()
Ответ на: комментарий от EXL

Пока что исследована работа лишь малой части чипа, это USB, экран и клавиши. Поэтому поиграть можно только при телефоне подключенном к компьютеру USB кабелем (ресурсы для игры передаются с компьютера), также в игре нет звука.

А стоп, торможу, это они комп юзают как флешку, сорри.

mx__ ★★★★★ ()
Последнее исправление: mx__ (всего исправлений: 1)
Ответ на: комментарий от mx__

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

jpegqs ()
Ответ на: комментарий от jpegqs

Всё-таки было бы круто найти в прошивке этих кнопочных телефонов какую-нибудь уязвимость типа срыва стека и на её основе сделать что-то типа ELF-лоадера, как это было когда-то давно сделано в древних Siemens, Sony Ericsson и Motorola.

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

Ещё подобный подход открывает довольно интерсные возможности по части превращения такой вот китайской кнопочной мобилки в простенький GSM-модуль с возможностью совершения звонков, отправки SMS и т. д. Я вот недавно баловался подобным и сделал ELF-программу, которая отправляет SMS на указанный номер при потере и появлении питания в сети: https://github.com/EXL/P2kElfs/blob/master/PowerAlert/PowerAlert.c

EXL ★★★★★ ()
Ответ на: комментарий от EXL

Скорее всего уязвимостей в прошивке предостаточно. Сам находил несколько переполнений буфера в FDL1 загрузчике. Что может пригодиться, если попадётся телефон что требует подписанного кода (там есть EFUSE, когда ключ для проверки подписи прожигается в чип). Но этим только известные бренды балуются, я пока таких телефонов не покупал, так как то же самое, но стоит дороже.

На гугл почту вашу написал по поводу исходников к MTK.

jpegqs ()
Ответ на: комментарий от mky

Скачал как-бы исходники MOCOR'а с сайта Spreadtrum, прочитал что их нужно собирать в MS VS под WinXP, пришёл в ужос.

Это наверное старый MOCOR, который по сути форк Android 4.x.

Здесь скорее всего проприетарная ось на основе ThreadX.

Но всё равно интересно посмотреть.

Quote ()
Последнее исправление: Quote (всего исправлений: 1)
Ответ на: комментарий от jpegqs

Скорее всего уязвимостей в прошивке предостаточно. Сам находил несколько переполнений буфера в FDL1 загрузчике.

Кстати, вот вам интересные статьи, может быть после их прочтения вы вдохновитесь на подобный проект и для этих кнопочных китайских телефонов:

На гугл почту вашу написал по поводу исходников к MTK.

Архивы вам отправил, удачи.

EXL ★★★★★ ()

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

Код без лицензии, по сути, использовать нельзя, от слова «совсем». Если код отпущен в Public Domain, это явно должно быть указано.

Если там нет совсем уж прямой копипасты из дизассемблера/декомпилятора, а большей частью авторский код — лицензию автор вправе указать какую заблагорассудится.

Quote ()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.