Декомпиляция приложений *.apk

В последнее время стал часто получать на свой мобильный телефон мошеннические SMS и MMS, просящие перейти на сайт, чтобы «просмотреть открытку/сообщение», «скачать приложение» и т.п. Сегодня решил проверить, что конкретно мне хотят подсунуть. Перейдя по одной из таких ссылок через компьютер, было загружено Android-приложение (*.apk) с именем  «opera_6.5.1». В сети сейчас гуляет много вирусов, маскирующихся под якобы новую версию браузера (в прочем, не самого популярного за рубежом, но очень любимого в СНГ), которую срочно нужно обновить. Доверчивые пользователи, скачавшие такое «обновление», получают на свое мобильное устройство вирус, который отсылает с их телефона смс-сообщения на платные номера (естественно, без ведома хозяина), в результате чего пользовательский счет человека в короткий срок может достичь нулевой отметки.

Где-то на Хабре я уже читал статью, как один человек решил декомпилировать ту самую Оперу, только в формате *.jar, чтобы детально разобраться в коде вируса. Но мне попалось приложение в формате *.apk, поэтому я тоже решил его декомпилировать (исключительно технический интерес!).

Для декомпиляции *.apk-приложения мне понадобились только две составляющие: dex2jar (утилита для извлечения классов, которые уже можно декомпилировать) и Java Decompiler (то, чем будем декомпилировать). Для тех, кому необходимо получить ресурсы приложения, то нужно воспользоваться еще и ApkTool.

# C:\Decompile_apk_app\dex2jar-0.0.9.7\dex2jar C:\Decompile_apk_app\opera_6.5.1.apk — данная команда позволяет получить файл opera_6.5.1_dex2jar.jar, который с успехом открывается с помощью Java Decompiler.

# C:\Decompile_apk_app\apktool\apktool d -f C:\Decompile_apk_app\opera_6.5.1.apk C:\Decompile_apk_app\Opera – команда позволяет получить файлы манифестов, ресурсов приложения, и файлы байт-кода в формате *.smali. Здесь можно найти список команд, присутствующих в байт-коде.

Вот так не сложно можно получить доступ если не к 100% исходникам приложения, то хотя бы к той части, которую можно осмысленно понять.

Бесплатная загрузка платного приложения из App Store

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

App Store сглючил, подумал я, и мне досталась халява! Но не тут-то было! Через несколько дней я попытался обновить другое приложение, которое было бесплатным, но вместо этого появилось окно о том, что мои платежные данные «инкоррект». Немного порыв в сети, смог найти крайне интересную информацию: оказывается, в App Store по-какой причине удается иногда загрузить платное приложение, при этом деньги с карты не снимаются (как в моем случае, хотя их на карте вообще не было). Но за вами все равно числится долг, которые необходимо погасить, т.е. когда на карту поступит необходимая сумма, деньги за оплату приложения все равно будут списаны. Доступ в App Store (загрузка/обновление приложений) закрыт до тех пор, когда не будет оплачена покупка.

Вот такая история… Так что, похоже, мне придется все равно пополнить карту и оплатить загруженное приложение, иначе я не смогу ничего установить из App Store.

Способы установки приложения в ОС Android

Есть несколько вариантов установки приложения в устройство под управлением ОС Android:

  1. в режиме отладки по USB – в настройках устройства необходимо указать, что при подключении по USB устройство будет работать в режиме отладки («Настройки» -> «Приложения» -> «Дополнительные опции» -> отметить пункт «Отладка USB»). Установить приложение необходимо, используя команду «adb» из Android SDK (я в таких целях использую bat-файл, очень помогает упростить рутинные задачи): adb install -r application.apk
  2. в режиме USB-накопителя – в настройках устройства необходимо указать, что при подключении по USB устройство будет использоваться как USB-накопитель («Настройки» -> «Карта SD и память телефона» -> отметить «Устройство хранения данных»), а также разрешить установку приложений не из Android Market («Настройки» -> «Приложения» -> отметить пункт «Неизвестные источники»). Приложение, которое необходимо установить, нужно скопировать в какую-нибудь папку устройства, после чего, используя любой из доступных файловых менеджеров (скачать можно с Android Market), перейти в эту папку, найти скопированное приложение и установить его.
  3. через Android Market с устройства при условии, что необходимое приложение там присутствует.

Тестирование Android-приложения с помощью эмулятора

Одним из проектов, который мне необходимо тетсировать на новой работе — это Android приложение, позволяющее просматривать стереоскопические изображения на экране мобильного устройства. Т.к. на данный момент существуют всего два устройства, которые имееют 3D-экран (HTC EVO 3D и LG Optimus 3D), то приложение заточено именно под них, хотя никто не запрещает запускать его на других Android-устройствах, только толку от этого будет не больше, чем обычного вьюира.

На данный момент у нас на работе всего одно устройство (HTC EVO 3D) на котором можно непосредственно тестировать, хотя в скором времени планируется добыть и LG Optimus 3D. Но помимо физического устройства, можно же тестировать и на эмуляторе, хотя ряд функций все же протестировать не удасться (к примеру, снять изображений на камеру устройства и отправить его в приложение).

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

