Содержание статьи

Приветствую тебя, читатель! В этот раз мы решили немного отойти от привычного формата и вместо софта конкретно для мобильников рассказать тебе о софте для изучения софта для мобильников. Именно так, дело не в грамотности, а в смысле. Итак, в этом выпуске: швейцарский армейский нож для статического анализа приложений, IDEA-плагин для изучения smali-кода приложений, мощный инструмент деобфускации и приложение для анализа Android-софта от Sony Mobile. Как обычно, приятного чтения, и не забывай присылать идеи для обзоров.

 

Androguard

Если Apktool — это швейцарский армейский нож для распаковки/упаковки приложений, то Androguard играет ту же роль для анализа вредоносного либо легитимного софта. В сущности, Androguard — это набор Python-скриптов, каждый из которых выполняет строго определенную функцию. Androapkinfo предназначен для получения общей информации о пакете, androdd генерирует граф отношений всех классов и их методов, androdiff позволяет сравнить два пакета с целью выяснить, не была ли одна из его копий модифицирована, а androlyze позволяет декомпилировать и модифицировать DEX-код в интерактивном режиме. Еще десяток скриптов предназначены для других целей.

Androguard — мощный инструмент, позволяющий произвести статический анализ приложения от и до, однако он достаточно сложен в освоении, особенно в той части, которая касается интерактивного декомпилятора. С другой стороны, благодаря такому механизму работы его очень легко заскриптовать, чтобы использовать в качестве автоматизированной системы анализа в своих проектах или веб-сервисах, как это уже несколько лет делают различные компании, включая VirusTotal, не так давно купленный Google.

 

ApkAnalyzer

Если анализ приложений с помощью консольных Apktool и Angroguard тебе не по душе, то ApkAnalyzer от Sony Mobile — твой выбор. Это графическое Java-приложение класса «все в одном», позволяющее выполнять анализ и модификацию приложений без задействования каких-либо дополнительных инструментов. Ты просто подсовываешь ей APK-пакет, и она показывает тебе все его классы и методы в текстовом и графическом виде плюс позволяет изучить дизассемблированный smali-код, модифицировать его и запаковать обратно в пакет (естественно, уже с другой цифровой подписью).

Основные возможности приложения:

  • просмотр/модификация дизассемблированных листингов кода с подсветкой синтаксиса;
  • предварительная распаковка бинарных XML-файлов с возможностью изучения и модификации;
  • графическая визуализация связей между классами и методами;
  • встроенный просмотрщик логов формата logcat;
  • поддержка ODEX-ированных приложений и библиотек;
  • удобный просмотрщик ресурсов;
  • автоматический поиск неиспользуемых ресурсов (многие малвари прячут в них ELF-бинарники).

Стоит отметить, что декомпилятора в составе приложения нет, но его всегда можно установить отдельным приложением, например использовать известный Java-компилятор JD-GUI или инструмент APK Studio, позволяющий анализировать/модифицировать APK-файлы напрямую, без необходимости предварительной трансляции в классические Java-классы.

ApkAnalyzer собственной персоной
ApkAnalyzer собственной персоной
 

Smalidea

Smalidea — это плагин для среды разработки IDEA / Android Studio, позволяющий работать с проектами, полностью реализованными на ассемблере smali. Это дает довольно интересные возможности динамической отладки и анализа приложений. Достаточно применить инструмент backsmali к APK-файлу, а затем импортировать полученные файлы в проект Android Studio, и у тебя появится возможность отлаживать приложение на уровне отдельных инструкций виртуальной машины DEX на реальном или виртуальном устройстве.

Плагин поддерживает подсветку синтаксиса smali, установку брейк-пойнтов, пошаговое выполнение приложения и, что самое замечательное, ART, сменивший виртуальную машину Dalvik в Android 5.0. В будущем планируется реализовать поддержку сборки приложения из smali-файлов и сборку смешанных проектов, что позволит включить в свое Android-приложение код из чужого закрытого приложения.

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

Simplify

Приложение не так просто поддается анализу, если оно обфусцированно. Поэтому часто не обойтись без деобфускатора, который позволяет привести код к более читаемому виду. Есть несколько различных приложений и скриптов данного класса с разным назначением, и Simplify — наиболее интересное из них. В отличие от многих других Simplify — это динамический деобфускатор, это значит, что он не пытается просто пройтись по smali-файлу и вычистить его, а запускает его в виртуальной машине, которая позволяет сделать такие вещи, как, например, автоматическая дешифровка строк.

Виртуальная машина генерирует граф исполнения приложения, на основе которого Simplify выполняет окончательную чистку кода путем удаления мертвых участков кода, разворачивания констант и замены обфусцированных/зашифрованных значений реальными.

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

  1. 28.06.2015 at 19:02

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

    Чо телепатически из эфира их достаёт прямо, что ли?

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

Check Also

Google отслеживает местоположение пользователей, даже если соответствующие службы отключены

Журналисты издания Quartz обнаружили, что Google отслеживает местонахождение пользователей…