1. Извлечение исходного кода из собственного приложения Android
Исходный код собственного Android-приложения получить несложно, но для этого требуются дополнительные инструменты, совместимые с Windows, Mac и Linux. Когда дело доходит до инструментов, мне больше всего нравятся dex2jar и JD-GUI.
Если вы не знакомы с этими инструментами, dex2jar прочитает исполняемые файлы Dalvik и преобразует их в стандартный формат JAR. JD-GUI будет читать файлы JAR и декомпилировать файлы классов, найденные в них.
Чтобы упростить понимание процесса извлечения, давайте начнем с создания нового собственного проекта Android:
android create project --target 19 --name TestProject --path . --activity TestProjectActivity --package com.nraboy.testproject
Приведенная выше команда оставит вам проект Android в текущем пути командной строки.
Поскольку в наш проект уже включен класс Activity, давайте сразу перейдем к процессу сборки. Вы можете целый день беспокоиться об использовании Ant вместо Gradle или Maven, но в этом уроке я буду придерживаться этого.
ant debug
Приведенная выше команда создаст отладочную сборку, обычно находящуюся по адресу bin / TestProject-debug.apk .
Используя свой любимый инструмент для распаковки, извлеките файл APK. 7-zip - популярный инструмент, но если у вас Mac, вы можете просто запустить следующее из Терминала:
unzip TestProject-debug.apk
В результате у нас останется куча файлов и папок, но одна из них важна для нас. Обратите внимание на classes.dex, потому что он содержит весь наш исходный код. Чтобы преобразовать его во что-то читаемое, нам нужно запустить на нем dex2jar. Вы можете использовать dex2jar на Mac, Linux и Windows, но я собираюсь объяснить это с точки зрения Mac.
С файлом classes.dex в извлеченном каталоге dex2jar запустите из Терминала следующее:
./dex2jar.sh classes.dex
Откройте приложение JD-GUI, которое вы загрузили, потому что теперь пора декодировать JAR и файлы упакованных классов. Откройте только что созданный файл classes_dex2jar.jar , и вы должны увидеть что-то вроде следующего:
Посмотрите, как легко было добраться до исходного кода вашего собственного Android APK? Что вы можете сделать, чтобы лучше защитить себя?
Android SDK поставляется с Proguard, который представляет собой модуль обфускации. Что такое обфускация, спросите вы?
Обфускация через Википедию:
затемнение (или затемнение) - это сокрытие предполагаемого значения в
общение, делая общение запутанным, умышленно двусмысленным,
и труднее интерпретировать.
Хотя обфускация не зашифрует ваш исходный код, ее будет сложнее понять. С настроенным Proguard запустите Ant в режиме выпуска, и ваш код должен быть запутан при сборке.
2. Извлечение исходного кода из гибридного приложения Android
Исходный код гибридных приложений, безусловно, легче всего извлечь. Вам не нужно устанавливать дополнительное программное обеспечение на компьютер, просто откройте файл APK.
Чтобы упростить понимание, давайте сначала создадим новый проект Apache Cordova, а затем извлечем его. Начните со следующего:
cordova create TestProject com.example.testproject TestProject
cd TestProject
cordova platform add android
В процессе создания проекта вы останетесь с шаблонами Apache Cordova CSS, HTML и JavaScript по умолчанию. В этом примере для нас это нормально. Давайте продолжим и скомпилируем наш проект в распределенный файл APK:
cordova build android
У вас останется platform / android / ant-build / CordovaApp-debug.apk или что-то вроде платформ / android / ant-build / * - debug.apk .
Несмотря на то, что это отладочная сборка, ее все еще можно использовать. Если установлен 7-zip или аналогичный, щелкните правой кнопкой мыши файл APK и выберите его извлечение или разархивирование. В извлеченном каталоге у вас теперь должен быть доступ ко всем вашим исходным файлам в Интернете. Я говорю «на базе Интернета», потому что любые файлы Java, используемые Apache Cordova, будут скомпилированы в файлы классов. Однако файлы CSS, HTML и JavaScript не обрабатываются.
Вы только что увидели, насколько удручающе легко получить исходный код гибридного приложения. Итак, что вы можете сделать, чтобы лучше защитить себя?
Вы можете скрыть свой код, что является формой обфускации.
Это не приведет к шифрованию вашего кода, но сделает его гораздо более трудным для понимания.
Если вы хотите уточнить свой код, я рекомендую вам установить UglifyJS, так как на данный момент это в значительной степени стандарт. Если вы предпочитаете использовать средство выполнения задач, в Grunt и Gulp есть модули для UglifyJS.
FYI Здесь есть онлайн-проверка декомпилятора
coderhelper.com/questions/12259460/decompling-an-android-apk
приложение для извлечения apk play.google.com/store/apps/details?id=com.ext.ui&hl=en
Означает ли это, что мы можем получить исходный код приложений стоимостью в миллион долларов, таких как Whatsapp или Facebook? Это все с открытым исходным кодом?
@Faizan ты слышал о Proguard ??
@SwiftArchitect - он не удален, он все еще здесь для справки. В чем проблема с его закрытием?
Формулировка вопроса действительно содержит нерелевантные лакомые кусочки жизненных историй и, как таковые, может быть истолкована как рекомендовать инструмент . Однако ответ потенциально мог быть
javac -decompile
, что тогда соответствовало бы рекомендациям SO. Мне кажется, что ответы не по теме , а не вопрос.Попробуйте онлайн-декомпиляторы .. для получения дополнительной информации - coderhelper.com/a/27981520/3879847
в этой статье они объясняют, как они реконструируют Pokemon Go
Возможный дубликат Можно ли декомпилировать файл Android .apk?
имейте в виду, что использование онлайн-декомпиляторов может быть скомпрометировано.