Новости из мира Android, программы, игры. Программирование под Android.

Android SDK

Android 3.0

Image

Блог Phandroid, посвященный Android опубликовал детали относительно нового выпуска Android, версии 3.0, под кодовым названием Gingerbread.

Главная новость в том, что слухи касательно появления новой ОС от компании Google подтверждаются, но похоже, сроки релиза все же задержаться и Android 3.0 будет выпущен позже заявленного срока, источник из Phandroid в некоторой степени это подтвердил.

Блог разработчиков Android: Securing Android LVL Applications

основан на http://android-developers.blogspot.com/2010/09/securing-android-lvl-appl...

Android Market licensing service является мощным инструментом для защиты приложений от пиратского использования. License Verification Library (LVL) является базовым (ключевым) компонентом для создания своей системы защиты. Нужно понимать, что дотошный хакер обойдет любую систему защиты, но максимально усложнить ему задачу обхода LVL в наших силах.

Image

Изначально, так сказать коробочное решение (Out of the box) LVL предоставляет достаточно простые механизмы защиты приложения, такое как невозможность копирования программы с одного устройства на другое. Данный пост покажет, как сделать защиту от более продвинутых пользователей, тех, кто может декомпилировать код и удалить или блокировать LVL-код и затем откомпилировать приложение без LVL защиты. Шаги, которые усложнят задачу взлома:

  • Использования обфускатора для усложнения задач реверс-инжениринга;
  • Ваше приложение должно быть tamper-resistant
  • Вы можете изменить LVL библиотеку сами, чтобы реализовать собственную защиту для усложнения основных техник взлома;c
  • Вы можете перенести проверку лицензии на доверительный сервер;

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

Применение обфускатора

Для тех, кто еще не знает, что делает обфускатор, объясняю: когда приложение компилируется, создается байткод, который содержит ссылки на исходный код – имена классов, полей, методов и т.д. Данный код легко читаем для человека. Обфускатор позволяет изменить читаемый текст кода программы, который был написан разработчиком на не читаемы. Скажем, разработчик создал переменную “MyVar”, после работы обфускатора она будет иметь имя “a”, что конечно усложнить понимание (читаемость) кода.

На рынке существую достаточно большой выбор, как коммерческих, так и бесплатных обфускаторов для Java, которые будут работать и с Android. Один из примеров ProGuard.

Изменение лицензионной библиотеки

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

  • На логики работы ядра библиотеки;
  • Входные и выходные точки приложения;
  • Как ваше приложение вызывает LVL библиотеку и обрабатывает ответ на запрос лицензии;

Ответ Google по поводу взлома системы защиты ALVL

На днях последовала официальная реакция от Google по поводу взлома новой библиотеки для защиты платных приложений от пиратского использования.

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

Анти-пиратская защита Android

Некий продвинутый чел по имени Джастин Кейс (Justin Case) предоставил видео в котором он показал на примере игры Star Hunt, что новую Анти-пиратскую защита Android легко можно взломать. Речь идет о новой системы защиты Google Licensing Service. До этого было Android License Verification Library (ALVL), которая была достаточно быстро взломана. Джастин Кейс подробно описал процесс обмана новой системы защиты с целью привлечь внимание специалистов Google на слабые места Google Licensing Service.

License Verification Library

Google продолжает развивать свою мобильную платформу и в этот раз компания объявила о поддержки разработчиков платного ПО. Речь идет о модуле License Verification Library (LVL). Включая данную библиотеку в приложение разработчик сможет проверить действительно ли оно было скачено из google market. Если не подтвердится, что приложение было скачено с маркета, то оно может быть заблокировано, удалено или переведено в демо режим. Данная библиотека поддерживает Android 1.5 и выше.

Закрытие уязвимостей Android 1.5

В октябре многие новостные издания Интернета рассказали о закрытии разработчиками Google двух уязвимостей ОС Android 1.5. Суть «дырок» заключалось в возможности проведения DDoS-атак. Напомню, что через DDoS-атаки злоумышленники закидывают кучами сетевых пакетов определённую цель (сетевой сервер) с целью вывода его из рабочего состояния.

Так вот, исследовательской командой Open Source Computer Emergency Response Team были обнаружены две ошибки.

Первая проблема заключалась в дырке некоторого функционала, работающего с WAP-протоколом. Хакеры могли использовать протокол беспроводного доступа для отправки СМС-сообщения. Эти сообщения «заворачивались» как Push-сообщения, которые проталкивались через функционал для создания ошибок исключения ArrayIndexOutOfBoundsException в языке Java. Этот тип ошибки соответствует попытки использовать адресное пространство элементов за пределами некоторого массива. То есть, это и есть как раз таки DDoS уязвимость, когда используется ошибка программного обеспечения для попытки доступа к несуществующим пространствам памяти (а элемент массива в языке Java как раз и есть абстрактный набор ссылок на адреса памяти). Уточню, что Push-сообщения используют все операторы для отправки различного контента своим клиентам: рингтоны, темы, новости и прочее. Так вот, подобный аварийный сбой приводил к автоматической перезагрузке мобильного устройства, а это означало отключению от сети и пропуске возможно важных звонков. Добавлю и ещё один неприятный факт – после каждой перезагрузке, многим же пользователям нужно будет вводить заново PIN код, а при длительном повторе подобной ошибки и ввода кода аппаратное обеспечение может дать окончательный сбой всего устройства.

Custom View и ScrollView

Продолжаю рассказ о разработке на Android.
Решил сделать свою View, которая отображает график расходов за месяц разбитый по неделям.

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

Работа с ScrollView никаких хитрых нюансов не несет, все достаточно понятно и прозрачно, если использовать стандартные компоненты. Но, как оказалось, если размещать свой View, то ScrollView попросту его не отображает совсем (показывает пустой экран) и тут начинаются танцы с бубном.

Встречаем Android 2.1

Google объявил о выходе новой версии Android 2.1, Release 1.

Данный релиз содержит изменения API и багфикс.

Изменения API:

API level в данном релизе равен 7. Так что, если Ваш проект будет переведен на данный релиз Андройда, не забываем указать это в manifest файле, чтобы можно было установить проект на данную ОС.

Live Wallpapers

Теперь можно создавать анимированные картинки рабочего стола т.е. Wallpapers. В связи с этим появился пакет android.service.wallpaper, добавлен класс WallpaperInfo и изменен WallpaperManager

Android TableLayout - Создаем таблицу с рамкой

Достаточно популярная задача - создание таблицы. В Андройд для создания таблицы используется TableLayout объект. К сожалению, данный объект не позволяет создать рамку для таблицы. Почему? Неизвестно, но, я полагаю авторовы Adnroid SDK посчитали это лишнем т.к. TableLayout ответственен только за табличную раскладку элементов на экране, все остальное его не касается.

Если порыться в интернете по заданной теме, то можно найти неплохое решение:

  1. <TableLayout android:layout_width="wrap_content"

Scrollable TabHost

Полезный проект нашел на Google code: http://code.google.com/p/mobyfactory-uiwidgets-android/

Думаю, можно взять данный пример использования Tabs в свою коллекцию фишик для будущих приложений. Автор Scrollable TabHost проделал отличную работу за нас :) Большое ему спасибо!

Проект решает следующие задачи:

Автоматическое затемнение иконок не активных вкладок;