- Декомпиляция APK-файлов онлайн
- Декомпиляция APK онлайн
- Декомпиляция APK
- Декомпиляция APK онлайн с Javadecompilers
- Декомпиляция APK онлайн с APK-Deguard
- Декомпилятор APK Decompilers
- Выводы
- Декомпилировать по для андроид
- Простой способ модификации Android приложения
- Декомпиляция
- Переопределение классов
- Замена классов
- Заключение
- Декомпиляция и Компиляция APK приложения Андроид
- Декомпиляция и Компиляция APK приложения Android — Необходимые компоненты
- Установка необходимых компонентов. Настройка Java
- Настройка ApkTool
- Декомпиляция APK
- Компиляция APK
- Подпись APK
- Работа с системными APK
- Теперь как это можно все упросить! (не использовать командную строку)
- Как пользоваться SmartApkTool
- Альтернативный вариант
Декомпиляция APK-файлов онлайн
Недавно я рассказывал как с помощью бесплатных онлайн сервисов проверить Android приложения на вирусы (проверить APK-файл). Сегодня мы продолжим тему APK-файлов, и я вам покажу как декомпилировать APK файл онлайн.
Но для начала, для тех кто не в курсе, я расскажу, что такое декомпиляция APK и декомпиляция в целом, и в каких случаях это может понадобиться. Кодерам, IT-шникам и другим компьютерным гикам читать следующую главу категорический не рекомендуется! Сразу переходите к обзору онлайн-сервисов.
Декомпиляция APK онлайн
- Предисловие
- Что такое декомпиляция
- Декомпилятор APK файлов онлайн
- Онлайн сервис APK Decompilers
- Онлайн сервис Javadecompilers
- Онлайн сервис APK-Deguard
- Выводы
Что такое декомпилятор или процесс декомпиляции?
Декомпилятор пытается перевести скомпилированный бинарный файл обратно в некое подобие исходного кода. Качество данной операции напрямую зависит от особенностей языка программирования исходника.
Для языка программирования Java существует большое количество декомпиляторов. Байт-код Java содержит много информации. Это облегчает декомпилятору восстанавливать изначальный код до состояния, пригодного к повторной компиляции.
Декомпиляция APK
Как вы знаете, Андроид-приложения как правило пишут на Java. С момента выхода самой первой версии Андроид перед программистами стояла задача — не только компилировать из файлов Java в APK файл для установки его в Android-устройство, но и произвести обратное действие, т.е. декомпилировать файл APK.
Зачем нужна декомпиляция APK-файла?
Ответ простой — для того чтобы в первую очередь посмотреть, как работает то или иное Android-приложение, ну и конечно изменить если требуется. При декомпиляции APK-файла (если он не был подвергнут предварительной обфускации) вы получаете полный комплект Java файлов с исходным кодом.
Большинству нужно именно просмотреть содержимое и для того чтобы это сделать на компьютере нужно установить много различных инструментов. Требуется наличие установленной Java-машины, Android SDK и таких инструментов как: JavaDecompiler, dex2jar и т.д. На самом деле это хоть и сложная, но самая правильная дорога, увы требующая от пользователя некоторых знаний и навыков, ну и конечно возни.
Можно ли декомпилировать Андроид-приложение как-нибудь проще?
Да, конечно. С развитием облачных технологий появились бесплатные онлайн-сервисы о которых я сейчас расскажу.
Декомпиляция APK онлайн с Javadecompilers
Начнем наш обзор с онлайн сервиса Javadecompilers. Данный инструмент основан на оффлайн версии декомпилятора Jadx.
1. Заходим на сайт Javadecompilers нажимаем кнопку «Обзор» и выбираем необходимое приложение.
2. Нажимаем на кнопку «Upload and Decompile».
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.
Источник
Декомпилировать по для андроид
Полная декомпиляция Android приложений, декомпиляция приложений в исходный Java код
Порой при разработке не понимаешь как реализовать определенную функцию, которую видел в чужом приложении, или просто изучить стороннее приложение охота, для этого существует декомпиляция приложений.
В данной статье я покажу как декомпилировать Андроид приложения из *.apk файла в исходный код.
Все приложения являются бесплатными, мультиплатформенными и открытыми (кроме Java Decompiler, у него закрыт исходный код).
Их можно скачать с официального сайта.
Инструкцию буду проводить для ОС Windows.
- Качаем dex2jar-0.0.9.8.zip (номер версии может изменяться) и извлекаем все файлы в желаемую папку, например D:\Decompile .
- Качаем Java Decompiler, я использовал JD-GUI и извлекаем файлы для удобства в ту же папку, куда и dex2jar.
- Качаем apktool и apktool-install-windows-r04-brut1.tar.bz2 и извлекаем файлы уже в системную папку. По умолчанию C:\Windows. (Не забываем скачать второй архив)
- Берем нужный apk файл и кладем в папку с dex2jar и Java Decompiler. В примере приведу декомпиляцию приложения
Calculator.zip ( 66.18 КБ )
. (надо извлечь из архива). - Открываем Командную строку (Обработчик команд Windows) в вышеупомянутой папке (В папке по пустому месте при зажатой кнопке Shift нажимаем правую кнопку мыши и выбираем Обработчик команд Windows).
- Вводим команду dex2jar Calculator.apk и если все прошло хорошо, в той же папке появится файл Calculator.apk.dex2jar.jar
- Запускаем jd-gui и открываем полученный на предыдущем шаге файл. (На Windows 7 открывать с правами администратора и с совместимостью Windows XP SP3)
- Выбираем пункт меню File-Save All Sources и сохраняем.
- Извлекаем полученный zip архив.
- Помещаем полученную папку в папку src (надо предварительно создать).(Что бы получилась примерно такая структура D:\Decompile\Calculator\src\com\android)
- Опять же в командной строке вводим команду apktool d Calculator.apk Calculator, где Calculator.apk-имя пакета, Calculator-папка для декомпиляции
- Если все хорошо, тогда в указанной папке будут исходники в двух форматах (java и smali), ресурсы и файлы AndroidManifest.xml, apktool.yml
- Все готово, исходники получены. Правда после декомпиляции в коде есть, можно сказать, ошибки, я заметил пока только что вместо true и false стоят 1 и 0 соответственно.
P.S. Если хочется импортировать полученный код в IDE Eclipse (File-Import), тогда положите содержимое этого архива(Eclipse.zip ( 1.44 КБ )
) в папку с проектом, предварительно изменив на третьей строке PROJECT NAME PROJECT NAME на желаемое название, в моем примере «Calculator» в файле .project
P.P.S. Если apk файл был пропущен при компиляции через обфускатор (proguard), тогда полученный код будет плохо читаем.
Источник: http://boomik.ru/polnaya-dekompilyaciya-android-prilozhenij
Сообщение отредактировал KEEPERekb — 09.06.15, 14:51
Источник
Простой способ модификации Android приложения
Бывает после релиза приложения его исходники куда-то деваются. Правда ведь, такое постоянно случается? И ничего не остается кроме как декомпилировать его и подправить несколько сотен строк кода и все это нужно сделать максимально быстро.
Вот и у меня появилась задача модифицировать приложение имея всего лишь его apk. И те, кто занимался декомпиляцией приложений знают насколько тяжело его потом скомпилировать.
Декомпиляция
Для Android’а существуют следующие утилиты:
- ApkTool для декомпиляции ресурсов.
- Dex2Jar для преобразования dex в jar.
- JD-GUI для получения исходников из jar.
- еще рекомендую JAD, некоторые места лучше декомпилирует чем JD-GUI.
Информации по их использованию в интернете достаточно.
Если попробовать собрать приложение после декомпиляции, то скорее всего оно не скомпилируется из-за ошибок, особо тяжело декомпилируются циклы и условия. Некоторые ошибки легко исправляются, но опять же разобраться во множестве условных переходов будет не просто, а когда их количество более ста или даже несколько тысяч, то такой способ восстановить приложение теряет эффективность, быстрее написать все заново.
На этом можно было и закончить эксперименты с декомпиляцией, но лень двигатель прогресса и родился новый способ.
Переопределение классов
Итак, jar это библиотека, так почему бы просто не подключить ее к новому проекту? Кидаем ее в папку libs, наследуемся от главной активити и компилируем. Все работает, главное чтоб не совпадали имена классов, поэтому названия пакетов должно отличаться иначе как минимум совпадут сгенерированные BuildConfig и R.
Таким способом можно отнаследоваться от Activity, Service, BroadcastReceiver и, возможно, некоторых других классов объявляемых в манифесте, так же в манифесте нужно будет указать новые имена классов, иначе они не будут использоваться.
Теперь можно переопределить виртуальные функции, но и только, тем более ключевое слово final не позволит это сделать и отнаследоваться тоже, поэтому идем дальше.
Замена классов
Разархивировав jar библиотеку получим class файлы, это скомпилированные классы, заметим, что при сборке проекта в папке bin/classes лежат те же class файлы, а что если подсунуть туда файлы из библиотеки…
Не все так просто, для начала нужно скомпилировать проект. Чтобы использовать классы исходного приложения нужно его как-то присоединить к проекту, но при этом не экспортировать. Делается это просто: из папки libs Эклипс сам экспортирует библиотеки, поэтому перемещаем jar библиотеку в папку lib и подключаем к проекту, в Эклипсе это Project->Preferences->Java Build Path->Libraries->Add Jars… далее во вкладке Order and Export нужно убедиться, что не установлен чекбокс, потому что экспортировать библиотеку нам не нужно, все будет в class файлах.
Теперь берем какой-нибудь класс из декомпилированных исходников приложения, исправляем в нем ошибки компиляции, добавляем, например, показ диалога, чтоб убедиться, что используется именно новый класс. Далее очищаем проект, в Эклипсе это Project->Clean, копируем class файлы в папку bin/classes, собираем проект и все работает!
При следующих сборках проекта нет необходимости его очищать, так что использовать такой способ достаточно удобно. Для облегчения исправления ошибок после декомпиляции я использовал исходники полученные из JD-GUI и JAD, обычно этого было достаточно.
Но вот пришло время собрать релизную версию, а для нее, конечно же, используется обфускатор и выдаст он сотни ошибок на совпадения имен классов и неразрешенные ссылки. Вот теперь пора убрать из скомпилированных class файлов классы, которые были заменены, после этого ошибок не должно быть. Еще одна неприятная особенность сборки релиза — нужно каждый раз очищать проект и копировать class файлы, а то они куда-то пропадают.
Заключение
Таким способом декомпилируются только модифицируемые файлы, что избавляет от исправления ошибок во всех исходниках и улучшает надежность, так как всего часть кода подвергнется процессу декомпиляции — исправления — компиляции.
С большой вероятностью не получится скрыть все следы от оригинального приложения, названия необфусцированных классов таких как Activity и Service, а так же названия их пакетов сохранятся и будут доступны после декомпиляции модифицированного приложения, но для пиратских версий это не проблема, из-за чего стоит защищать приложение, способы защиты аналогичны другим способам защиты от изменения кода.
Обновление классов в jar — идея замены классов пришла из этой возможности для jar библиотеки.
Источник
Декомпиляция и Компиляция APK приложения Андроид
вкл. 24 Сентябрь 2016 . Опубликовано в Android — Общее
Декомпиляция и Компиляция APK приложения Андроид. Для того чтобы редактировать APK приложения. Прежде всего их нужно декомпилировать, а после скомпилировать! Как это сделать и чем можно узнать в этом уроке.
В прошлом уроке вы узнали из чего состоят основные внутренности приложения, а также что данные что APK приложения (в дальнейшем просто APK) можно открыть архиватором, но что либо изменить у вас не получиться! Нужна Декомпиляция APK приложения Android!
Декомпиляция и Компиляция APK приложения Android — Необходимые компоненты
1. Java JDK — среда разработки;
2. ApkTool — программа декомпилятор;
4. Sign Android — подпись приложения APK
Установка необходимых компонентов. Настройка Java
После установки Java JDK , необходимо, добавить ее в переменную Windows . Если кто не понял официальное куроводство то,
Скопируйте путь Java JDK:
Перейдите в меню Дополнительные настройки
(Мой) Компьютер ->Свойства системы->Дополнительные параметры системы->Дополнительно->Системные переменные->Правка
Java JDK настроена.
Настройка ApkTool
- Создать папку на диске C:\ и в нее переместить файлы apktool_x_x.jar и apktool.bat
- Файл apktool_x_x.jar переименовать в apktool.jar
Если появилось наподобие такой вывод информации, то все сделано правильно.
Декомпиляция APK
Чтобы декомпилировать приложение, скопируйте файл APK приложения в папку где находится apktool, далее необходимо выполнить вот что, в командной строке ввести команду:
Декомпиляция APK завершена.
После того как вы отредактируете или русифицируете APK, его надо Компилировать
Компиляция APK
Вводим в командной строке:
После чего перейдите в папку проекта ( в данном случае папка browser) и вы увидете две новые папки:
- build
- dist
В папке dist будет находится готовое приложение:
Если папки dist не обнаружили, значит apktool не смог собрать редактируемый проект, причиной тому может быть то, что измения которые вы вносили(«поломали») не позволяют собрать приложение apk.
После компиляции приложения apk его необходимо подписать.
Подпись APK
1. Для этого Вам надо разархивировать архив Sign Android
2. Скопировать готовое приложение в папку с распакованным Sign Android
3. Потянуть приложение на файл Sign_APK.bat после чего приложение будет подписано
Готовое подписанное приложение будет носить название apk_signed.apk
Работа с системными APK
Для того чтобы модифицировать системные приложения необходимо прежде всего необходимо скормить программе APKTOOL системный файл framework -res.apk который находиться в системном разделе Android:
Для того чтобы скормить Apktool данный файл необходимо, ввести команду:
Учитывайте что, команду нужно вводить относительно пути расположения, то есть если файл framework -res.apk находиться в папке C:\primer, то команда будет выглядеть следующим обзором:
Также для того чтобы можно было модифицировать системные файлы прошивка должна быть вначале Deodex-ирована.
Теперь как это можно все упросить! (не использовать командную строку)
Скачайте приложение SmartApkTool, данное программа имеет графический интерфейс и очень легкая в использование.
Как пользоваться SmartApkTool
Прежде всего вам надо установить и настроить Java JDK и Apktool как указано выше.
Откройте программу SmartApkTool
Если Вам необходимо Декомпилировать приложение в SmartApkTool, то выберите данный пункт и необходимое приложение
Если компилировать, то
и выбрать файл в проекте apktool.yml
Для подписи приложения APK, нажать обзор, выбрать приложение и подписать
Все так легко и просто!
Альтернативный вариант
Для тех кому не понравился SmartApkTool, есть альтернатива Android MultiTool
Источник