Анализатор APK для Linux

Это может выглядеть довольно близко к этому вопросу , но мои требования немного отличаются. Учитывая .apkфайл (например, приложение для Android, загруженное из стороннего источника, такого как F-Droid ), этот анализатор

  • должен перечислить, какие библиотеки используются им
  • должен указать, использует ли приложение некоторые рекламные модули
  • указать потенциально опасные компоненты (ключевое слово: вредоносное ПО) было бы здорово
  • должен работать в Linux (не обязательно родной: PHP, Python или Java тоже подойдут, но что-то, требующее, например, Wine, не вариант).
  • не должен требовать установки всего Android SDK (или аналогичного огромного фреймворка) (требование его частей, таких как aaptдвоичный файл, в порядке)
  • консультирование с онлайн-ресурсами допустимо в определенных пределах (но, например, без «звонка домой для получения статистики»), но предпочтительна работа в автономном режиме.

Глубокий анализ кода, декомпиляция, анализ байт-кода и т. д. не нужны — достаточно просто перечислить библиотеки и модули (если он дополнительно может дать URL-адрес для более подробной информации, это считается бонусом). Графический интерфейс не требуется (но и не помешает), однако интерфейс командной строки обязателен.

Результаты должны быть структурированы для автоматической постобработки (предпочтительно JSON или XML). Моей мечтой было бы что-то, что я просто распаковываю в каталог, затем звоню оттуда, например, ./apkanalyzer com.foobar— и он выплевывает какой-то JSON/XML в STDOUT.

Я знаю, что такой инструмент может не обнаружить каждую библиотеку/рекламный модуль (тем более, что новые могут появляться каждый день), но чем больше он знает, тем лучше. Если он сообщает о «неизвестных библиотеках/модулях» как таковых и дает возможность сделать их известными (например, через файл конфигурации), это будет бонусом.

Программа должна быть бесплатной (как в "бесплатном пиве"), желательно также должна быть бесплатной (как в "свободе слова") и должна быть бесплатной (как в "беспроблемной установке" ;).

Просто в качестве примечания: я, конечно, сначала попробовал свой Google-Fu. Хороший ресурс, который я нашел, это android-security-awesome с длинным списком доступных сервисов и инструментов. Но это не замена хорошей рекомендации :)
Я только что нашел LibRadar , который, кажется, довольно близок (но, похоже, не правильно определяет некоторые рекламные модули: например, AdMob отображается как Google Play Store). Надо будет проверить это поближе. Связанный с этим вопрос о SO (спрашивая часть "как я могу"): определить включенные библиотеки/модули из манифеста

Ответы (2)

LibRadar , кажется, соответствует моим требованиям:

  • список библиотек: Да. И классифицирует их даже.
  • список рекламных модулей: Да, среди библиотек, используя их собственную категорию.
  • указывая на потенциально опасные компоненты: либо у меня их не было (пока), либо они явно не отмечены. Однако обычно он дает URL-адрес для фона.
  • должен работать в Linux: работает. Написан на Python, может использоваться кроссплатформенно.
  • не должен требовать всего Android SDK: очевидно, нет, так как для меня он работал «из коробки» (загружен из репозитория Git). Кажется, что необходимые компоненты поставляются вместе (например apktool)
  • Результаты должны быть структурированы для автоматической постобработки: выдает JSON в STDOUT, так что да.

Он может не распознавать последние вещи, но, кажется, показывает даже неизвестные ему библиотеки. Используя идентификаторы этих библиотек, можно искать информацию о них и «накладывать» эту информацию, что я считаю весьма полезным. Большим плюсом является даже список разрешений, добавляемых библиотекой в ​​набор. Упрощенный пример (преобразованный в мою собственную структуру массива, чтобы его было легче увидеть):

[3] => Array
    (
        [name] => Parse.com
        [pkgname] => com/parse/
        [type] => Mobile Analytics
        [perms] => Array
            (
                [0] => android.permission.ACCESS_NETWORK_STATE
                [1] => android.permission.WAKE_LOCK
                [2] => android.permission.INTERNET
            )

        [url] => https://parse.com/docs/cn/android/guide
    )

Так что LibRadar будет тем, чем я сейчас буду пользоваться. Вполне соответствует моим требованиям и даже добавляет некоторый бонус к верхнему списку разрешений, используемых данной структурой.

Другим подходящим кандидатом может быть εxodus standalone :

  • библиотеки списков: только нарушители конфиденциальности, также известные как ATS (реклама и службы отслеживания), также известные как трекеры, но в моем случае они наиболее актуальны.
  • список рекламных модулей: да.
  • указывая на потенциально опасные компоненты: только для АТС.
  • должен работать в Linux: да. Как и LibRadar, это написано на Python.
  • не должен требовать всего Android SDK: нет, ему просто нужен dexdump, который можно легко установить с помощью sudo apt-get install dexdump.
  • Результаты должны быть структурированы для автоматической постобработки: Да, он предлагает вывод в формате JSON.

Это часть проекта Exodus Privacy , использующего тот же движок, что и их веб-сканер , поэтому он постоянно обновляется. Если цель состоит в том, чтобы просто поймать этих трекеров, это хороший кандидат. Пример вывода и инструкции по установке можно найти за первой (жирной) ссылкой этого ответа. Как и LibRadar, он бесплатный и с открытым исходным кодом, что также соответствует этому требованию.