Содержание статьи
- Инструменты
- Почитать
- Анализ использования обфускации в приложениях
- Взлом приложения с нативным кодом
- Взлом очень уязвимого приложения
- Структура файлов DEX
- Разработчику
- Магия асинхронного программирования с Kotlin
- Трюки со строками
- Material Design и тени
- Защита приложений от взлома
- 5 неизвестных, но полезных комбинаций Android Studio
- 25 новых библиотек
- Библиотеки
Инструменты
- QARK — мощный инструмент для поиска уязвимостей в приложениях (как в исходном коде, так и в APK);
- android-scripts — небольшая коллекция скриптов для реверса Android-приложений;
- edlrooter — root-эксплоит для Nexus 6 с использованием Qualcomm Emergency Download (EDL) Mode (CVE-2017-13174, CVE-2016-10277);
- AndroidIdChanger — Xposed-модуль для изменения информации об устройстве (IMEI, Android ID, Serial Number, Wifi Mac Address и другое);
- VirtualHook — фреймворк для рантайм-модификации приложений (нечто вроде Xposed, не требующего прав root);
- exploit_me — уязвимое ARM-приложение для тренировки навыков взлома (присутствуют практически все возможные баги);
- SdkSearch — приложение для поиска документации по Android SDK.
Почитать
Анализ использования обфускации в приложениях
A Large Scale Investigation of Obfuscation Use in Google Play — исследование на тему использования обфускаторов разработчиками приложений для Android. Обфускаторы — утилиты, способные сделать код приложения гораздо более запутанным и сложным для чтения.
Один из самых популярных обфускаторов — ProGuard входит в состав Android Studio. В первую очередь он предназначен для оптимизации кода путем сокращения имен. Существуют и более продвинутые версии обфускаторов: DexGuard, Allatory, DexProtector и многие другие. Кроме сокращения имен, они также выполняют шифрование строк и используют многие другие типы обфускации (например, заменяют прямой вызов методов рефлексией).
По словам исследователей, только 24,9% приложений из проанализированных 1,7 миллиона защищены обфускаторами. И это плохо, так как в мире Android процветает то, что называется перепаковкой приложений. Простые цифры:
- 86% вирусов — это перепакованные версии обычных приложений;
- 13% приложений в сторонних маркетах — перепакованные версии приложений других разработчиков (зачастую с включением рекламы).
В то же время, по словам опытных исследователей кода приложений, ProGuard увеличивает общее время анализа всего лишь в два раза. Другими словами, если приложение должно быть исследовано — оно будет исследовано.
Общие результаты:
- 64,51% приложений включают код, обфусцированный с помощью ProGuard (необязательно код самого приложения, возможно — код библиотек);
- 0,16% используют продвинутые техники обфускации, такие как использование зарезервированных в Windows ключевых слов (так делают DexGuard и некоторые конфигурации Allatory);
- 0,05% приложений обфусцированы с помощью DexGuard;
- 0,01% обфусцированы с помощью Bangle.
Взлом приложения с нативным кодом
Debugging Android third-party Java apps with native methods — статья с рассказом о способе исследования (взлома) приложений, использующих нативный код. В данном случае используется не статический анализ приложения с помощью дизассемблирования и декомпиляции, а запуск приложения под отладчиком.
В целом суть метода в следующем:
- Распаковываем приложение-жертву и дизассемблируем его в низкоуровневый код smali с помощью утилиты
backsmali
(на самом деле все это можно сделать с помощью apktool). - Импортируем код приложения (smali) в Android Studio и настраиваем отладчик.
- Включаем отладку нужного приложения на устройстве с помощью команды типа
am start -W -D com.skout.android/com.skout.android.activities.Skout
(требует права root). - В Android Studio устанавливаем брейк-пойнт на метод onCreate в главной активности приложения.
- В Device Monitor (DDMS) находим нужное приложение на устройстве.
- Запускаем отладку приложения.
Таким способом можно построчно отладить и, как следствие, изучить поведение приложения. Но это еще не все: если установить на смартфон и запустить gdbserver
, с его помощью можно будет подключиться к устройству, используя отладчик GDB
, а уже затем подключиться к процессу приложения. Это даст возможность отлаживать нативный код приложения, как только ему будет передано управление.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»