Декомпиляция apk-файлов онлайн

Декомпиляция приложений и её функции

Один из языков программирования, который используется при написании программ для ОС Android – Java. На нём, как правило, пишут программы новички и люди, которые привыкли к его инструментарию. Крупные разработчики используют другие языки, которые дают больше свободы в использовании сторонних библиотек или программных компонентов.

Для того, чтобы написанный код превратился работающее приложение, его нужно скомпилировать встроенным в SDK (Software Development Kit) компилятором. Обратный же процесс, когда из готового APK-файла получается программный код, называется декомпиляцией.

Для чего может понадобиться декомпилировать такие файлы? Есть несколько ситуаций, в которых это пригодится:

  1. Пользователю недостаточно предоставленного функционала и он обладает достаточными знаниями и опытом, чтобы вносить изменения в готовый код.
  2. Посмотреть, как работает определённый компонент программы и приобрести нужный опыт в его реализации при создании собственного продукта.
  3. Определить, используются ли в приложении какие-либо части вредоносного кода.

Как видно, все эти задачи требуют некоторого опыта работы с языками программирования и Android SDK. Но при этом, на просторах интернета есть множество инструкций, которые под силу и новичкам, что делает процесс обратной компиляции полезным и для них. Нужно просто следовать инструкциям.

Что такое Apktool?

Apktool представляет собой программу, входящую в список инструментов Реверсивной Инженерии (обратной разработки, а попросту – копирования) ресурсов Андроид-приложений (APK – Android Package Kit). Этот инструмент позволяет расшифровывать APK-проекты, перехватывая его функции на лету, изменяя под собственные нужды, и формировать уже обновлённый APK файл. Для работы с Apktool требуется среда Java 7 (JRE 1.7) и новее. Этот инструмент одинаково идёт из-под Linux и Windows. Инструмент способен на многое, среди главных же его функций можно выделить:

  • расшифровка ресурсов Андроид
  • переформирование расшифрованных ресурсов с приведением к бинарному виду APK
  • компоновка и конечная реализация APK в зависимости от механизма источника
  • реализация непрерывности (перманентности) поставленных задач

Что стоит за этими заумными словами, вы скоро поймёте, а пока рассмотрим вопрос, где и как установить всё, что понадобится для знакомства с инструментом.

Анализ действий, выполняемых программным кодом

Для примера рассмотрим приложение WhatsApp Messenger. В памяти подопытного мобильного устройства я нашел программу под названием «WhatsApp Messenger», которая (спойлер) на самом деле оказалась малварью под названием (классификация Dr.Web).

Рис. 3. Содержимое папки WhatsApp после декомпиляции приложенияРис. 4. Обнаружение Android.Spy.230.origin — действительно, это малварь

Android.Spy: краткая справка

Android.Spy — семейство многофункциональных троянцев, поражающих мобильные устройства под управлением ОС Android. Распространяются на популярных сайтах (преимущественно китайских) в составе легитимных игр и приложений, которые модифицированы злоумышленниками.

Для извлечения данного приложения воспользуемся программой Android Debug Bridge. После успешного извлечения файла WhatsApp.apk его необходимо декомпилировать с помощью Apktool. Теперь перейдем к исследованию содержимого каталога приложения. Для получения основной информации (какие службы и компоненты использует приложение) изучим файл AndroidManifest.xml. Воспользуемся для этого Android Studio.

Работа с системными APK

Для того чтобы модифицировать системные приложения необходимо прежде всего необходимо скормить программе APKTOOL системный файл framework -res.apk который находиться в системном разделе Android:

/system/framework/framework -res.apk

Для того чтобы скормить Apktool данный файл необходимо, ввести команду:

Учитывайте что, команду нужно вводить относительно пути расположения, то есть если файл framework -res.apk находиться в папке C:\primer, то команда будет выглядеть следующим обзором:

Также для того чтобы можно было модифицировать системные файлы прошивка должна быть вначале Deodex-ирована.

Теперь как это можно все упросить! (не использовать командную строку)

Скачайте приложение SmartApkTool, данное программа имеет графический интерфейс и очень легкая в использование. Автор данной программы мой хороший друг Никита Коровкин (на данный момент работает в Surfingbird)! за что ему огромное Спасибо!

Тренируемся на DIVA (Чертовски Беззащитный и Уязвимый APK)

Инструмент, как указывалось, предназначен для работы с APK-файлами. APK – это формат исполняемых файлов-приложений (программ) для ОС Андроид. Он представляет из себя обычный архив, открывающийся доступным zip-ом. Если вы загляните внутрь, то увидите список, характерный для многих APK. Это classes.dex, META-INF, AndroidManifest.xml, resources.arsc и т.д. и т.п. Однако заглянуть внутрь этих файлы абы чем не получится – они не допускают редактирования с помощью какого-нибудь там Блокнота. Вот здесь и вступает в дело Apktool.

