Эльфы, живущие в мобильном телефоне



    Android заполонил всё. Куда не глянь — новый супер-пупер смартфон на Android 2.0, 3.0, 4.0… Техника устаревает на глазах, Прогресс шагает вперед и это хорошо. Но было время, когда никто не знал про Android, а телефоны стоили столько сколько сейчас стоят смартфоны.

    В те времена на обычных телефонах были и кастомные прошивки, и патчи, но не хватало приложений — хороших и разных. «А как же ява?» — спросите вы. Да, были ява-приложения. Но что умеет ява? А главное как быстро она работает? В общем, когда всем надоела тормознутая ява с ограниченными возможностями, пришёл он — ELF.

    Эльф — Это unix-формат исполняемого файла. Он позволил использовать все возможности железа телефона и все возможности прошивки. Словом — это нативное приложение, которое работает в разы быстрее, чем ява. Эльфы превращали обычный телефон в смартфон и давали почти безграничные возможности.

    Первой мобильной платформой из известных мне где появились эльфы, был Siemens, потом они появились на SonyEricsson и Motorola. Нужно сказать, что просто так эльф на телефоне не запустить — нужен эльфлоадер (elf loader) специальный патч, который «конвертирует» формат в обычный бинарик, грузит его в память и запускает на выполнение. Ну если хочется (а точнее даже приходится для запуска эльфа) использовать уже готовые функции прошивки, то необходима библиотека функций (названия функций + адреса). Основная проблема тут в том, что адреса этих функций у всех прошивок разные, но выход есть — код этих функций практически одинаковый и можно искать эти самые функции по, так называемым, паттернам.

    Весь кодинг эльфов для Motorola достаточно сложное и вместе с тем очень интересное занятие, которое непосредственно связано с реверсингом кода прошивки. Добавляет сложности то, что приложения реализованы на событиях (т.е. практически всё асинхронно). События ставятся в очередь, их ловят обработчики событий, таким образом реализована многозадачность. Сами эльфы пишутся на Си или С++, но в большинстве случаев можно обойтись и без ООП.

    Что же могут эльфы? Пусть их возможности продемонстрируют скрины (кстати для создания скринов тоже есть свой эльф):



    Informer – слева, Infograph – посередине, DeskUtils – справа. Все эти эльфы предназначены для отображения различной информации на рабочем столе: погода, местоположение, баланс на симке, заряд батареи, уровень сигнала и т.п.



    Аудиоплеер eTunes в различных «шкурах». Пожалуй, один из самых масштабных эльфов на Мото.



    Ещё несколько приложений слева-направо: читалка, калькулятор, дополнительное меню, hex-редактор.



    Ну и куда же без игр: бомбермен, пингвин Тюкс, линии, сапёр, дурак и тетрис

    Конечно, это не все эльфы. Есть ещё и джабер, и майл-агент, и аська, и многое дугое. Все эльфы для Моторола вы можете найти на форуме motofan.ru

    UPD: На мотофане осталась архивная тема, по которой можно узнать о том как шёл процесс рождения эльфов

    PS: Если кто-то обладает информацией о том, как развивались эльфы на SE и Сименсах, и желает помочь с продолжением статьи, можно отписать мне в ICQ или ЛС
    Поделиться публикацией

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

      +7
      Сейчас 2012 год, на минутку.
        +11
        поэтому и «История IT»
        Навеяно коментарием
          +4
          А, окей, просто по слогу статьи как-то ни разу не похоже на «Историю».
            +1
            О, какую цепную реакцию я вызвал своей статьей.
            +6
            Да, это верно.
            Но проделанная в свое время работа, достойна уважения.
            Думаю многие вспомнят эти времена с ностальгией.
              +2
              Да было гораздо интереснее когда запускал на телефоне это чудо. Не то что сейчас, в маркетаппстор зашел-скачал и все работает.
                0
                Сейчас примерно такое же чудо, когда запускаешь на андроиде что нибудь консольное. Кстати сейчас есть Xserver вроде бы уже тянет некоторые простые открытые IDE. Так что можно уже и веб сервер ставить например и кодить. Да и gcc можно запилить в chroot.
                  0
                  Я вам открою секрет — на андроиде можно даже консольные Dalvik-программы запускать, которые с точкой входа в public static void main(String[] args)
                  Есть веб-сервер i-jetty — можно закидывать обычные варики, обработанные dx-ом, с classes.dex в /WEB-INF/classes
                    0
                    Linux chroot как то роднее.
            +11
            Эльфы, демоны, зомби… в волшебном it мире живем мы
              +2
              А с этой нечистью борются палладины с четырехцветным флагом на щите, несущие службы, и использующие иконки.
              0
              Интересно… Эльфа бы на андроид: эльф превращал смартфон в ****** и давал безграничные возвожнсти.
                +2
                Эээээ… Там и так все не нативные бинарники суть есть ELF, это родной для линукса формат исполняемого файла.
                +1
                в квантовый компьютер? )
                  +1
                  Так, если не ошибаюсь, софт на андроиде выполняется в java машине dalvik, запущенной на ядре Linux
                  Возможен ли запуск нативного кода (этого самого ELF) в обход java-машины, обращаясь к ядру?
                    +3
                    Да, используя Android NDK
                      0
                      Однако Android NDK все равно работает поверх джавы. Тот же Native Activity всего лишь оборачивает соотвествующий класс джавы. Совсем в обход не получится.
                        0
                        Компилируют же как-то. Например, бинарники, которые входят в состав самого андроида. Скорей всего получится с подключением исходного кода/заголовочников bionic.
                          +1
                          Я выразился неправильно. Бинарник вполне можно получить с помощью Android NDK, и даже запустить (из консоли). Но можно ли сделать «нормальное» приложение, запускаемое из меню, без джавы?
                            0
                            Думаю, что нет.
                      +1
                      Возможен
                        +1
                        Конечно! Посмотрите в /system/bin! И найдете много знакомых из linux-дистрибутивов программ.
                        У меня на LG p500 и bash есть. :)
                      +1
                      Эх, а помимо графики еще браузер был на эльфе, эдакая пародия на Опера- Балет назывался)
                        0
                        а на Мото так и не дожили до этого времени
                          +2
                          Эх, мне щас 512мб оперативы не хватает, а раньше из Java HeapSize вытаскивали драгоценные килобайты) У меня аж 2мб оперативы было)
                            +2
                            А siemens s75 с его 16 Мб был вообще мега — смартфоном)
                            • НЛО прилетело и опубликовало эту надпись здесь
                                0
                                Опа, у меня был :) Очень классный телефон был, кстати. Единственное, что раздражало, так это кнопки не самые приятные в тактильном плане.
                          0
                          в квантовый компьютер? )
                            0
                            сорри, промахнулся :(
                            и почему комменты нельзя удалять
                              0
                              Чтобы люди в следующий раз думали перед тем, как писать )
                            +4
                            Помню можно было поставить mp3 на Siemens CX70
                              0
                              Вот только из — за 10 Мб внутренней памяти смысла особого в этом не было.
                                +1
                                ну почему, сменить пиликающий рингтон на mp3 мелодию лет 7-10 назад было шиком…
                                  0
                                  Мне и wav хватало — dсе сразу думали, что мой телефон с mp3)
                                  10 лет — это вы загнули.
                                  Кстати, mp3 вроде с помощью патчей запускали, а не эльфов?
                                    0
                                    Да, патчем вроде запускалось.
                                      0
                                      Про mp3, да, патчами, это лирическое отступление было)
                                      +1
                                      на сколько я помню, то mp3 открывались через соответствующий элф — плеер и поставить ее на звонок было нельзя
                                        0
                                          0
                                          Хотя, если память не изменяет, то далеко не сразу такую фичу сделали после прикручивания mp3 к x65
                                    0
                                    Ох, ностальжи, до сих пор где-то валяются патченные сименсы cx75 (рабочий) и e71 (тоже рабочий, только батарея сдохла совсем)
                                      0
                                      Эх, а у меня вот Samsung GT-E1225T, всё устраивает, ничего в нём лишнего нет, но блин, как хочется сменить мелодию звонка на какую-то нестандартную. Сколько искал, простых путей добраться до файловой системы не нашёл.
                                      • НЛО прилетело и опубликовало эту надпись здесь
                                          +1
                                          Ох уж да, что творили с Razr… Это я уже не говорю о Razr2, который вообще на линукосовом ядре был.
                                          • НЛО прилетело и опубликовало эту надпись здесь
                                          +2
                                          Ох, сколько я Сименсов перековырял. ) Некоторые экземпляры лежат в коробке, включая любимые C55 (переделанный из А52) и S65.
                                          Про то, что гики раньше вытворяли с Сименсами можно не то что заметку коротенькую, а книгу писать)
                                            0
                                            И с samsung кстати тоже!
                                            0
                                            Вот я на свой неубиваемый Siemens ME45 загружал специальные рингтоны в midi формате, в которых звуки менялись с высокой частотой и создавали впечатления полифонии. И «рабочий стол»: для этого рисовались специальные ч/б *.bmp. А вы говорите java:)
                                              0
                                              «MEссер» вообще патчился по самые уши. )
                                              0
                                              Мой siemens cx75 был смартфоном!
                                                0
                                                Как насчёт продолжения статьи с уклоном в историю? Если кто-то обладает информацией о том, как развивались эльфы на SE и Сименсах, и желает помочь с продолжением, можно отписать мне в ICQ или ЛС
                                                  0
                                                  По Сименсам можно пообщаться, но гораздо лучше если кто-нибудь из спецов с S-C напишет статью.
                                                  Возможно, есть кто-нибудь на Хабре.
                                                    0
                                                    Можно поподробнее написать про эльфы и т.д. С Сименсами я тоже могу помочь) А вот S-C же умер? Я знаю что пекр еще жив, ну и база Кибаба
                                                    +5
                                                    Помню, ещё в 2008 году ставил ваши наработки на свою E1 Rokr, немого откладывая моральное устаревание. На самом деле удивительная модель была: выпустили в 2004, а модель не потеряла актуальности и до сих пор: ветка на мотофане все еще жива! Даже бывает интересно порой зайти, посмотреть на историю, на «новшества», что предлагали монстры, выпущенные в 2007. Ностальгия. Сейчас это смешно, но тогда казалось (и было) нереально крутым!
                                                    У мотороллы всегда было очень крутое железо, но с ПО — прямо беда, и только благодаря народным умельцам, таким как Вы, Мачо, Osta, Vilko (вроде не наврал) удавалось пофиксить нелепые баги и странные ограничения. Спасибо вам! Плюс в карму!!!

                                                    PS В тайне надеюсь, что моторола выпустит что-нибудь подобное RAZR или e398 с нормальным железом, с кнопками, и чтоб на века. Да вот, мечте, наверное, уже не суждено сбыться, прийдется брать айфон :((
                                                    0
                                                    После статьи, захотелось положить Веху2 на полку, и достать старенький L7.
                                                      +1
                                                      Прочитал статью, сразу вспомнилось, как патчи портировал на Моторолу v3i, 3 окна IDA, окно Binedit и вперед :)
                                                      Эльфы тоже пробовал писать, но работать они категорически не хотели…
                                                      А так, v3i еще живой лежит на полочке, впору заряжать и снова погружаться в волшебный мир эльфов.
                                                        0
                                                        Спасибо за топик. Он мне напомнил что раньше (до Android, n900 и n9) были уже «смартфоны» на ядре Linux (где-то читал/слышал краем уха). Кажется у Motorola. Никто случайно не в курсе? Почему оно померло и не стало развиваться? Был бы очень рад почитать аналогичный исторический топик про такие телефоны.
                                                        Почему мне интересно? Хочется чтобы ОС смартфона была та же, что и на компьютере. Вплоть до одинакового набора базового софта. Конфиги (ресурсы, типа контактов), например, одни и те же, что для компа, что для телефона, и синхронизируются без всяких промежуточных слоев, а просто с помощью синхронизации ~/.config/. По моему это было бы здорово.
                                                        Еще более красивой мне видится идея использования Plan9/Inferno на телефоне и на десктопе. Благодаря 9P взаимодействие между телом и декстопом упрощается в разы. И почему так никто не сделал (я про телефон, конечно. на десктоп вывести эти ОС очень сложно. но на телефоне они бы прекрасно срослись с linux на десктопе)?
                                                        Где-то тут, в разделе видео демок, показывают развитие идей Plan9 — PlanB. Есть очень захватывающее зрелище, когда дядя запаковывает gui приложения в архив (да, там иерархия элементов gui строится через иерархию элементов ФС), распаковывает на другой машине и оно… просто работает. Удаленный рабочий стол средствами tar и cp. Как вам?
                                                          0
                                                          Эх ностальгия… К сожалению в разработке лично участие не принимал (не было пк в то время), но постоянно репортил баги/подавал идеи для новых эльфов.
                                                          Не знаю как SE и motorolla, но сименсы частенько выключались сами по себе (В народе это явление называлось «пикофф», потому как при внезапном выключении издавался характерный звук), особого дискомфорта не доставляло, но все же. Происходило это в основном из-за критических ошибок, из-за криво написанных эльфов и т.п.
                                                          Что говорить, эльфы могли сделать из обычной звонилки почти полноценный смартфон. Особую радость приносили эльфы NatICQ (аська, работала все время пока был включен телефон), XTask (менеджер задач), BalletMini (опера мини), Dendy Emulator, MegaDial (удобный номеронабиратель).

                                                          Процитирую свою комментарий к похожей статье:
                                                          Эльфы — тоже интересная штука (были на 65, 75 сериях). Диспетчер задач, ballet mini, icq, jabber, dendy/sega/doom/gameboy emulator, mp3 player (для телефонов с wav only), это далеко не полный список вкусностей, доступных для мобильника по цене около 3к (конкретно у меня был siemens c72 (аналог c65). Ну и пара скринов с моего телефона (сейчас они воспринимаются с улыбкой, раньше было круто):


                                                          Вот такой получался бюджетник (siemens всегда отличались низкой ценой).
                                                          Прошло пол года после покупки девайса — сименсы были уже у всего двора :-)
                                                            0
                                                            Правда с такими большими возможностями приходила и большая ответственность. К примеру кривой эльф положить в папку Daemons (хотя со временем появилось что-то вроде сэйф мода — при включении надо было нажимать на какую-то кнопку, и загрузка демонов не происходила). Было много шансов запороть телефон (помнится кто-то вместо прошивки в формате bin залил случайно сэйв от игры NFS — хорошо это не закончилось).
                                                            Даже новенькие сименсы можно было покалечить просто например установив скин (скины на сименсах — просто зазипованные файлы с определенными именами, так вот, если видео фрагмент переименовать в background.jpg, запаковать и установить — кирпич гарантирован).
                                                              0
                                                              а на моторе ребутится из-за ошибок в эльфе или нехватки оперативы — мы называли это ребутом )
                                                              0
                                                              Простите, а какие проблемы запустить elf на андроиде?
                                                              Собирайте NDK и запускайте.
                                                                +1
                                                                Никаких. Речь идет про обычные звонилки.

                                                              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                              Самое читаемое