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, и вы должны увидеть что-то вроде следующего:
Посмотрите, как легко было получить исходный код собственного APK-файла Android? Что вы можете сделать, чтобы лучше защитить себя?
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.
person
Hossam Hassan
schedule
10.09.2020
javac -decompile
, что тогда соответствовало бы руководящим принципам SO. Мне кажется, что ответы не по теме, а не вопрос. - person SwiftArchitect   schedule 12.02.2016