Декомпиляция APK файла. Как легко декомпилировать APK файл
Я думаю, все знают, что Android приложения в большинстве своем написаны на языке программирования Java. Со времен выхода первой версии Android, перед разработчиками и энтузиазмами стояла задача — не только компилировать из Java файлов APK файл, для загрузки его в смартфон, но и выполнить обратное действие — декомпилировать APK файл Android приложения в набор Java файлов.
Зачем нужно декомпилировать APK файл в набор Java-файлов? Самый популярный ответ — посмотреть, как работает то или иное приложение. При декомпиляции приложения, если оно не было обфусцировано вы получите полный набор Java файлов с исходным кодом. Кроме того, декомпиляция Android приложений необходима для его русификации. Вы с легкостью можете перевести res файл на русский язык, а потом заново его упаковать в APK.
Но большинству людей нужна только декомпиляция приложений. Для этого вышло много различных инструментов: dex2jar, JavaDecompiler и другие. Все они требовали установленной Java-машины на компьютере, а также наличия установленного Android SDK. Для декомпиляции простого Android приложения, особенно, если вы делаете это в первый раз, потребовалось бы огромное количество действий, а также скачивания гигабайт данных.
Можно ли сделать декомпиляцию Android приложения проще? Я думаю да. С развитием облачных технологий, многие вещи делаются гораздо удобнее. Так, для декомпиляции Android приложения можно воспользоваться онлайн сервисом под названием Android APK Decompiler .
Использовать облачный онлайн сервис для декомпиляции APK файла очень просто. Вам достаточно загрузить файл и дождаться завершения операции. Обычно, декомпиляция приложения таким методом занимает не более пяти минут.
Конечно же, если вы хотите потом собрать приложение, то Вам придется воспользоваться полным набором утилит, которые придется устанавливать на компьютер.
Модификация исходного кода android-приложения с использованием apk-файла
Так уж получилось, что приложение для чтения комиксов и манги, которое я использую на своем android-смартфоне, после обновления стало показывать рекламу в конце каждой главы комикса. Данное приложение пару лет назад было доступно на Google Play (платная версия которого и была мной куплена), но было удалено в силу «нарушения авторских прав», после чего ушло в подполье и стало распространятся через сайт разработчика. Увы, достойных альтернатив этому приложению на android и iOS я не нашел, но и смотреть рекламу особо не было желания, тем более я уже покупал версию без рекламы. Сам разработчик почему-то не сделал возможности отключить ее, а на просьбы добавить такую возможность не отозвался. Поэтому пришлось искать альтернативные методы ее отключения. Первое, что пришло в голову, это то, что android-приложения пишутся на java, а значит есть вероятность, что автор не обфусцировал свое приложение и его можно попытаться декомпилировать. Немного подумав, я приступил к работе.
Для начала был загружен сам apk-файл приложения. Затем недолгий поиск по интернету привел меня на сайт http://www.decompileandroid.com/. С его помощью можно было загрузить apk-файл с приложением и на выходе получить набор исходников. Увы, декомпиляция в java-классы происходит не совсем идеально и поэтому восстановить полностью сам проект приложения в IDE(Idea) у меня не получилось, но это позволило проанализировать саму структуру проекта и разобраться как он примерно работает. После проведения анализа, было найдено два перспективных метода в классе BaseReaderFragment.java – placeAdViewIfNeeded и removeAdViewIfNeeded.
Код метода placeAdViewIfNeeded:
if (adViewPlaced || adView == null) < return; >else
Самое простое, что пришло на ум после чтения кода, это убрать все лишнее, и оставить лишь вызов return;
Но, как уже было сказано, даже если бы я изменил в java-классе что-либо, я бы не смог в итоге скомпилировать приложение в IDE. Поэтому пришлось искать альтернативу. Оказалось, что smali-файлы, которые создаются в процессе декомпиляции, позволяют также после внесения нужных изменений, вновь собрать модифицированное приложение. Увы, сайт, что был приведен выше, позволял лишь получать исходники, но не собирать новые. Поэтому пришлось искать способы сделать это самостоятельно.
Была найдена утилита ApkTools, которая позволяла декомпилировать и компилировать apk-файлы. Кроме того, потребовалась утилита aapt.exe, которая была взята мной из стандартного SDK под андроид в папке android-sdk\build-tools\20.0.0.
Для удобства вызова утилиты из под windows был создан скрипт apktool.bat:
@echo off set PATH=%CD%;%PATH%; java -jar "%~dp0\apktool.jar" %1 %2 %3 %4 %5 %6 %7 %8 %9
Для декомпиляции приложения были выполнены команды:
apktool if .apk apktool d .apk
После чего, в полученных исходниках был найден файл BaseReaderFragment.smali и нужные нам методы были изменены следующим образом:
.method protected placeAdViewIfNeeded(Landroid/view/ViewGroup;)V .locals 3 .param p1, "layoutAds" # Landroid/view/ViewGroup; .prologue const/4 v2, -0x2 return-void .end method .method protected removeAdViewIfNeeded(Landroid/view/ViewGroup;)V .locals 1 .param p1, "layoutAds" # Landroid/view/ViewGroup; .prologue .line 149 const/16 v0, 0x8 return-void .end method
Далее пришла очередь сборки apk-файла из исходников.
Сделать это можно cледующей командой:
apktool b
Но это еще не все. Чтобы приложение можно было установить, его нужно было подписать цифровой подписью. Самый простой способ сделать это – это скачать архив в котором находится утилита для подписи приложений и цифровые сертификаты к ней.
Распаковываем архив, выполняем команду:
java -jar signapk.jar certificate.pem key.pk8 .apk .apk
Полученный apk-файл можно загружать на телефон, чтобы проверить наше модифицированное приложение. Однако в процессе тестирования изменений оказалось, что объявления больше не показываются, однако сама страница для их показа создается, что не очень приятно. Снова был проанализирован код приложения, найден класс BaseSeamlessReaderFragment, а в нем метод appendPages.
В нем было видно, что строчка:
addPage(new MangaPage(i - 1, null, chapteritem, true), false);
создает дополнительную страницу, помимо тех, что есть в главе манги, с параметром, отвечающим за показ объявлений. Было решено удалить эту строчку и посмотреть результат. Снова заглядываем в аналогичный smali-файл(BaseSeamlessReaderFragment$4) и удаляем строчку:
invoke-virtual , Lorg/mangawatcher/android/fragments/BaseSeamlessReaderFragment;->addPage(Lorg/mangawatcher/android/fragments/BaseSeamlessReaderFragment$MangaPage;Z)V
Снова проводим сборку apk-файла из исходников и подписываем наше приложение. После установки и тестирования приложения экран с рекламой окончательно исчез, что и было конечной целью.
Данный пример показывает, что в случае необходимости можно довольно просто и быстро модифицировать уже существующие android-приложения, чтобы добавить в них недостающий функционал или наоборот удалить некоторые нежелательные возможности в тех ситуациях, когда доступа к исходникам нет. Надеюсь он поможет людям, которые попали в похожую ситуацию и не хотят мирится с ней, найти решение проблемы.
- android
- декомпиляция
- разработка под android
- reverse engineering
- Информационная безопасность
- Разработка под Android
9 инструментов для декомпиляции apk-файлов и реинжиниринга android-приложений
Android-приложения стали неотъемлемой частью современной мобильной экосистемы, и иногда разработчики и исследователи нуждаются в возможности изучить и изменить уже существующее приложение. Для этого существуют инструменты, которые позволяют декомпилировать apk-файлы и проводить реинжиниринг android-приложений.
Мы подготовили список из 9 лучших инструментов, которые помогут вам осуществить декомпиляцию apk-файлов и изучить структуру и код программы. Кроме того, эти инструменты могут быть полезными для анализа приложений конкурентов, отладки и тестирования собственных приложений, а также для обратного инжиниринга и извлечения ресурсов и другой информации из apk-файлов.
Наши рекомендации включают в себя как популярные инструменты, такие как Apktool и JADX, так и менее известные, но мощные инструменты, такие как Bytecode Viewer и Android Studio. Каждый инструмент имеет свои особенности и может быть полезен в определенных сценариях использования, поэтому мы рекомендуем вам ознакомиться с ними подробнее, чтобы найти наиболее подходящий для ваших потребностей.
Лучшие инструменты для декомпиляции apk-файлов и реинжиниринга Android-приложений
Декомпиляция apk-файла и реинжиниринг Android-приложений часто используются для анализа приложений, обратной разработки и уязвимостей, а также для изучения алгоритмов и кода.
Вот список лучших инструментов, которые помогут вам в декомпиляции apk-файлов и реинжиниринге Android-приложений:
- Apktool: Популярный инструмент с открытым исходным кодом для декомпиляции и сборки apk-файлов. Apktool также предоставляет доступ к ресурсам и исходному коду приложения.
- JD-GUI: Мощный инструмент для декомпиляции java-кода из скомпилированных файлов классов. JD-GUI позволяет просматривать и анализировать код приложений на Java.
- Android Studio: Официальная интегрированная среда разработки (IDE) для разработки Android-приложений. Android Studio предоставляет средства для декомпиляции, отладки и анализа приложений.
- ApkExtractor: Простой инструмент для извлечения apk-файлов из устройства Android. ApkExtractor позволяет получить скомпилированные файлы приложений для последующего анализа.
- Dex2Jar: Утилита, которая преобразует dex-файлы, используемые в Android-приложениях, в файлы jar. Dex2Jar помогает анализировать исходный код и классы, используемые в приложении.
- Enjarify: Инструмент для преобразования dex-файлов в java-файлы. Enjarify обеспечивает более читабельный код, который легче анализировать и изучать.
- Bytecode Viewer: Удобный инструмент для просмотра и анализа байт-кода Java-классов. Bytecode Viewer позволяет просматривать и изменять код приложений.
- JADX: Инструмент для декомпиляции apk-файлов в исходный код на Java. JADX может преобразовать dex-файлы в java-файлы, что облегчает изучение и анализ приложений.
- IDA Pro: Мощный дизассемблер и отладчик для различных архитектур процессоров, включая ARM. IDA Pro позволяет проводить обратную разработку и анализ алгоритмов приложений.
Это лишь некоторые из лучших инструментов для декомпиляции apk-файлов и реинжиниринга Android-приложений. Использование этих инструментов может помочь вам изучить и анализировать приложения, а также улучшить свои навыки разработки.
Почему важно декомпилировать apk-файлы и реинжинирить android-приложения
Декомпиляция apk-файлов и реинжиниринг android-приложений — это процессы, которые помогают разработчикам и исследователям вглядеться во внутреннее устройство приложений, понять их логику работы и выявить потенциальные проблемы или уязвимости. В современном мире, где мобильные приложения играют все более важную роль в повседневной жизни людей, декомпиляция apk-файлов и реинжиниринг android-приложений становится неотъемлемой частью разработки и безопасности.
Вот несколько причин, почему важно декомпилировать apk-файлы и реинжинирить android-приложения:
- Понимание внутренней логики приложений: Декомпиляция apk-файлов и реинжиниринг позволяют разработчикам исследовать и понять, как приложение работает внутри. Это позволяет им лучше понимать код и архитектурные принципы, на которых основано приложение, и сделать необходимые изменения или улучшения.
- Выявление и устранение проблем и ошибок: При декомпиляции apk-файла и реинжиниринге android-приложения можно обнаружить возможные проблемы в коде или ошибки, которые могут стать причиной падений или некорректной работы приложения. Разработчики могут устранить эти проблемы и улучшить стабильность и производительность приложения.
- Обеспечение безопасности приложений: Декомпиляция apk-файлов и реинжиниринг android-приложений также помогает выявлять потенциальные уязвимости или риски безопасности. Это может быть особенно важно в случае приложений, которые обрабатывают чувствительные пользовательские данные, такие как логины, пароли или финансовая информация. Разработчики могут исправить эти уязвимости и повысить уровень безопасности приложения.
- Исследование и модификация сторонних приложений: Декомпиляция apk-файлов и реинжиниринг android-приложений позволяют исследовать и анализировать сторонние приложения. Это может быть полезно для анализа конкурентов, поиска сведений об использованных технологиях или дизайне пользовательского интерфейса. Кроме того, декомпиляция apk-файлов позволяет модифицировать приложения, добавляя или изменяя функционал.
В итоге, декомпиляция apk-файлов и реинжиниринг android-приложений являются мощными инструментами для разработки, безопасности и исследования мобильных приложений на платформе Android. Они помогают разработчикам лучше понять и изменить код приложений, обнаруживать и исправлять проблемы, повышать безопасность и исследовать сторонние решения.
Топ-3 инструмента для декомпиляции apk-файлов и реинжиниринга android-приложений
Декомпиляция и реинжиниринг android-приложений может быть полезным процессом при разработке и тестировании приложений, а также при анализе безопасности. Существуют различные инструменты, которые позволяют проводить данную процедуру. В этом разделе мы рассмотрим топ-3 инструмента для декомпиляции apk-файлов и реинжиниринга android-приложений.
1. Apktool
Apktool является одним из самых популярных инструментов для декомпиляции и пересборки android-приложений. Он позволяет извлекать исходный код, ресурсы и другую информацию из apk-файлов. Apktool поддерживает множество форматов ресурсов, включая XML, DEX, JAR и т. д. Он также позволяет изменять и пересобирать приложения с измененным кодом и ресурсами.
Apktool предоставляет командную строку для работы с apk-файлами. Он поддерживает декомпиляцию, пересборку и подписывание apk-файлов. Apktool также предоставляет возможность анализировать исходный код приложения и исследовать его структуру, что делает его полезным инструментом для анализа безопасности.
2. JADX
Высокопроизводительный и простой в использовании инструмент для декомпиляции android-приложений. JADX предоставляет интерфейс пользователя, позволяющий изучать исходный код приложения, анализировать его структуру и искать потенциальные уязвимости. Интегрированный декомпилятор помогает извлекать исходный код из apk-файлов и предоставляет удобный способ просмотра классов и методов приложения. Высокая производительность и простота использования делают его отличным инструментом для анализа android-приложений.
3. JADX-GUI
JADX-GUI — это графический интерфейс для инструмента JADX. Он предоставляет удобный способ работы с JADX и позволяет визуально изучать исходный код приложений. При помощи данного инструмента можно ознакомиться с основными функциями, классами и структурой приложения. Удобный пользовательский интерфейс и интеграция с другими инструментами делают его привлекательным выбором для декомпиляции apk-файлов и анализа android-приложений.
Читайте также: 5 эффективных способов научить себя кодированию программного обеспечения
Заключение
Декомпиляция apk-файлов и реинжиниринг android-приложений являются важными процессами при разработке и тестировании приложений, а также при анализе исходного кода и безопасности. Топ-3 инструмента, которые были рассмотрены в этом разделе, предоставляют удобные и эффективные способы работы с apk-файлами и анализа android-приложений.
Выбор инструмента зависит от ваших потребностей и предпочтений. Apktool, JADX и JADX-GUI предоставляют различные функции и интерфейсы для работы с apk-файлами и исходным кодом приложений. Рекомендуется опробовать все три инструмента и выбрать тот, который наилучшим образом соответствует вашим потребностям.
Остальные 6 инструментов для декомпиляции apk-файлов и реинжиниринга android-приложений
В предыдущей статье мы рассмотрели три инструмента для декомпиляции apk-файлов и реинжиниринга android-приложений. Но существует еще несколько полезных инструментов, которые могут быть полезны разработчикам и исследователям в области Android.
- Apktool: Это инструмент на основе командной строки, который позволяет декомпилировать и собирать APK-файлы. Он позволяет просматривать и изменять ресурсы, код и манифест файлы приложения.
- Bytecode Viewer: Bytecode Viewer — это инструмент для просмотра и анализа байт-кода Java. Он позволяет просматривать и редактировать исходный код, читать и изменять классы, методы и переменные.
- Enjarify: Enjarify — это инструмент для преобразования Dalvik bytecode в Java bytecode. Это позволяет разработчикам анализировать и изменять Android-приложения на высоком уровне, облегчая понимание и декомпиляцию.
- Dex2jar: Dex2jar — это инструмент для преобразования Dalvik bytecode в Java bytecode. Он позволяет разработчикам анализировать и изменять APK-файлы, а также просматривать исходный код и ресурсы приложений.
- JD-GUI: JD-GUI — это графический интерфейс для Java-декомпилятора. Он позволяет просматривать исходный код классов Java, которые могут быть извлечены из APK-файлов.
- Procyon: Procyon — это еще один инструмент для декомпиляции Java-байт-кода. Он позволяет просматривать и изменять исходный код классов Java, включая классы, которые были получены из APK-файлов.
Эти шесть инструментов предоставляют мощные возможности для декомпиляции и анализа Android-приложений. Использование их в сочетании с предыдущими тремя инструментами может быть полезным при исследовании и разработке приложений для этой платформы.
FAQ:
Какие существуют инструменты для декомпиляции apk-файлов?
Существует множество инструментов для декомпиляции apk-файлов, некоторые из них включают в себя apktool, JADX, Androguard, Bytecode Viewer. Каждый из этих инструментов предлагает свои особенности и функциональность, позволяющую разбирать и анализировать android-приложения.
Какие возможности предоставляет apktool?
Apktool — это инструмент для декомпиляции и пересборки apk-файлов. Он позволяет извлекать исходный код, ресурсы и другие файлы из apk-файла, а также изменять их и перепаковывать обратно в apk. Apktool также предоставляет возможность декомпилировать smali-код в java-код и обратно.
Что такое jadx и какую функциональность он предлагает?
Jadx — это инструмент для декомпиляции java-кода из apk-файлов. Он предлагает возможность анализировать android-приложения и извлекать java-код из dex-файлов в apk. Jadx позволяет просматривать исходный код, просматривать классы и методы, а также исследовать ресурсы и манифест-файл приложений.
Какие функции предоставляет Androguard?
Androguard — это мощный инструмент для изучения и анализа android-приложений. Он позволяет декомпилировать apk-файлы, проводить статический анализ кода, обнаруживать риски безопасности, анализировать ресурсы, исследовать манифест-файлы и многое другое. Androguard предоставляет гибкий API для работы с apk-файлами и их компонентами.
В чем особенности Bytecode Viewer?
Bytecode Viewer — это инструмент для просмотра и анализа байт-кода java-классов. Он предоставляет возможность разбирать dex-файлы, просматривать и анализировать их структуру, отображать исходный код, а также исследовать ресурсы, манифест-файлы и другие компоненты android-приложений. Bytecode Viewer предоставляет удобную навигацию по коду и возможность поиска определенных элементов.
См. также:
- Устранение неисправности Galaxy S3, который не включается: Руководство по устранению неполадок
- 5 основных проблем онлайн-обучения и эффективные способы их решения
- Igi Origins: легендарная сага Project IGI продолжится в 2023 году
- Пошаговое руководство: Как добавить и удалить учетную запись Samsung на Galaxy S20
- 10 лучших многопользовательских андроид-игр для пар: веселые игры для совместного времяпрепровождения
- 5 удивительных фактов о паре, которые вас удивят
- 5 лучших приложений OCR для Android, позволяющих легко распознавать изображения и тексты
Как декомпилировать apk
есть ли возможность декомпилировать APK файл обратно в проект Unity со скриптами C#, настройками и прочим-прочим?
Доброго времени суток. Подскажите, пожалуйста, есть ли возможность декомпилировать APK файл обратно в проект Unity. Со скриптами C#, настройками и прочим-прочим.
Знаю, что много есть с декомпиляцией в форматы Java — вроде dex2jar.
Интересуют по большей части скрипты C# и их привязки, которые находятся в этом APK
Регистрация: 25.08.2021
Сообщений: 1
APK файлы нормально декомпилируются на https://www.decompiler.com/ напрямую в код минуя jar. Декомпиляция C# там тоже поддерживается, но не уверен насчет пложенных скриптов — попробуйте.
Участник клуба
Регистрация: 19.01.2009
Сообщений: 1,452
Можно, есть онлайн сервисы, выше вам скинули, а также есть и инструменты:
apktool
dex2jar
jd-gui
Незнаю, конечно как устроен компилятор под java в unity, может быть там все С# будут преписаны в код на яве, а может там какой то интерпритатор
Последний раз редактировалось uberchel; 27.08.2021 в 02:11 .