Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #111, МАРТ 2008 г.

Мажорный тукс на мобильных просторах

Крис Касперски

Хакер, номер #111, стр. 111-094-1

Хачим сотовые телефоны с Linux на борту

По прошествии нескольких лет «промышленной» эксплуатации Linux ворвался на мобильные платформы и теперь не только успешно конкурирует с Symbian OS/Windows CE, но и обращает в свою веру все больше и больше производителей сотовых телефонов, число которых стремительно растет. Linux на мобильном - это уже не экзотика, а повседневная реальность. Насчитываются сотни разнообразных моделей, которые любой желающий может хачить, ковыряясь в недрах ядра и наращивая его функционал, что безумно интересно, но, к сожалению, в среде отечественных хакеров практически не практикуется. Мыщъх надеется, что своей статьей он сорвет пелену мрака, подтолкнув креативных кодокопателей к исследовательской деятельности.

Сотовые телефоны первого поколения являлись «вещью в себе» и не позволяли устанавливать никакого программного обеспечения сверх того, которое уже было зашито в них производителем. Потом появились Java-мидлеты (игры, органайзеры, etc), но сильно лучше от этого не стало. Тем временем по своей аппаратной мощности телефоны вплотную приблизились к компам конца 90-х, существенно потеснив наладонники.

Современный сотовый телефон (а точнее, смартфон) представляет собой полноценный компьютер с операционной системой (Symbian OS/Windows CE), поддерживающей развитый набор API-функций и за счет виртуальной Java-машины абстрагирующей программиста от архитектурных особенностей конкретного железа. Так в чем же проблема? Качай SDK и программируй! Хочешь — под Java-машину, хочешь — под нативный процессор (благо мобильные оси это позволяют).

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

Исходных текстов операционной системы нет — как ее хачить? Кроме того, не предоставляется прямой доступ к электронной оснастке телефона. Одним словом, сотовые телефоны — это не для хакеров. Но с выходом Motorola A760 ситуация коренным образом меняется…

Орлята учатся летать

Аппарат Motorola A760, разработанный в 2003 году на базе процессора ARM7, стал первым сотовым телефоном, оснащенным специальной версией Linux, адаптированной под мобильные платформы. Собственно говоря, от Linux там только сильно урезанное ядро серии 2.4.x, библиотека glibc, драйверы для управления встроенным оборудованием, чисто сотовое программное обеспечение (аудиокодеки, стек GSM-протоколов, etc) и, естественно, привычный графический интерфейс с иконками, записными книжками, органайзерами, играми и прочей мишурой.

Внешне (с потребительской точки зрения) телефон ничем не выделяется в пестрой армии своих собратьев, и большинству пользователей (несильно продвинутых в техническом плане) все равно, какая там ось, главное — это интерфейс. Так в чем же преимущества Linux перед конкурентами?

Во-первых, открытый код, разрабатываемый Open Source сообществом, не только не требует лицензионных отчислений, но и намного более стабилен, поскольку исходные тексты изучает огромное количество людей.

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

В-третьих, системные вызовы Linux давно стандартизированы, под него написано огромное количество программного обеспечения, перенос которого на новые мобильные платформы осуществляется простой перекомпиляцией (ну, пускай не без адаптации, но это совсем не то же самое, что полное переписывание кода с нуля). Что касается хакеров, теперь можно зарядить телефон боевой амуницией и грабить Bluetooth-трафик, создавать ICMP-туннели для бесплатной связи по GPRS и делать много других интересных вещей.

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

В-пятых, в сотовых телефонах (вот ужас!) нет BIOS, и заботу по инициализации оборудования берет на себя ядро, выставляющее тактовые частоты процессора, тайминги оперативной памяти, режимы работы дисплея. Ну а какой русский не любит быстрой езды, то есть разгона процессоров?! Да-да! Теперь процессоры сотовых телефонов тоже можно разгонять! Зачем?! Допустим, видео при просмотре слегка тормозит, но стоит чуть-чуть повысить тактовую частоту, как тормоза исчезнут. Разве не прелесть?!

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

Стандартизация мобильной версии Linux