Но чтобы не учиться плавать по книжке, возьмём шаблонный APK файл, который поможет познакомиться с типовым APK поближе. Для этой цели индийские товарищи предложили APK проекта DIVA,  который можно скачать для прямой установки в Кали командой:

git clone https://github.com/payatu/diva-android

или в форме zip-а:

В Кали за нас всё сделает терминал; если вы продолжаете работать в Windows, я приготовил вам готовый файл (чтобы не рыскать):

скачать DIVA для Аpktool в Windows

Распаковывайте из архива файл diva-beta.apk куда угодно. Содержимое файла любого файла .apk в общих чертах понятно любому архиватору. Однако работа с конкретными файлами, как уже говорилось, доступна немногим. Так что открываем файл с помощью Аpktool из командной строки в формате:

apktool d полный-путь-к-diva-beta.apk

Так, у меня diva-beta.apk лежит на Рабочем столе, а значит команда будет выглядеть так:

Появилось окно с процессом декодирования параметров ресурса. На папку с файлами можно взглянуть в той же Windows\System32:

Будьте на связи. Успехов.

Шаг 3

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

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

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

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

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

Я уже участник «Xakep.ru»

Декомпиляция APK онлайн

  • Предисловие
  • Что такое декомпиляция
  • Декомпилятор APK файлов онлайн
    • Онлайн сервис APK Decompilers
    • Онлайн сервис Javadecompilers
    • Онлайн сервис APK-Deguard
  • Выводы

Декомпилятор пытается перевести скомпилированный бинарный файл обратно в некое подобие исходного кода. Качество данной операции напрямую зависит от особенностей языка программирования исходника.

Для языка программирования Java существует большое количество декомпиляторов. Байт-код Java содержит много информации. Это облегчает декомпилятору восстанавливать изначальный код до состояния, пригодного к повторной компиляции.

Декомпиляция APK

Как вы знаете, Андроид-приложения как правило пишут на Java. С момента выхода самой первой версии Андроид перед программистами стояла задача — не только компилировать из файлов Java в APK файл для установки его в Android-устройство, но и произвести обратное действие, т.е. декомпилировать файл APK.

Ответ простой — для того чтобы в первую очередь посмотреть, как работает то или иное Android-приложение, ну и конечно изменить если требуется. При декомпиляции APK-файла (если он не был подвергнут предварительной обфускации) вы получаете полный комплект Java файлов с исходным кодом.

Большинству нужно именно просмотреть содержимое и для того чтобы это сделать на компьютере нужно установить много различных инструментов. Требуется наличие установленной Java-машины, Android SDK и таких инструментов как: JavaDecompiler, dex2jar и т.д. На самом деле это хоть и сложная, но самая правильная дорога, увы требующая от пользователя некоторых знаний и навыков, ну и конечно возни.

Да, конечно. С развитием облачных технологий появились бесплатные онлайн-сервисы о которых я сейчас расскажу.

Декомпиляция APK онлайн с Javadecompilers

Начнем наш обзор с онлайн сервиса Javadecompilers. Данный инструмент основан на оффлайн версии декомпилятора Jadx.

1. Заходим на сайт Javadecompilers нажимаем кнопку «Обзор» и выбираем необходимое приложение.

2. Нажимаем на кнопку «Upload and Decompile».

Javadecompilers

3. Через несколько минут (в зависимости от размера приложения) будет отображен результат, который можно скачать на компьютер нажав на кнопку «Save».

Javadecompilers

4. Вы также можете просмотреть все файлы находящиеся в директориях и скачать каждый по отдельности.

Javadecompilers

Кроме этого на сайте есть и другие инструменты. В целом сайт очень даже неплох. Однозначно в закладки!

Декомпиляция APK онлайн с APK-Deguard

Еще один интересный онлайн сервис называется APK-Deguard. Работает по тому же принципу. Заходим, загружаем на сайт необходимый файл и нажимаем на кнопку «Upload».

APK-Deguard

Вот как выглядит декомпилированный APK-файл на сайте.

APK-Deguard

Онлайн-сервис APK-Deguard, как и предыдущий сайт, позволяет скачать исходники. В формате txt, zip и apk.

APK-Deguard

Есть ограничение на максимальный размер загружаемого приложения. Размер файла не должен превышать 16мб. Сервис не плохой и вполне юзабельный, уже давно добавлен в закладки.

Декомпилятор APK Decompilers

Ну и напоследок в двух словах про сервис APK Decompilers. Коротко, потому что особенно не о чем и рассказывать, сайт для декомпиляции APK файлов.

APK Decompilers

По функционалу уступает предыдущим. Позволяет скачать исходники на компьютер без возможности просмотра директорий и файлов на сайте.

Выводы

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

На этом все. Сегодня вы узнали больше о строении и декомпиляции APK файлов. Я уверен вам понадобиться эта информация и эти навыки для защиты от вредоносных программ при установке подозрительных приложений на Android.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector