Оценка уязвимостей мобильных приложений для платформ на базе операционных систем Android
Характеристика операционной системы Android. Особенности структуры AndroidManifest, уязвимость взаимодействия между приложениями Android. Способы распространения вредоносного приложения, инструменты реализации и сбора данных. Настройка Android Studio.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 07.08.2018 |
Размер файла | 2,5 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Федеральное агентство связи
Федеральное государственное бюджетное образовательное учреждение высшего образования
«Поволжский государственный университет телекоммуникаций и информатики»
Факультет Телекоммуникаций и радиотехники
Направление Информационная безопасность телекоммуникационных систем
Кафедра Мультисервисных сетей и информационной безопасности
ВЫПУСКНАЯ КВАЛИФИКАЦИОННАЯ РАБОТА
(ДИПЛОМНАЯ РАБОТА)
Оценка уязвимостей мобильных приложений для платформ на базе операционных систем Android
Руководитель доцент к.т.н. А.С.Раков
Разработал Е.С. Журавлева
Самара 2017
- Содержание
- Введение
- 1. Предметная область
- 1.1 Операционная система Android
- 1.2 Архитектура ОС Android
- 1.3 Структура AndroidManifest
- 1.4 Разрешения приложения
- 1.5 Компоненты приложения Android
- 1.5.1 Activity
- 1.5.2 Service
- 1.5.3 Content provider
- 1.5.4 Broadcast receiver
- 2. Предмет исследования
- 2.1 Уязвимость взаимодействия между приложениями
- 2.2 Выбор мобильного приложения
- 2.3 Уязвимость приложения Slack
- 2.4 Способы распространения вредоносного приложения
- 3. Создание тестового приложения
- 3.1 Инструменты реализации и сбора данных
- 3.1.1 Настройка Android Studio
- 3.1.2 Настройка отладочного прокси Fiddler
- 3.1.3 Установка ManifestViewer
- 3.2 Сбор данных о приложении Slack
- 3.2.1 Манифест Slack
- 3.2.2 Запросы приложения
- 3.3 Принцип работы тестового приложения
- 3.4 Реализация приложения для тестирования на проникновение
- 3.5 Результаты работы приложения для пентеста
- Заключение
- Список использованных источников
- Приложение А - Презентационные слайды
- Приложение Б - Листинг программы
РЕФЕРАТ
Название |
Оценка уязвимостей мобильных приложений для платформ на базе операционных систем Android |
|
Автор |
студентка гр. ИБТС-12, Е.С. Журавлева |
|
Научный руководитель |
к. т. н., доцент, А. С. Раков |
|
Ключевые слова |
Slack, Android, уязвимость, Intent |
|
Дата публикации |
2017 |
|
Библиографическое описание |
Журавлева Е. С., Оценка уязвимостей мобильных приложений для платформ на базе операционных систем Android [Текст]: дипломная работа / Е. С. Журавлева. Поволжский государственный университет телекоммуникаций и информатики (ПГУТИ). Факультет телекоммуникаций и радиотехники (ФТР). Кафедра мультисервисных сетей и информационной безопасности (МСИБ): науч. рук. А. С. Раков - Самара, 2017. -83 с. |
|
Аннотация |
В данной дипломной работе рассмотрены уязвимости взаимодействия двух приложений, выбрано уязвимое приложение -- Slack, проанализирован его исходный код и сетевой трафик от клиента до сервера. Проведена оценка уязвимостей, возникающих аналогичным образом. На основании собранных данных об уязвимости, написано приложение для проведения тестирования на проникновение, которое демонстрирует найденную уязвимость. |
Введение
Операционная система Android за небольшой промежуток времени стала одной из самых популярных систем для всевозможных мобильных устройств. Ее используют как крупные производители с мировым именем, так и небольшие компании, поэтому ценовой разброс готовой продукции, такой как смартфоны и планшетные компьютеры, позволяет удовлетворить потребности потребителей практически на сто процентов. Именно широкий ассортимент, гибкое ценообразование и поддержка платформы со стороны внушительного числа производителей стали одними из главных факторов успеха и позволили системе занять нынешнее положение на рынке.
Однако такое огромное число пользователей просто не могло остаться без внимания со стороны злоумышленников. Построив на разработке и распространении вредоносных программ целую индустрию со своими законами, они стали крайне неравнодушны к любым источникам легкой наживы. операционный android приложение вредоносный
Как и любая другая система, Android, к сожалению, не может быть полностью безопасной, так как люди, участвующие в разработке, не гарантируют идеальный код и могут совершать ошибки. Тем не менее, разработчики прикладывают усилия для того, чтобы в конечном счете потребители получили качественный продукт. На примере Android мы можем наблюдать очередное подтверждение тому, что чем популярнее продукт, тем больше он подвержен атакам злоумышленников.
Все вышесказанное определило актуальность темы работы -- оценки уязвимостей мобильных приложений для платформ на базе операционных систем Android.
Целью дипломной работы является поиск уязвимостей и разработка приложения для тестирования на проникновение. Приложение предназначено для устройств на операционной системе Android и демонстрирует перехват данных авторизации коммерческого приложения Slack.
Для достижения поставленной цели необходимо решить следующие основные задачи:
? рассмотреть архитектуру ОС Android;
? изучить уязвимость во взаимодействии двух приложений;
? найти пример уязвимого приложения;
? провести анализ исходного кода уязвимого приложения;
? провести анализ сетевого трафика между приложением и сервером;
? разработать приложение для проведения тестирования безопасности.
Объектом исследования в моей работе выступает операционная система Android.
Предметом исследования является механизм взаимодействия между двумя приложениями.
Источниками информации для написания работы послужили учебная литература, статьи, обзоры и справочная литература в сети Интернет.
Цель и задачи написания работы определили ее структуру, которая состоит из введения, трех глав, заключения, списка используемых источников и приложений.
Во введении обосновывается актуальность работы, цель, задачи, объект и предмет исследования.
Первая глава раскрывает архитектуру операционной системы Android, описание ее уровней, системы разрешений приложений, а так же структуру файла конфигурации приложения -- AndroidManifest и описание основных компонентов приложений для операционной системы Android.
Вторая глава описывает уязвимость взаимодействия между двумя приложениями; в ней происходит выбор уязвимого приложения, описания его уязвимости, а так же путей распространения вредоносного приложения злоумышленника.
Третья глава посвящена реализации приложения для демонстрации уязвимости. В ней описаны инструменты реализации, их настройка, а так же сбор данных и анализ кода уязвимого приложения, подводятся итоги работы нашего приложения.
В заключении сделаны основные выводы и результаты по проделанной работе.
1. Предметная область
1.1 Операционная система Android
Android -- операционная система для смартфонов, интернет-планшетов, электронных книг, цифровых проигрывателей, наручных часов, игровых приставок, нетбуков, смартбуков, очков Google, телевизоров и других устройств. В будущем планируется поддержка автомобилей и бытовых роботов [1].
По данным компании International Data Corporation (IDC) Worldwide Quarterly Mobile Phone Tracker на третий квартал 2016 года, Android доминирует на рынке операционных систем для смартфонов с долей 86,8% [2].
Таблица 1.1
Рейтинг мобильных ОС за 2016 год
Другие ОС |
Windows Phone |
iOS |
Android |
Период |
|
0.4% |
0.8% |
15.4% |
83.5% |
2016 Q1 |
|
0.3% |
0.4% |
11.7% |
87.6% |
2016 Q2 |
|
0.4% |
0.3% |
12.5% |
86.8% |
2016 Q3 |
|
0.5% |
1.2% |
18.7% |
79.6% |
2016 Q4 |
Массовое распространение Android не делает продукт идеальным. У этой операционной системы помимо большого количества преимуществ, есть и недостатки.
Среди плюсов можно отметить:
? большое разнообразие приложений в официальном магазине Google Play. По данным от компании, на 31 марта 2016 года, количество скачиваний приложений достигло 11.1 миллиардов [3];
? открытый исходный код. Открытость операционной системы - это преимущество Android перед другими мобильными операционными системами. Разработчики могут свободно распространяться свои приложения, будучи не ограниченными законом о защите авторских прав. В отличие от ОС iOS, где приложения можно загрузить исключительно через AppStore, Android поддерживает установку приложений и игр с любых источников;
? многозадачность. Даже не слишком мощные устройства на ОС Android могут без проблем работать сразу с несколькими приложениями, переключение между которыми происходит очень быстро;
? индивидуализация. Android предоставляет пользователям большое количество настроек, которые пользователь может подстроить под себя. Начиная с внешнего вида системы, клавиатуры, рабочих экранов и программ по-умолчанию и заканчивая глубокими настройками системы;
? распространенность. По данным статистики, на начало 2016 года существовало около 25000 различных устройств под управлением ОС Android. Это предоставляет пользователям почти безграничный выбор между производителем, внешним видом и техническими характеристиками устройства [4].
Последний плюс может также оказаться и минусом для разработчиков. Из-за такого изобилия устройств, а главное -- их аппаратного содержания, многие приложения могут вести себя по-разному. Только у ОС Android есть так называемые “устройство-зависимые” ошибки приложений.
Перечислим основные минусы ОС Android:
? проблема совместимости. Некоторые производители прекращают поддержку устройств, выпущенных относительно недавно и не выпускают для них обновления ОС, оставляя пользователей буквально беззащитными перед некоторыми уязвимостями, которые могут быть давно известны злоумышленнику;
? большое количество уязвимостей и вредоносного ПО даже в Google Play.
Рассмотрим статистику компании Google рейтинга различных версий операционной систем Android на устройствах пользователей. В рейтинг на 8 ноября 2016 года включена новейшая версия операционной системы -- 7.0 Nougat. Новинка занимает очень малый процент, опережая только версию Froyo, она же Android 2.2, запущенную в мае 2010 года. На долю Android 7.0 приходится 0,3% от всех установленных версий, а на Froyo - 0,1% [5].
Таблица 1.2
Рейтинг версий ОС Android
API |
Распределение |
Название |
Версия ОС |
|
8 |
0.1% |
Froyo |
2.2 |
|
10 |
1.3% |
Gingerbread |
2.3.3-2.3.7 |
|
15 |
1.3% |
Ice Cream Sandwich |
4.0.3-4.0.4 |
|
16 |
4.9% |
Jelly Bean |
4.1.x |
|
17 |
6.8% |
4.2.x |
||
18 |
2.0% |
4.3 |
||
19 |
25.2% |
KitKat |
4.4 |
|
21 |
11.3% |
Lollipop |
5.0 |
|
22 |
22.8% |
5.1 |
||
23 |
24.0% |
Marshmallow |
6.0 |
|
24 |
0.3% |
Nougat |
7.0 |
Распределение выглядит следующим образом:
Рис. 1.1 График распределения версий ОС Android
Согласно этому рейтингу, наибольшее распространение получили такие версии операционной системы Android, как: Android 4.4 (KitKat), Android 6.0 (Marshmallow) и Android 5.1 (Lollipop).
1.2 Архитектура ОС Android
Архитектура операционной системы Android состоит из пяти уровней: уровень приложений, уровень каркаса приложений, уровень библиотек, уровень рабочей среды и уровень ядра Linux.
Часто такую модель называют программным стеком, поскольку речь идет о наборе программных продуктов, которые работают вместе для получения итогового результата. Действия в этой модели выполняются последовательно и уровни иерархии также последовательно взаимодействуют между собой.
Рис. 1.2 Архитектура Android
Рассмотрим подробнее каждый из уровней:
? ядро Linux. Android основан на ОС Linux, тем самым платформе доступны системные службы ядра, такие как управление памятью и процессами, обеспечение безопасности, работа с сетью и драйверами. Также ядро служит слоем абстракции между аппаратным и программным обеспечением;
? библиотеки. Выше ядра, как программное обеспечение промежуточного слоя, лежит набор библиотек, предназначенный для обеспечения базового функционала для приложений. То есть именно этот уровень отвечает за предоставление реализованных алгоритмов для вышележащих уровней, поддержку файловых форматов, осуществление кодирования и декодирования информации, отрисовку графики и многое другое. Библиотеки реализованы на C/C++ и скомпилированы под конкретное аппаратное обеспечение устройства, вместе с которым они и поставляются производителем в предустановленном виде. Для разработчиков доступ к функциям этих библиотек реализован через использование каркаса приложений -- Application Framework;
? рабочая среда Android. Ключевыми составляющими этого уровня являются набор библиотек ядра и виртуальная машина Dalvik. Библиотеки предоставляют большую часть функциональности библиотек ядра языка Java. Каждое приложение в ОС Android запускается в собственном экземпляре виртуальной машины Dalvik. Таким образом, все работающие процессы изолированы от операционной системы и друг от друга. Архитектура рабочей среды Android такова, что работа программ осуществляется строго в рамках окружения виртуальной машины. Благодаря этому осуществляется защита ядра операционной системы от возможного вреда со стороны других её составляющих. Поэтому код с ошибками или вредоносное ПО при срабатывании не смогут испортить Android и устройство на его базе. Такая защитная функция, наряду с выполнением программного кода, является одной из ключевых для надстройки рабочей среды. Комплект средств разработки Android SDK упаковывает все необходимое для установки приложения в файл с расширением .apk (Android package). Весь код в одном файле .apk считается одним приложением и этот файл используется для установки данного приложения на устройствах с операционной системой Android;
? каркас приложений. Хоть и было сказано, что каждый выполняемый процесс и запускаемое приложение запускается в своем собственном процессе, со своим собственным экземпляром виртуальной машины и не может повлиять на другое, архитектура построена таким образом, что любое приложение все-таки может использовать уже реализованные возможности другого приложения при условии, что последнее откроет доступ на использование своей функциональности. Таким образом, архитектура реализует принцип многократного использования компонентов ОС и приложений;
? уровень приложений. На вершине программного стека Android лежит уровень приложений. Сюда относится набор базовых приложений, который предустановлен на ОС Android. Например, в него входят браузер, почтовый клиент, программа для отправки SMS, карты, календарь, менеджер контактов и многие другие. Список интегрированных приложений может меняться в зависимости от модели устройства и версии Android. И помимо этого базового набора к уровню приложений относятся в принципе все приложения под платформу Android, в том числе и установленные пользователем [6].
1.3 Структура AndroidManifest
AndroidManifest или манифест является самым важным файлом для любого приложения Android. Файл манифеста имеет расширение .xml. XML (eXtensible Markup Language) - универсальный и расширяемый язык разметки данных, который не зависит от операционной системы и среды обработки.
Вся конструкция манифеста приложения построена на основе регистрозависимых xml-тегов. Структура xml-документа состоит в том, что есть открывающий и закрывающий теги, в них могут вкладываться другие теги и в каждом теге могут располагаться значения. Совокупность открывающего, закрывающего тегов и их значения называется элементом и весь xml-документ состоит именно из элементов, которые в совокупности образуют структуру данных. У xml-документа может быть только один корневой элемент. В манифесте это элемент <manifest>.
Приведем пример xml-разметки и ее синтаксиса:
<Начало элемента>
<Начало вложенного элемента>
Значение вложенного элемента
</Конец вложенного элемента>
</Конец элемента>
Теперь можно рассмотреть пример разметки AndroidManifest:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android=http://schemas.android.com/apk/res/android
package="com.test.android.example"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".testactivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
. . .
</application>
<uses-sdk android:minSdkVersion="9" />
. . .
</manifest>
Все значения устанавливаются через атрибуты элементов. Элемент <application> является основным элементом манифеста и содержит различные дочерние элементы. Все элементы вместе определяют структуру и работу приложения. Элементы <manifest> и <application> являются обязательными. Порядок расположения элементов, находящихся на одном уровне, например дочерних элементов <application>, произвольный.
Рассмотрим основные элементы манифеста:
? <manifest>. Корневой элемент, содержащий полное описание пакета приложения. Все остальные элементы включаются внутрь него;
? <uses-permission>. Описывает права, необходимые программе для корректной работы. То есть, если вы в своей программе хотите использовать доступ к данным GPS, то в этой секции вы должны явно это указать, например так:
<uses-permission android:name=»android.permission.ACCESS_GPS»/> ;
? <permission>. В этой секции описываются права, которые должны запросить другие приложения для доступа к вашему;
? <instrumentation>. Объявляет объект instrumentation, который дает возможность контролировать взаимодействие приложения с системой. Обычно используется при отладке и тестировании приложения;
? <application>. Один из основных элементов манифеста, содержащий описание компонентов приложения, доступных в пакете: стили, иконки и др. Содержит дочерние элементы, которые объявляют каждый из компонентов, входящих в состав приложения. В манифесте может быть только один элемент <application>;
? <activity> или деятельность. Это основной компонент приложения, взаимодействующий с пользователем. Первое окно которое видят пользователи при запуске программы, это и есть деятельность, и большинство других окон будут реализованы как отдельные деятельности, описанные элементом <activity>.
? Каждая деятельность должна иметь собственный элемент <activity> в файле манифеста. Если деятельность не описана в манифесте, то приложение не сможет ее запустить и вызовет ошибку;
? <intent-filter>. Описывается определенный тип значений намерений, которые компоненты поддерживают в качестве фильтров намерений. В дополнение, различные типы значений могут быть указаны под этим элементом;
? <action>. Действие намерений, которое компонент поддерживает;
? <category>. Категория намерений, которые компонент поддерживает;
? <data>. Указываются поддерживаемые типы;
? <receiver>. Широковещательный приемник (BroadcastReceiver) позволяет приложению узнавать о изменениях с данными или действиями которые случились, даже если программа не запущена;
? <service>. Компонент который может быть запущен в фоне на произвольное количество времени;
? <provider>. Провайдер содержимого (ContentProvider) это компонент который управляет доступом к данным вашей программы, предоставляя его другим приложениям [7].
1.4 Разрешения приложения
Ранее было сказано, что каждое приложение в Android запускается в собственном экземпляре виртуальной машины Dalvik. Таким образом, все происходящие процессы изолированы от операционной системы и друг от друга. Иногда эту виртуальную среду называют другим термином -- песочница. По определению, песочница является выделенной средой для безопасного исполнения программ.
Зачастую все же возникает необходимость взаимодействия двух или более приложений. В таком случае нужно говорить о разрешениях приложений.
Android определяет конкретные разрешения для определенных задач. Предположим, приложению нужно получить доступ в Интернет, или к камере, или к отправке сообщений. В таком случае оно должно определить в своем файле конфигурации, называемом также AndroidManifest или манифест, что оно хотело бы получить соответствующие разрешения. Тогда во время установки Android-приложения, пользователю покажется экран со списком, на котором будут перечислены разрешения для приложения и пользователю нужно будет дать согласие на эти разрешения. В противном случае, доступ к взаимодействию приложения и перечисленных компонент, будет запрещен.
Целесообразно делать список разрешений как можно меньше, чтобы снизить риск случайного злоупотребления этими разрешениями и сделать приложение менее уязвимым для злоумышленника, потому что приложение с разрешениями READ_SMS (чтение SMS) и INTERNET (Интернет) вполне может передавать одноразовые пароли, попадающие в устройство пользователя или постороннему лицу.
Разрешения прописываются в файле конфигурации приложения -- в манифесте как элемент <permission>. В этой секции описываются права, которые должны запросить другие приложения для получения доступа к вашему приложению. Приложение может также защитить свои собственные компоненты разрешениями. Оно может использовать любое из системных разрешений, определенных Android или объявленных другими приложениями, а также может определить свои собственные разрешения [8].
1.5 Компоненты приложения Android
Существует 4 компоненты приложения операционной системы Android. Все они являются строительным материалом приложения и определяют дальнейшую его работу. Каждый компонент представляет собой уникальный элемент структуры и играет определенную роль -- некоторые компоненты не зависят друг от друга.
Компоненты каждого типа предназначены для определенной цели, они имеют собственный жизненный цикл, который определяет способ создания и прекращения существования компонента.
1.5.1 Activity
Activity или операция, активность определяет экран с графическим или пользовательским интерфейсом для какой-либо деятельности приложения. Элементы пользовательского интерфейса, их свойства, тип, расположение на экране в дальнейшем определяют макеты.
Сама же Activity -- это экран, с которым может взаимодействовать пользователь с целью выполнить какое-либо действие. Например открыть браузер, отправить письмо, набрать телефонный номер, просмотреть сообщения SMS и т.д. Каждой такой операции присваивается окно, которое и называется Activity. Даже внутри одного приложения, переход с одного окна на другое должны описать разные Activity. Например, одна операция описывает окно для отображения всех сообщений на почте, другая -- для экрана написания сообщения, третья -- для экрана черновиков.
Для того, чтобы приложение корректно работало, все эти активности должны прописываться или регистрироваться в специальном файле приложения -- AndroidManifest, описывающего конфигурацию приложения. Если не прописать там какую-либо активность, но использовать ее в коде -- приложение выдаст ошибку и не будет работать. Она прописывается в виде элемента <activity> дочернего для элемента <application>. Например:
<manifest ... >
<application ... >
<activity android:name=".ExampleActivity" />
...
</application ... >
...
</manifest >
Обычно в каждом приложении существует несколько операций, которые связаны друг с другом, и задается основная или главная операция, которая предоставляется пользователю тогда, когда он входит в приложение. После чего эта операция может вызвать другую для перехода на выбранный пользователем экран с целью выполнить действие. При старте новой операции, старая прекращает свою работу, но остается в памяти -- это видно на примере, когда пользователь захотел вернуться на предыдущий экран и нажал на кнопку “Назад”. Тогда запускается вызванная ранее операция. Но при переходе к предыдущей Activity, текущая уже удаляется из стека.
1.5.2 Service
Service или службы -- это компоненты, работающие в фоновом режиме, даже когда приложение свернуто. Чаще всего они используются для длительных и удаленных процессов и они не блокируют текущую Activity.
Примером службы может быть воспроизведение музыки, пока пользователь пользуется другими приложениями или работа с данными из сети, например когда пользователь авторизован в приложении социальной сети, но не обновляет приложение вручную каждую минуту, а получает уведомления о получении новых, благодаря протеканию фоновых процессов различных служб.
Службы, в отличие от Activity, не имеют графического интерфейса, они не рассчитаны на взаимодействие с пользователем. Но службы связаны с активностями, так как они способны запускать службы, управлять ими и завершать их.
Существует 2 формы службы: запущенная и привязанная. Служба считается запущенной, если ее запустила Activity методом startService(). Такая служба работает фоном неограниченное количество времени, даже если Activity, запустившая ее, закрыта и удалена из стека. Зачастую запущенная служба выполняет одну задачу и не возвращает результат для Activity. Примером такой службы может быть загрузка или скачивание файла из сети, скачивание приложения из магазина приложений и т.д. Когда операция службы выполнена, служба останавливается.
Служба является привязанной, когда какой-нибудь компонент приложения привязывается к ней методом bindService(). Привязанная служба имеет клиент-серверную архитектуру, позволяющую компонентам приложения взаимодействовать со службой, например отправлять запросы на сервер и получать от него ответы или результаты. Привязанная служба работает только пока к ней привязан один или несколько компонентов приложения. Как только все компоненты отменяют привязку, служба останавливается или уничтожается.
Так же, как и Activity, Service объявляются в AndroidManifest. Для объявления службы добавляется элемент <service> , как дочерний элемент <application> . Пример структуры:
<manifest ... >
...
<application ... >
<service android:name=".ExampleService" />
...
</application>
</manifest>
Атрибут android:name является единственным обязательным атрибутом -- он указывает имя класса для службы и его нельзя менять после публикации приложения [9].
1.5.3 Content provider
Content provider или поставщик контента, содержимого управляет общим набором данных приложения, предоставляемых одними приложениями для других и которые можно хранить в файловой системе, в базе данных SQLite, на веб-сайте, или на любом другом постоянном месте хранения, к которому ваше приложение может получить доступ.
Благодаря такому компоненту, как поставщик контента, приложение может запрашивать данные и, если у приложения объявлены соответствующие разрешения, изменять их. К примеру, в системе Android есть Content provider для списка контактов пользователя. Соответственно, если у стороннего приложения есть разрешение на чтение контактов из справочника, то он может запросить часть поставщика контента (например ContactsContract.Data) для просмотра или редактирования данных в записи из списка контактов.
Приложения также могут использовать поставщик контента для данных, доступ к которым запрещен для сторонних приложений.
Поставщик контента представляет собой подкласс ContentProvider, который предоставляет структурированный доступ к данным, которыми управляет приложение. Все поставщики контента в вашем приложении должны быть определены в элементе <provider> в файле манифеста; в противном случае система не знает о них и не сможет их запустить.
Объявляются только поставщики контента, которые являются частью вашего приложения. Поставщики контента в других приложениях, которые вы используете в вашем приложении, не должны быть объявлены.
1.5.4 Broadcast receiver
Broadcast receiver или приемник широковещательных сообщений нужен для того, чтобы принимать общесистемные сообщения или объявления. Большинство таких сообщений отправляет сама система Android, например когда устройство выключено, заблокировано, батарея разряжена или сделано фото на камеру. Приложения тоже могут отправлять объявления, например об окончании загрузки и готовности к работе с этим файлом.
Broadcast receiver не имеет графического интерфейса, но он может отображать сообщения и объявления от приложений или системы в области уведомления.
Рис. 1.3 Уведомления в области уведомлений
Рис. 1.4 Уведомления в панели уведомлений
Радиовещательный приемник объявляется как подкласс BroadcastReceiver в качестве одного из компонентов программы. Радиовещательный приемник позволяет приложениям получать намерения, которые транслируются системой или другими приложениями, даже тогда, когда другие компоненты приложения не работают.
Есть два способа объявить широковещательный приемник в системе. Первый -- объявить его в манифесте как элемент <receiver>. Другой заключается в создании приемника динамически -- в коде и регистрации его с помощью метода Context.registerReceiver ().
2. Предмет исследования
2.1 Уязвимость взаимодействия между приложениями
Прежде чем описать уязвимость, присутствующую в Slack, опишем работу таких сущностей как Intent и Intent Filter.
Особенностью Android является возможность использования одним приложением компонент другого. Например, если приложению нужно сделать фото, то разработчику не нужно разрабатывать собственный функционал камеры, он может воспользоваться функционалом уже существующего приложения. Для этого запускается компонент камеры, который делает фото и возвращает его вашему приложению. Со стороны это выглядит так, будто это функционал вашего приложения. На деле ваше приложение запускает операцию камеры и эта операция запускается в процессе приложения камеры.
Поскольку система Android запускает все приложения как отдельные процессы, они ограничивают доступ к своим файлам для приложений извне. Поэтому считается, что приложения не могут непосредственно активировать компоненты другого приложения -- это делает система Android. Для того, чтобы система запустила нужный компонент, ваше сообщение должно сообщить системе о намерении -- Intent. С помощью Intent можно вызывать три из четырех типов компонент: Activity, Service и Broadcast Receiver.
Intent или намерение используется для вызова Activity. Существует 2 типа вызова Activity при помощи намерений: явный вызов и неявный вызов.
В зависимости от типа вызова, существует несколько конструкторов класса Intent. В случае явного вызова, объект Intent создается при помощи конструктора (Context exampleContext, Class exampleActivity). В качестве первого параметра передается объекта класса Context, который предоставляет доступ к основным функция приложения, в том числе к вызову Activity. Второй параметр -- имя класса Activity, которое мы хотим вызвать. То есть мы явно указываем, какую Activity хотим вызвать. Далее этот объект передается в метод startActivity. Когда вызывается этот метод, система начинает искать Activity, с указанным в Intent названием класса, в файле манифест. Если Activity с таким классом зарегистрирован в манифесте, то система его найдет и вызовет. Если нет, то система вернет ошибку.
Явный вызов используется в рамках одного приложения. Нас же интересует неявный вызов, при помощи которого общаются 2 отдельных приложения. Неявный вызов отличается тем, что мы не указываем явно, какое Activity хотим вызвать. Мы указываем определенную комбинацию параметров (Action, Data, Category). Action указывает, какое действие мы хотим совершить. В Data указывается с каким объектом (типом объекта) мы хотим совершить это действие. В Category -- дополнительная информация о выполняемом действии. Комбинация значений этих параметров определяет задачу, которую мы хотим выполнить. Например, открытие фотокамеры, звонок по номеру телефона, просмотр фотографий и т.д. Все эти параметры указываются при создании объекта Intent, который также передается в метод startActivity. Чтобы зарегистрировать Action, Data и Category для Activity, в манифесте указывается Intent-filter, который определяет, что может делать это Activity:
<activity android:name="TestActivity">
<intent-filter>
<action android:name="android.intent.action.SEND"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="text/plain"/>
</intent-filter>
</activity>
Таким образом, при вызове метода startActivity, система будет искать не конкретное Activity в текущем приложении, а те Activity, которые удовлетворяют заданным параметрам, причем среди всех приложений на устройстве.
Рис. 2.3 Пример поиска подходящих Activity
Если система обнаружит одно приложение, оно автоматически запустится. Если система обнаружит несколько приложений, которые могут выполнить требуемое действие, пользователю будет предложен список приложений.
Кроме того, в объекте Intent можно передавать данные. Делается это при помощи метода putExtra (key, value), который принимает на вход пару ключ-значение. Когда Activity получит Intent, эти данные можно будет получить методом, например, getStringExtra. Здесь стоит отметить, что если злоумышленник настроит в своем приложении Intent-filter специальным образом, то он сможет без труда перехватить Intent, который ему не предназначался и получить из него все Extras (данные).
2.2 Выбор мобильного приложения
В качестве исследуемого приложения, я выбрала корпоративный мессенджер (приложение для мгновенного обмена сообщениями) Slack. В августе 2013 года, Slack начал регистрацию пользователей для его тестовой версии и 8000 компаний зарегистрировались в течение первых 24 часов. Это число говорило об общей заинтересованности в подобного рода инструментах для корпоративного общения. Только за 2016 год, количество пользователей увеличилось в 3.5 раза, так что сейчас Slack считается одним из самых быстрорастущих приложений для бизнеса.
По состоянию на апрель 2016 года у сервиса было 2,7 миллиона бесплатных и 800 000 платных абонентов. При этом речь идет о тех, кто пользуется сервисом каждый день [10].
По данным официального магазина приложений для Android -- Google Play, у Slack от 1000000 до 5000000 установок. На главном экране Slack отображаются обсуждения в общих темах, называемых еще каналами, приватных группах и личных сообщениях. Кроме того, Slack может посылать сигналы из чата в интегрированные с ним сервисы, такие как Dropbox, Google Drive, GitHub, Google Docs, Google Hangouts, Twitter, Jira [11]. Известно, что Slack используют такие известные компании, как Facebook, Microsoft и Apple.
Помимо бурного роста популярности Slack, внимание к нему привлекла одна функциональная особенность -- взаимодействие между веб-версией приложения, открытой в браузере устройства и официальным приложением Slack под Android. Особенность заключается в том, что авторизовавшись на сайте Slack в браузере Android, пользователь может автоматически авторизоваться в установленном приложении Slack. Для этого на сайте стоит нажать на иконку приложения Slack, после чего данные авторизации перехватит приложение. Это очень удобно с точки зрения пользователя -- нажав на кнопку, его перенаправят в приложение и пользователю не придется авторизоваться еще раз. Но это также является уязвимостью, ведь перехватить данные авторизации может не только официальное приложение, но и приложение злоумышленника, после чего воспользоваться данными пользователя и получить доступ к конфиденциальным данным компании и прочей информации.
Рис. 2.1 Кнопки, открывающие приложение
Стоит отметить, что Slack является клиент-серверным приложением. В этой архитектуре клиентом выступает само приложение. Оно посылает серверу запросы (requests), которые тот получает, обрабатывает переданные параметры и отправляет клиенту ответ -- response.
Рис. 2.2 Клиент-серверная архитектура приложения
Данные передаются по протоколу HTTPS, поддерживающему шифрование. Форматом сообщений является JSON -- основанный на JavaScript формат данных.
Пример структуры JSON:
{
"firstName": "Иван",
"lastName": "Иванов",
"address": {
"streetAddress": "Льва Толстого, 23",
"city": "Самара",
"postalCode": 010101
},
"phoneNumbers": [
"8 846 339-11-00",
"8 846 339-11-11"
]
}
2.3 Уязвимость приложения Slack
Одной из возможностей Slack является автоматическая авторизация в приложении прямо из браузера. Для этого пользователь должен перейти в web-версию Slack в любом браузере устройства и нажать на иконку приложения. После этого, сформируется объект Intent для неявного вызова Activity, указанной в коде официального приложения. Этот объект передается методу StartActivity, который проверяет манифесты всех приложений на устройстве на совпадение в их фильтрах намерений параметров, указанных в объекте Intent. Далее пользователю выводится список подходящих приложений, если их несколько или сразу запускается одно, если кроме него больше не нашлось приложений, удовлетворяющих заданным параметрам.
Скорее всего, разработчики предполагали автоматический запуск их официального приложения как единственного, в фильтре намерений которого были необходимые параметры. Могут быть и другие исходы, например, если официального приложения Slack у пользователя нет, но есть приложение злоумышленника с такими же фильтрами намерений. Тогда оно автоматически запустится, перехватит данные авторизации, отправит их злоумышленнику, а пользователь скорее всего ничего не заметит.
В случае, когда у пользователя имеется официальное приложение Slack, злоумышленник может применить так называемый фишинг (мошенничество, основанное на принципах социального инжиниринга).
Пользователю предоставится список из приложения Slack и приложения злоумышленника с абсолютно одинаковыми иконками. Если официальное приложение будет называться “Slack”, то злоумышленник может назвать свое “Slack 2.0” под видом некоего обновления для привлечения внимания пользователя.
Все это становится доступным благодаря анализу кода официального приложения, при должном уровне подготовки злоумышленника. Для этого потребуется извлечь из apk-файла приложения манифест и просмотреть его фильтры намерений, после чего реализовать такой же фильтр намерений в своем приложении. Далее можно сделать Activity«невидимой», чтобы пользователь не заметил никакой подозрительной активности со стороны приложения. Для того чтобы написать сервисы, отвечающие за передачу данных авторизации злоумышленнику, потребуется просмотреть запросы клиента и ответы сервера, чтобы скопировать уже существующие методы приложения. Все это мы рассмотрим при написании приложения для пентеста.
Пентест (тестирование на проникновение, тесты на преодоление защиты, penetration testing, pentest) является популярной во всем мире услугой в области информационной безопасности. Суть таких работ заключается в санкционированной попытке обойти существующий комплекс средств защиты информационной системы. В ходе тестирования аудитор играет роль злоумышленника, мотивированного на нарушение информационной безопасности сети заказчика [12].
2.4 Способы распространения вредоносного приложения
Прежде всего, стоит отметить тот факт, что Android SDK -- средства разработки -- доступны для таких операционных систем, как Windows, Linux и Mac OS X. Этим обеспечивается охват самого широкого круга разработчиков.
Созданные приложения могут распространяться несколькими способами. Первый -- через основную официальную площадку -- каталог Google Play. За небольшую единовременную плату в размере $25 любой желающий может зарегистрировать аккаунт разработчика и распространять в этом каталоге созданные им приложения. Помещаемые в Google Play программы практически сразу становятся доступными для загрузки пользователями. До недавнего времени публикуемые в этом каталоге приложения не подвергались какой-либо проверке, однако из-за того, что злоумышленники периодически размещали в нем вредоносные программы, компании Google пришлось ввести специальную систему Bouncer, которая должна искать подозрительные и нежелательные приложения на основе уже имеющихся данных. Тем не менее, ни о какой жесткой политике проверки и тестирования приложений перед размещением речи не идет.
У каталога Google Play имеется интернет-версия. В ней содержится не только информация о доступных в нем приложениях, но также существует возможность их установки непосредственно с веб-сайта. Для этого владелец устройства должен выполнить вход под своей учетной записью электронной почты, которая привязана к его мобильному устройству. Простым нажатием кнопки можно инициировать установку, которая при наличии доступа к Интернету будет сразу же выполнена, при этом на самом устройстве не возникнет никаких запросов.
Второй способ -- свободная установка приложений вне официального каталога: это может быть загрузка из различных веб-порталов, сторонних каталогов, через компьютер или обмен между устройствами. По умолчанию данная возможность отключена, однако ничто не мешает пользователю ее активировать. Для разработчиков, распространяющих свои приложения, минуя каталог Google Play, никакая регистрация не требуется, и созданные ими программные продукты сразу готовы к использованию.
Рис. 2.3 Схема возможных каналов получения приложений в ОС Android
Пользуясь такой свободой, злоумышленники быстро освоились. Вполне демократичная стоимость аккаунта в Google Play дает им возможность без особых финансовых потерь создавать новые учетные записи в случае их блокировки. Различные методы социальной инженерии позволяют легко заставить пользователей загрузить и установить вредоносные программы, распространяющиеся, в том числе вне официального каталога, например, под видом некоего обновления системы или популярного приложения.
Система разрешений Android предоставляет пользователю информацию о функциях, которые сможет выполнять устанавливаемая программа, однако далеко не всегда можно однозначно сказать, как именно поступит приложение с той или иной функцией, чем и пользуются злоумышленники.
Не стоит забывать, что компания Google позиционирует Android как открытую операционную систему. Несмотря на то, что некоторые компоненты все же являются недоступными, имеющийся в открытом доступе код позволяет эффективнее обнаруживать различные уязвимости, которые в том числе берут на вооружение и используют в своих вредоносных программах злоумышленники.
Так как ОС Android доступна большому числу производителей, выпускающих смартфоны с различными техническими характеристиками и версиями операционной системы, на рынке присутствует большое разнообразие мобильных устройств, что вызывает фрагментацию. Несмотря на попытки Google оперативно выпускать обновления системы, закрывающие обнаруживаемые уязвимости, фрагментация платформы часто мешает пользователям своевременно получать эти обновления, так как каждый производитель имеет свою стратегию по их выпуску. Случается и так, что производитель вообще отказывается от дальнейших обновлений некоторых моделей по причине их устаревания, экономическим или техническим соображениям или же по каким-либо другим причинам. Таким образом, пользователи становятся беззащитными перед некоторыми угрозами [13].
3. Создание тестового приложения
3.1 Инструменты реализации и сбора данных
Следующий вопрос, который я рассматриваю в своей работе: как злоумышленник должен сконструировать вредоносное приложение, чтобы максимально незаметно для пользователя получить данные авторизации. Для этого реализуем приложение для пентеста -- тестирования на проникновение.
Для написания приложения, демонстрирующего уязвимость приложения Slack нам потребуются следующие инструменты реализации:
· язык программирования -- Java;
· комплект средств разработки -- JDK;
· среда разработки -- Android Studio;
· комплект средств разработки-- Android SDK;
· утилита для Android -- ManifestViewer.
3.1.1 Настройка Android Studio
Существует множество сред разработки, мы выберем ту, что рекомендует Google -- Android Studio.
Рассмотрим подробно процесс установки среды разработки Android Studio применительно к операционной системе Windows 7.
Так как разработка приложений ведется на языке программирования Java, то перед установкой Android Studio необходимо скачать и установить Java SDK , называемое еще JDK.
Рассмотрим понятие SDK (от англ. software development kit) -- комплект средств разработки, который позволяет разработчикам писать приложения для определённого пакета программ, программного обеспечения базовых средств разработки, аппаратной платформы, компьютерной системы, игровых консолей, операционных систем и прочих платформ [14].
Разработчики SDK иногда изменяют слово «software» в словосочетании «software development kit» на более точное слово, подходящее по смыслу используемой технологии. Например JDK -- Java Development Kit.
Для установки JDK нам потребуется бесплатно скачать его с официального сайта компании-разработчика -- Oracle, предварительно прочитав и согласившись с условиями лицензионного соглашения и выбрав операционную систему и архитектуру своего компьютера, на который планируется установка [15]. Производим установку, согласно инструкциям.
Теперь мы можем установить среду разработки, предназначенную для написания программ и приложений под операционную систему Android.
Скачать Android Studio можно на официальном сайте разработчика, нажав на кнопку Download Android Studio for Windows, как в моем случае -- для операционной системы Windows или для любой другой операционной системы, нажав Other Download Options и выбрав нужный файл из таблицы All Android Studio Packages [16].
Далее стоит запустить скачанный файл и нажимать на кнопку Next до появления экрана с двумя полями для указания пути. Первое поле для указания пути служит для выбора места, куда будет установлена сама среда разработки Android Studio. Второе поле -- для указания пути установки Android SDK.После поиска и установки недостающих компонентов и обновлений, откроется окно установки, которое предложит скачать и установить SDK компоненты.
Для разработки и тестирования приложений нам понадобятся SDK-платформы Android. В открывшемся стартовом окне Android Studio открываем пункт Configure и далее SDK Manager. В нем будет список SDK-компонентов, которые мы можем скачать, обновить или удалить.
Во вкладке SDK Platforms перечислен список версий Android в формате Android 7.1.1 (Nougat), где “Android 7.1.1” -- версия операционной системы, а “Nougat” -- ее имя. Справа от каждого компонента в списке виден его статус: Installed -- установлен, Not installed -- не установлен, Update available -- доступно обновление.
На данный момент для работы в Android Studio доступны следующие версии операционной системы Android:
Таблица 3.1
Версии Android для работы в Android Studio
API level |
Год |
Название |
Версия ОС |
|
7 |
2010 |
Eclair |
Android 2.1 |
|
8 |
2010 |
Froyo |
Android 2.2 |
|
9 |
2010 |
Gingerbread |
Android 2.3 |
|
10 |
2010 |
Gingerbread |
Android 2.3.3 |
|
11 |
2011 |
Honeycomb |
Android 3.0 |
|
12 |
2011 |
Honeycomb |
Android 3.1 |
|
13 |
2011 |
Honeycomb |
Android 3.2 |
|
14 |
2011 |
IceCreamSandwich |
Android 4.0 |
|
15 |
2011 |
IceCreamSandwich |
Android 4.0.3 |
|
16 |
2012 |
Jelly Bean |
Android 4.1 |
|
17 |
2012 |
Jelly Bean |
Android 4.2 |
|
18 |
2013 |
Jelly Bean |
Android 4.3 |
|
19 |
2013 |
KitKat |
Android 4.4 |
|
20 |
2014 |
KitKat Wear |
Android 4.4W |
|
21 |
2014 |
Lollipop |
Android 5.0 |
|
22 |
2015 |
Lollipop |
Android 5.1 |
|
23 |
2015 |
Marshmallow |
Android 6.0 |
|
24 |
2016 |
Nougat |
Android 7.0 |
|
25 |
2016 |
Nougat |
Android 7.1.1 |
Если отметить галочкой Show Package Details, то каждая версия Android разобьется на компоненты. Нас интересует такой компонент, как ARM EABI v7a System Image -- образ Android системы. Он используется для создания эмулятора Android, на котором мы будем проводить тестирование приложений без подключения реальных устройств. Этот эмулятор будет отражать все свойства устройства на выбранной версии операционной системы Android.
Также необходимо скачать компонент SDK Platform, который используется для разработки.
Нажимаем на кнопку ОК, соглашаемся с загрузкой и установкой выбранных компонент. Далее соглашаемся с условиями лицензионного соглашения, нажимаем на кнопку Next и дожидаемся окончания установки.
Для того, чтобы тестировать приложения, нам понадобится Android Virtual Device (AVD). Это эмулятор Android-устройства, на который мы сможем устанавливать созданные нами приложения, и запускать их там.
Есть два способа запуска AVD: как отдельное приложение и в Android Studio. Рассмотрим первый способ: в процессе установки Android Studio мы прописывали два пути, второй являлся местом для установки Android SDK. Переходим в папку, указанную как второй путь и находим в ней приложение AVD Manager, запускаем его.
Во вкладке Device Definitions находятся описания уже готовых для использования устройств, например телевизоров, часов, планшетов и телефонов на базе операционной системы Android. Для создания нового устройства, необходимо нажать на кнопку Create. Откроется следующее окно для создания устройства:
Рис. 3.1 Создание виртуального устройства
Второй способ более нагляден. Для этого необходимо запустить Android Studio и создать любой проект, следуя указаниям на экране.Далее необходимо нажать на иконку AVD, отмеченную на рисунке:
Рис. 3.2 Иконка запуска AVD
В открывшемся окне нажимаем на кнопку Create Virtual Device.
Рис. 3.3 Характеристики экрана устройства
В списке уже созданы образы для некоторых устройств и указаны их характеристики экрана: диагональ, разрешение и dpi (количество точек на дюйм).
Для создания нового профиля устройства, нажимаем на кнопку New Hardware Profile.
Рис. 3.4 Характеристики устройства
Название устройства буду указывать в соответствии с версией Android, например “Android 5.1”.
В списке Device Type указаны существующие типы устройств на базе операционной системы Android. Нам необходим телефон, поэтому выбираю Phone/Tablet. В следующем блоке указываются характеристики экрана: диагональ экрана в дюймах и разрешение. Далее Memory RAM -- размер оперативной памяти устройства. В блоке Input указываются наличие кнопок “Назад”, “Домой” и “Меню”, а также клавиатура. Далее идет список аппаратных деталей нашего устройства.
Выбрав необходимые характеристики, нажимаем на кнопку Finish и находим созданное устройство среди списка устройств, нажимаем на кнопку Next.
В списке представлены платформы Android, то есть SDK Platform. Выбираем Lollipop 22 -- Android 5.1.
Рис. 3.5 Список платформ
Нажимаем на кнопки Next и Finish и наше виртуальное устройство создано и отражено в списке устройств для запуска. Теперь запускаем это устройство, нажав на иконку треугольника в колонке Actions.
Теперь наше виртуальное устройство готово к использованию.
Рис. 3.6 Внешний вид виртуального устройства
Как мы видим, функционал виртуального устройства ничем не отличается от реального. Устройство также подключено к интернету, есть возможность скачать тестируемое приложение из Google Play.
3.1.2 Настройка отладочного прокси Fiddler
Fiddler -- прокси, который работает с трафиком между клиентом, будь то браузер или телефон и удаленным сервером, и позволяет просматривать, анализировать и менять его.
...Подобные документы
Архитектура операционной системы Android. Инструменты Android-разработчика. Установка Java Development Kit, Eclipse IDE, Android SDK. Настройка Android Development Tools. Разработка программы для работы с документами и для осуществления оперативной связи.
курсовая работа [2,0 M], добавлен 19.10.2014Характеристика работы операционной системы Android, используемой для мобильных телефонов. Создание Android проекта в среда разработки Eclipse. Общая структура и функции файла манифест. Компоненты Android приложения. Способы осуществления разметки.
курсовая работа [1,0 M], добавлен 15.11.2012Разработка клиент-серверного игрового приложения на примере игры в шашки для мобильных устройств на базе операционной системы Android. Обзор мобильных платформ. Экраны приложения и их взаимодействие. Графический интерфейс, руководство пользователя.
курсовая работа [2,6 M], добавлен 15.06.2013Архитектура операционной системы Android, набор библиотек для обеспечения базового функционала приложений и виртуальная машина Dalvik. Объектно-ориентированный язык программирования Java как инструмент разработки мобильных приложений для ОС Android.
дипломная работа [1,6 M], добавлен 08.07.2015Архитектура и история создания операционной системы Android. Язык программирования Java. Выбор средства для реализации Android приложения. Программная реализация Android приложения. Проведение тестирования разработанного программного обеспечения.
курсовая работа [167,8 K], добавлен 18.01.2017Первое устройство, работающее под управлением Android. Приложения под операционную систему Android. Формат установочных пакетов. Разработка приложений на языке Java. Шаблоны основных пакетов и компонентов Android. Сборка приложений, основанная на Gradle.
курсовая работа [492,0 K], добавлен 08.02.2016Общие характеристики операционной системы Android. Разработка приложения на основе создания менеджера файлов. Получение с помощью приложения доступа к файлам, хранящимся в "облачном хранилище" в сети Интернет. Расчет стоимости программного обеспечения.
дипломная работа [2,7 M], добавлен 03.04.2015Преимущества операционной системы Android. Проектирование интерфейса приложений. Визуальные редакторы и средства кроссплатформенной разработки. Оптимизация игрового процесса, выбор фреймворка и библиотек. Классификация и характеристика игр по жанрам.
дипломная работа [2,6 M], добавлен 10.07.2017Современное состояние рынка мобильных приложений. Основные подходы к разработке мобильных приложений. Обоснование выбора целевой группы потребителей приложения. Этапы проектирования и разработки мобильного приложения для операционной системы Android.
курсовая работа [987,1 K], добавлен 27.06.2019Система помощи водителю на базе регистратора. Установка операционной системы Debian. Настройка системных служб и разработка серверного приложения. Создание локальной Wi-Fi сети. Распознавание знаков и библиотека OpenCV. Потоковое видео в Android.
дипломная работа [3,9 M], добавлен 13.09.2017Изучение общих понятий операционной системы Android, разработанной для коммуникаторов, планшетных компьютеров, основанной на ядре Linux. Разработка программного обеспечения Android. Преимущества и недостатки мобильной операционной системы Windows Mobile.
реферат [60,6 K], добавлен 16.04.2012Обзор существующих популярных программ для просмотра погоды на ОС Android. Операционные системы современных смартфонов. Ключевые особенности Android, технология Java. Разработка программной части, выбор языка, описание алгоритма, ее логической структуры.
курсовая работа [911,5 K], добавлен 16.04.2014Анализ популярных игровых приложений. Жанр – аркады с геймплеем Runner. Получение продукта, ориентированного на людей, использующих мобильные устройства на базе Android, и предназначенный для развлечения пользователей. Визуальная составляющая приложения.
дипломная работа [742,7 K], добавлен 10.07.2017Google Android как программный стек для мобильных устройств, который включает операционную систему, программное обеспечение промежуточного слоя и пользовательские приложения. Структура платформы и ее основные элементы: ядро, программы, каркас приложений.
реферат [600,4 K], добавлен 08.01.2015Структура и архитектура платформы Android. Основные достоинства и недостатки операционной системы Android. Среда разработки Eclipse, платформа Java. Подготовка среды разработки. Вкладка "Погода", "Курс валют", "Новости". Просмотр полной новости.
дипломная работа [1,0 M], добавлен 11.07.2014Средства разработки развивающих и обучающих игр и используемой программы. Среда выполнения и Dalvik. Разработка приложения для платформы Android. Графический интерфейс и обработка касаний экрана. Разработка экранов приложения и их взаимодействия.
дипломная работа [2,1 M], добавлен 18.01.2016Разработка открытой мобильной платформы Android. Первое устройство, работающее под управлением Android. Магазин приложений "Google Play". Полноценные программы навигации, редакторы офисных документов и синхронизационные утилиты. Рост вирусной активности.
презентация [58,8 K], добавлен 29.10.2014Общая характеристика системы Android, обзор его аналогов. Необходимые компоненты для начала работы в Android. Настройка конфигураций Ubuntu. Написание script-ов, упрощающих генерацию Linux. Отладка и тестирование программы на плате i.MX53 фирмы freescale.
курсовая работа [1,1 M], добавлен 12.10.2012Структура Android-приложений. Особенности игрового движка. Алгоритмизация и программирование. Список игровых состояний. Настройка, отладка и тестирование программы. Разработка руководства пользователя. Тестирование инсталляции и отображения элементов.
дипломная работа [4,5 M], добавлен 19.01.2017Разработка программного обеспечения для платформы Android версии 2.3: информационное приложения для поклонников футбольной команды, с возможностью просмотра событий, статистики и иной информации о команде и ее успехах. Листинг JsonDataManager.java.
дипломная работа [4,1 M], добавлен 24.04.2013