Скачать исходные тексты ядра Motorola A760 можно как с официального сайта (https://opensource.motorola.com/sf/sfmain/do/home), так и с Кузни (sourceforge.net/project/showfiles.php?group_id=116309). Но ядро — это еще не все, далеко не все. Помимо него требуются драйверы и куча других модулей, часть из которых специфична для каждой модели, а часть – системнонезависима. То есть они станут системнонезависимыми, когда будет выработан единый стандарт, которому станут следовать как производители железа, так и разработчики софта.

В рамках проекта OpenEZX (openezx.org) было создано программное обеспечение для телефонов Motorola A728, A760, A768, A780, A910, A1200, E680, E680i, E680g, E690, Rokr E2, Rokr E6, Rizr Z6, Razr 2 и i876. На сервере компании (wiki.openezx.org/Main_Page) выложено описание аппаратной части, исходные тексты ядра и остальных компонентов, распространяющихся по лицензии GPL, бинарные сборки (для самых ленивых), загрузчик, позволяющий заливать перекомпилированное ядро в телефон и управлять параметрами загрузки, а также инструментарий для разработки своих собственных программ, созданный на основе кросс-среды от Дэна Кегела (wiki.openezx.org/Crosscompile). Как нетрудно заметить, проект OpenEZX, несмотря на свою открытость, замыкается на продукции компании Motorola и не находит применения за ее границами.

Проект OpenMoko (www.openmoko.org), впервые реализованный на платформе FIC Neo1973, оказался более удачным и в настоящее время используется на Motorola E680i/A780 OM2007.2/A1200E OpenMoko 2007.2, Treo 650, Palm TX, а также некоторых других аппаратах, список которых постоянно расширяется.

На главной странице проекта projects.openmoko.org выложено не только ядро, но и большое количество исходных текстов различных мобильных приложений (например, GPRS locator) и утилит для разработчиков. Самой полезной из них был и остается универсальный загрузчик U-boot loader (wiki.openmoko.org/wiki/U-boot), разработанный невероятно креативным программистом Гарольдом Вельтом, у которого есть свой блог с огромным количеством технической информации laforge.gnumonks.org/weblog/index.html, где, в частности, можно найти инструкцию по разблокированию залоченных аппаратных возможностей.

Загрузчик нужен не только для обновления ядра, но и для заливки нативных Linux-приложений самостоятельной разработки. Сами же приложения создаются при помощи инструментария, предоставляемого поставщиками мобильных версий Linux (впрочем, при желании можно обойтись и штатным компилятором GCC).

Телефоны с Linux левой сборки

Стандарты — это, конечно, замечательно, но некоторые производители предпочитают использовать свои собственные, ни с чем не совместимые решения, что связано не столько со снобизмом, сколько с сыростью и неразвитостью существующих стандартов. Естественно, хачить такие телефоны очень сложно, и от их приобретения лучше воздержаться.

В первую очередь хотелось бы обратить внимание на компанию ImCoSys (www.imcosys.com), выпускающую мобильные устройства на базе Linux. Контора зажимает исходные тексты, вероломно нарушая лицензию GPL, и отправляет все претензии от сообщества Open Source прямиком в /dev/null. Даже если оставить юридические разборки в стороне, пользы от Linux без исходных текстов нет никакой. И хачить его практически невозможно.

Аппараты Grundig Dreamphone G500i/B700/U900 также основаны на Linux, но исходных текстов что-то не наблюдается. Ну и как их прикажете хачить?!

Аппараты ROAD GmbH - S101, S101K, L101 (www.road-gmbh.de) - работают под управлением самостоятельно адаптированной версии Linux с ядром 2.6, но ни исходных текстов, ни инструментов для разработки программ, ни какой бы то ни было документации на сайте компании нет.

Аппараты Neuf Twin Tact E28/E2831/GW1/GW3 используют Linux под эгидой своего собственного проекта OpenTwin (www.opentwin.org) с открытыми исходными текстами, документацией и средами разработки, однако поддержки остальных производителей он не получил. Motorola стала единственной компанией, выпустившей модель телефона на основе OpenTwin – A910i, и эта модель оказалась одна. Других не последовало. Во всяком случае, пока.

Таким образом, приобретая телефон с Linux, необходимо заблаговременно убедиться, что производитель придерживается лицензии GPL и не скрывает исходные коды от потребителей. В принципе, сорцы не так уж и важны. Если ядро не слишком сильно покоцано и номера системных вызовов не изменены (а обычно все так и есть), то разработка собственных приложений не станет большой проблемой. Однако прежде чем написать «Hello, world!», придется выполнить объемный ресерч, дизассемблировав ядро и разобравшись с архитектурой конкретной мобильной платформы, а также сконструировать свой собственный загрузчик. Настоящие хакеры не боятся трудностей - они их только закаляют. Однако начинать лучше всего с хорошо изученных аппаратов с открытыми исходными текстами и вменяемой документацией, собравших вокруг себя целое сообщество хакеров, к которым всегда можно обратиться за помощью, если что-то непонятно или не клеится. Как, вероятно, уже успел заметить читатель, наиболее перспективной в этом плане является линейка телефонов Motorola (и это не реклама!).

Заключение

Linux уже давно вышел из детского возраста, превратившись из игрушечной системы в мощное оружие хакерского пролетариата, атакующее рынок проприетарного софта и оккупировавшее все доступные ниши: от встраиваемых устройств до суперкомпьютеров. Открытая модель разработки таит в себе огромные возможности, о которых закрытому коду можно и не мечтать!

Купив сотовый телефон с мобильной версией Linux, придерживающейся лицензии GPL, мы получаем в свое распоряжение аппарат, который можно хачить по полной программе в свое удовольствие. К мобильным версиям Linux, нарушающим лицензию GPL (то есть основанным на закрытых исходных текстах), сказанное не относится. Они ничуть не лучше Windows CE и даже хуже ее, поскольку Windows CE - известный зверь, а кустарно адаптированная версия Linux без документации и SDK – это просто тихий ужас и ночной кошмар программистов, пытающихся ее раскурить.

Поставщики мобильных версий Linux

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

Из основных поставщиков Linux на мобильном рынке стоит отметить корейскую фирму Mizi Research Incorporated (www.mizi.com), главным потребителем продукции которой является корпорация Samsung Electronics, уже выпустившая телефоны Samsung SCH-i839/SCH-i858/SCH-i819/SCH-i519. Эти мобилы вполне пригодны для хака и прочих издевательств.

Адаптированная версия Linux носит гордое имя PRISM, распространяясь по лицензии GPL. Вместе с исходными текстами ядра с FTP-сервера компании можно свободно (и бесплатно!) скачать SDK и эмулятор. Ну, эмулятор или живой телефон — это дело вкуса, а вот SDK - это очень даже хорошо! Заходим на www.mizi.com/index.php/developers# и качаем. Документация лежит на www.mizi.com/docs/products/Prizm3_whitepaper_EN.pdf, а спецификации - на www.mizi.com/index.php/prizm-specifications.

SDK включает в себя кросс-компилятор, заголовочные файлы и IDE, внешне похожую на популярную графическую среду разработки Eclipse 3.0, но, в отличие от последней, работающую не только в Linux, но и под Windows. Поддерживаются следующие языки программирования: Си, Си++ и Питон.

MontaVista Software (www.mvista.com) — другой крупный поставщик Linux, завоевавший доверие таких фирм, как NEC, Panasonic и Motorola. Собственно говоря, MontaVista Linux базируется на проекте Motorola EZX, что вносит сумятицу в ряды программистов и вызывает огромное недовольство самой Motorolа, но такова уж природа GPL-лицензии. Motorola выпустила открытое ядро, а MontaVista Software выхватила его у нее из рук и стала предлагать другим компаниям на своих условиях, впрочем, отвечающих требованиям GPL.

Другими словами, в нашем распоряжении имеются и исходные тексты ядра, и документация, и SDK, и даже Application Developer Kit с DevRocket 5 IDE, представляющим собой набор утилит для создания, сборки и отладки мобильных приложений. В отличие от Mizi SDK, DevRocket 5 IDE основан на настоящей Eclipse, а ее утилиты – это не что иное, как плагины. То есть Linux-программисты будут чувствовать себя в своей тарелке, а вот Windows-разработчикам придется забыть о Visual Studio и снова садиться за парту.

Документация находится по адресу www.mvista.com/product_datasheets.php, а Developer Kit – по адресу www.mvista.com/product_detail_tools.php.

WWW

  • * tuxmobil.org/mobile_phone_linux_distributions.html - основной портал для хакеров, интересующихся мобильными устройствами с Linux на борту.
  • * tuxmobil.org/phones_linux.html - список мобильных устройств, основанных на Linux, с указанием типа системы и поставщика мобильной версии.
  • * blog.wired.com/gadgets/2007/03/eight_great_lin.html - технические характеристики восьми лучших сотовых телефонов с Linux.
  • * sourceforge.net/projects/blob - исходные тексты мобильного загрузчика Linux для ARM-платформ.
  • * wiki.openmoko.org/wiki/U-boot - описание универсального мобильного загрузчика, поддерживающего большое количество платформ.
Содержание