1. Java Development Kit (JDK)
2. Android SDK

Как настроить эмулятор и устанавливать в него приложения можно прочитать в этой статье. А здесь можно узнать, как добиться того, чтобы Android Market присутствовал в эмуляторе.

Конечно, здесь речь идет в большей степени про ручное функциональное тестирование. Хотя, никто не запрещает автоматизировать процессы, об этом неплохо написано в здесь.

iOS Background

Фон, который в некоторых местах используется в iOS, в честности, в панели уведомлений (начиная с iOS 5.0). Можно использовать в различных целях, к примеру, установить в качестве фона для своего Твиттер-аккаунта.

iPad Background

Доставка почты на iPhone/iPad через GMail (Exchange)

На iOS-девайсах можно настроить учетную запись почты через Exchange, при условии, что вы пользуетесь почтой от Google (про то, что  делать, если у вас и так есть корпоративный ящик Exchange — писать не буду, и так все понятно). А вот GMail теперь нормально функционирует на iPhone/iPad через Exchange, хотя поддержка того самого Exchange была запущена еще несколько лет назад.

Какие преимущества дает использование GMail через Exchange? Ну, как минимум два — полный поиск по письмам и группировка контактов. Также, для себя лично, я выделил еще один жирный плюс: теперь почта автоматически доставляется, т.е. не надо нажимать иконку «обновить» и только после этого почтовая программа проверит, и в случае, если есть, получит письмо. Теперь же как только письмо отправляется мне, почтовая программа мгновенно его доставляет. Это просто великолепно!

Чтобы использовать GMail через Exchange, делаем следующее:

1) удаляем старый аккаунт GMail (он уже будет просто не нужен): «Настройки» -> «Mail, Контакты, Календари» -> Свой почтовый ящик -> «Удалить учетную запись».
2) добавляете свой почтовый ящик заново: «Настройки» -> «Mail, Контакты, Календари» -> «Добавить…». Выбираете «Microsoft Exchange». Вписываете свой e-mail, поле «Домен» — m.google.com, поле «Пользователь» — свой e-mail, и пароль.

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

Официальный анонс iOS 5

На прошедшей вчера конференции WWDC 2011, мы увидели презентации сразу трех вещей от Apple: Mac OS X Lion, iOS 5 и iCloud. Такое значимое мероприятие для Apple ни мог не пропустить Стив Джобс, который до сих пор числиться на бессрочном больничном. Меня, как обладателя iPad первого поколения, больше всего интересуют нововведения в iOS 5, а их будет в обновленной операционной системе, если верить, более 200 (!).

Вот список самых заметных нововведений (по информации сайта 3dnews.ru):

  • Была изменена система оповещений, которая раздражала многих пользователей всплывающими окошками в неподходящее время. Центр извещений аккумулирует все последние обновления. Также на значках программ появятся мини-пиктограммы с количеством новых сообщений. При запуске полноэкранных приложений новые извещения ненавязчиво появляются вверху экрана.
  • Функция iOS 5 — Newsstand — позволяет подписаться на последние популярные журналы и газеты. Дизайн напоминает ларёк для газет. Новые выпуски автоматически скачиваются в фоновом режиме и доступны оффлайн.
  • Интеграция Twitter, о которой ходило много слухов. Для поддержки нужно просто подключить свою учётную запись, которая может сообщаться всем приложениям iOS при запросе. Поддержка Twitter встроена во многие стандартные программы, включая Camera и Photos: нужно лишь нажать на кнопку Tweet и данные автоматически прикрепляются к новой записи в журнале. Можно также публиковать адресную строку из Safari и данные местоположения из Maps.
  • Обновление обозревателя Safari, на который приходится 2/3 мобильного сёрфинга. Добавлены вкладки. В адресной строке появилась новая кнопка Safari Reader, которая автоматически преобразует макет любого сайта в одноколоночную вёрстку для удобного чтения на малом экране. Также появилось расширение «Список чтения», предлагающее временный список ссылок, с которыми пользователь хотел бы ознакомиться позже.
  • Функция «Напоминания» позволяет составить перечень задач и ассоциировать их с определённым временем или даже с каким-то местонахождением. Список задач синхронизируется между устройствами.
  • В обновлении камеры учтена громадная популярность iPhone 4 в глобальном фотоархиве Flickr. Теперь кнопка вызова камеры появилась прямо на экране ожидания. Клавишу повышения громкости можно использовать в качестве спуска затвора. Прямо в приложении можно выделить область экрана, для которой будет автоматически установлены оптимальные настройки экспозиции. Появились простые функции редактирования: обрезка, поворот, устранения эффекта красных глаз и т. п., а также функция автоматической коррекции фотографии.
  • Обновление клиента электронной почты предлагает встроенный словарь, который может использоваться и другими приложениями, функцию расширенного форматирования текста, возможность перетаскивания адресов, расширенный поиск, пометки сообщений, поддержку S/MIME и др. Была показана новая разделяемая клавиатура для iPad.
  • Функция PC Free позволяет настроить и активировать устройство без подключения к компьютеру. То же самое касается и обновления программного обеспечения, причём скачивается не вся прошивка, а только те её части, которые подверглись изменению. Появилось много функций, которые теперь можно делать без основного ПК, что даёт пользователю больше самостоятельности, а ОС — независимости.
  • iOS — самая популярная игровая платформа на планете. В App Store доступно более 100 тысяч игр и развлекательных приложений. Всего за 9 месяцев пользователями Game Center стало 50 млн человек, тогда Xbox Live стали пользоваться 30 млн человек за 8 лет. В iOS 5 Apple интегрировала больше социальных функций, а также возможность покупки и скачивания прямо из Game Center.
  • iMessage — теперь универсальная служба обмена мгновенными сообщениями между всеми устройствами iOS. Она позволяет передавать текст, фото, видео, контакты и поддерживает конференц-связь.
  • AirPlay Mirroring позволяет осуществлять вывод всего экрана iPad на телевизор с помощью беспроводной сети посредством приставки Apple TV.

