Сегодня в выпуске: взлом приложений с нативным кодом с помощью дебаггера, большое исследование использования обфускации в приложениях, магия асинхронного программирования на Kotlin, большой гайд по Material Design и теням в интерфейсе, рассказ о структуре файлов DEX, защита приложений от взлома и, конечно же, большая подборка свежих библиотек.
 

Инструменты

  • 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 — статья с рассказом о способе исследования (взлома) приложений, использующих нативный код. В данном случае используется не статический анализ приложения с помощью дизассемблирования и декомпиляции, а запуск приложения под отладчиком.

В целом суть метода в следующем:

  1. Распаковываем приложение-жертву и дизассемблируем его в низкоуровневый код smali с помощью утилиты backsmali (на самом деле все это можно сделать с помощью apktool).
  2. Импортируем код приложения (smali) в Android Studio и настраиваем отладчик.
  3. Включаем отладку нужного приложения на устройстве с помощью команды типа am start -W -D com.skout.android/com.skout.android.activities.Skout (требует права root).
  4. В Android Studio устанавливаем брейк-пойнт на метод onCreate в главной активности приложения.
  5. В Device Monitor (DDMS) находим нужное приложение на устройстве.
  6. Запускаем отладку приложения.

Таким способом можно построчно отладить и, как следствие, изучить поведение приложения. Но это еще не все: если установить на смартфон и запустить gdbserver, с его помощью можно будет подключиться к устройству, используя отладчик GDB, а уже затем подключиться к процессу приложения. Это даст возможность отлаживать нативный код приложения, как только ему будет передано управление.

Отладка приложения с помощью GDB
Отладка приложения с помощью GDB

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score! Подробнее

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.


Check Also

Игра на доверии. Пентестим Multicast DNS и Service discovery

Multicast DNS (mDNS) и Service Discovery (DNS-SD) — это повсеместно распространенные прото…

1 комментарий

  1. Аватар

    AppMaster

    20.02.2018 at 14:41

    Спасибо! Побольше бы таких материалов!

Оставить мнение