Получить исходный код из файла .apk? [закрыто]

21

Имея файл .apk, есть ли способ получить его исходный код?

eldarerathis
источник
7
До этого проверяли ли вы пакет с открытым исходным кодом?
ot--
.Apk - это просто файл .zip. Но, к сожалению, любая сборка приложения для «релиза», вероятно, будет защищена ProGuard .
Даниэль Лопес
@MatthewRead Оператор спрашивает, может ли он получить код от API, и я ответил, как называется это явление и способы, по крайней мере, предотвратить создание подобного приложения. Он не говорит, как предотвратить получение кода. Так что да, он отвечает на вопрос.
Человек

Ответы:

15

Даже если ProGuard был использован, вы все равно можете получить некоторые интересные идеи. Вот вопрос StackOverflow с подробным объяснением: Android: получение исходного кода из файла APK . YouTube видео с подробным руководством . И запись в блоге об этом: Как получить исходный код из файла Android APK .

Николай Самтеладзе
источник
11

Если вам повезло, и ваш .apkфайл не был защищен Proguard или аналогом, вы можете использовать инструмент APK . Это инструмент для обратного проектирования сторонних, закрытых, бинарных приложений для Android.

HitOdessit
источник
Apktool генерирует только Smali-код, а не Java-код - это большая разница.
Роберт
2

Из одной вики сообщества Parnkul Garg в SO :


Процедура декодирования .apk файлов, пошаговый метод:

Шаг 1:

  1. Создайте новую папку и скопируйте файл .apk, который вы хотите декодировать.

  2. Теперь переименуйте расширение этого файла .apk в .zip (например, переименуйте из filename.apk в filename.zip) и сохраните его. Теперь вы можете получить доступ к файлам classes.dex и т. Д. На этом этапе вы можете видеть графические объекты, но не файлы XML и Java, поэтому продолжайте.

Шаг 2:

  1. Теперь распакуйте этот файл .zip в ту же папку (или NEW FOLDER).

  2. Скачайте dex2jar и распакуйте его в ту же папку (или в NEW FOLDER).

  3. Переместите файл classes.dex в папку dex2jar.

  4. Теперь откройте командную строку и измените каталог на эту папку (или NEW FOLDER). Затем напишите d2j-dex2jar classes.dexи нажмите Enter. Теперь у вас есть файл classes.dex.dex2jar в той же папке.

  5. Загрузите декомпилятор java , дважды щелкните jd-gui, щелкните открытый файл и откройте файл classes.dex.dex2jar из этой папки: теперь вы получаете файлы классов.

  6. Сохраните все эти файлы классов (в jd-gui выберите Файл -> Сохранить все источники) под именем src. На этом этапе вы получаете исходный код Java, но файлы .xml по-прежнему не читаются, поэтому продолжайте.

Шаг 3:

Теперь откройте еще одну новую папку

  1. Поместите в файл .apk, который вы хотите декодировать

  2. Загрузите последнюю версию apktool и окно установки apktool (обе можно скачать по одной и той же ссылке) и поместите их в одну папку

  3. Скачайте framework-res.apk и поместите его в одну папку (этот файл нужен не всем файлам apk, но это не помешает)

  4. Откройте командное окно

  5. Перейдите в корневой каталог APKtool и введите следующую команду: apktool if framework-res.apk

  6. apktool d myApp.apk (где myApp.apk обозначает имя файла, который вы хотите декодировать)

теперь вы получаете папку с файлами в этой папке и можете легко читать xml-файлы apk.

Шаг 4:

Это не какой-либо шаг, просто скопируйте содержимое обеих папок (в данном случае обе новые папки) в одну

и наслаждайтесь исходным кодом ...

user3226511
источник