iOS 5 будет доступна осенью для iPod touch (третье и четвертое поколение), iPhone 3GS, iPhone 4, iPad и iPad 2.

Ждемс…

Читаем книги формата DJVU на iPad

Появилась необходимость читать пару книг в формате DJVU на iPad. Стал искать в App Store подходящие программы, выбрал пал на DJVU Reader. Закачал в него книги (одна 35 МБ, другая — 47 МБ), открыл — и о ужас! Программа с нереальными тормозами смогла открыть в начале первую страницу книги, потом через минуты две — вторую и т.д. Зуммирование страниц так же поддавалось с огромной задержкой. Не знаю, почему так происходило, скорее всего из-за большого объема страниц в книгах — около 950.

Затем вычитал, что программа-читалка Stanza умеет по мимо книг в формате ePub читать и формат DJVU. Для этого нужно через iTunes загрузить в программу книгу и после открытия Stanza на iPad начнется автоматическое конвертирование DJVU-книги в формат, понимаемый Stanza. Процесс конвертирования не быстрый, у меня ушло на перевод одной книги более получаса. Но это того стоит. Теперь все мои закаченные книги легко открываются и читаются.

Управляем компьютером через iPhone/iPad

Есть такая интересная программа для iOS, которая позволяет удаленно управлять стационарным компьютером. Нет, это не аналог TeamViewer, тут программа немного из другой серии. Суть Mobile Mouse сужается до выполнения частых операций с компьютером. К примеру, я сижу на диване, смотрю фильм. Потом мне захотелось не вставая с дивана поставить фильм на паузу или увеличить/приглушить громкость. Что я делаю — беру iPad/iPhone с установленной программой Mobile Mouse, и с помощью пальца, проводимого по экрану устройства, получаю подобие мыши, курсор которой уже двигается на экране компьютера. Так я могу произвести все необходимые дальнейшие манипуляции. Естественно, программа имеет более простой способ управление медиа — все необходимые и важные кнопки вынесены на ее панель.

Чтобы Mobile Mouse смог управлять удаленным компьютером, необходимо с сайта производителя скачать и установить на этот компьютер маленькую программу-сервер (есть как для Windows, так и для MacOS). Далее ничего настраивать даже и не придется, клиент и сервер прекрасно автоматически связываются по Wi-Fi.

Описывать весь функционал очень долго и муторно, скажу лишь, что программа в своем сегменте является самой лучшей. Мне повезло, я смог скачать Mobile Mouse бесплатно, когда происходила зимняя распродажа в App Store, сейчас же за версию для iPhone придется выложить 1,99$, а за версию для iPad — 2,99$. Но это, безусловно, того стоит.

Mobile Mouse (Remote/Trackpad)

Про джейлбрейк iPad с iOS 4.2.1

Решился все таки поставить джейлбрейк на свой iPad с прошивкой 4.2.1. Как известно, отвязанного джейлбрейка для яблочных устройств с iOS 4.2.1 не было достаточного долгого времени, и вот на прошлой недели вышел джейлбрейк Greenpois0n от Chronic-Dev team. Почитав отзывы людей, которые устанавливали этот джейлбрейк, понял, что опасаться нечего (багов замечено не было, какой-то нестабильной работы — тоже) и можно смело ставить на свой девайс.

Скачал версию Greenpois0n для Windows, запустил, проследовал шагам инструкции, которые выводились в программе, потом после перехода iPad’а в режим DFU, на экране устройства побежали строчки загрузки и патченга. Все надписи очень знакомые, ведь как известно, iOS построена на ОС UNIX. Джейлбрейк прошел быстро и успешно, с первого раза. Появился инсталлер для Cydia, в общем, как все и положено. Стоит отметить, что экран загрузки с лого Apple (яблоко) после джейлбрейка не изменился (!), хотя, судя по комментам на разных сайтах, бутлогер меняется на лого черепа.

Сразу же после установки Cydia, поставил себе приложение iFile, с помощью которого можно получить доступ ко всей файловой системе iPad’а. Вся иерархия директорий подчиняется стандарту FHS. Сейчас вот сижу, ищу интересные приложения, которых, по ряду определенных причин, нет в App Store.