Что можно найти, если сделать реверс-инжиниринг 16 тысяч Android-приложений

Сайт Fallible помогает провести реверс-инжиринг Android приложения с целью получения секретов, прошитых в исходном коде. Компания периодически анализирует приложения заказчиков на безопасность и решила выложить сервис в откртый доступ. За пару месяц среди 16 тысяч приложений было найдено около двух с половиной тысяч приложений с ключами или секретами к внешним сервисам.

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

Некоторые разработчики даже оставляют секретные коды к аккаунту Amazon Web Services c правами на запуск и остановку экземпляров виртуальных машин. Тут стоит упомянуть о существовании помощников, которые могут защитить от нечаянного коммита секретов в публичный репозиторий. Например, https://github.com/awslabs/git-secrets.

Простая обфускация через ProGuard лишь замедляет декомпиляцию и не остановит упорного злоумышленника от извлечения секретов. Рекомендуется по возможности не использовать коды доступа внутри приложения или использовать разные коды с разными уровнями доступа. Здесь можно почитать про способы защиты чувствительных данных в Android-приложениях.

via Hackernoon

 

Оффлайн распознавание речи в Android 4.1

В очередном обновлении Android 4.1 Jelly Bean появилась функциональность оффлайн распознавания речи. Теперь использовать голосовой ввод можно даже тогда, когда отсутствует подключение к интернету. На конференции Google IO был продемонстрирован Galaxy Nexus, с помощью которого можно было произнести целую фразу и получить распознанный текст.

На данном этапе доступен только английский язык, но Google обещает добавить поддержку остальных языков в ближайшем будущем. О том, как интегрировать технологию Voice Typing в свое приложение можно прочитать здесь.

Декомпиляция Android приложений

Хочу поделиться наиболее удобным и быстрым способом получения исходного кода Android приложения.

1. Для получения apk-файла прямо из телефона можно воспользоваться бесплатным файловым менеджером Astro. В приложении ASTRO необходимо зайти в менеджер приложений, и выбрав нужное приложение нажать кнопку резервная копия, apk-файл сохранится на карту памяти в папку backups и папку, соответствующую имени пакета приложения.
AirDroid.

2. Получение dex-файла из файла приложения apk. Открыть apk-файл как zip-архив и скопировать оттуда файл classes.dex.

3. Получить jar-файл из dex-файла. Для этого можно воспользоваться проектом dex2jar. В консоли следует запустить dex2jar.bat с параметром имени dex-файла.

4. Собственно этап декомпиляции. Проект jd-gui позволяет декомпилировать jar файла даже с использованием интерфейса. После открытия файла командой File-Save All Sources указываем для архива с исходным кодом. Следует отметить, что на некоторых приложениях (например, Instagram) jd-gui вываливается с ошибкой и не сохраняет архив, хотя по отдельности файлы можно просматривать. Если это станет проблемой, то придется искать альтернативные декомпиляторы java.