Есть ли способ получить исходный код из файла APK?

1262

Жесткий диск моего ноутбука только что вышел из строя, и я потерял весь исходный код приложения, над которым я работал последние два месяца. Все, что у меня есть, это файл APK, который хранится в моем письме, когда я отправил его другу.

Есть ли способ извлечь мой исходный код из этого файла APK?

Фрэнк Боццо
источник
28
FYI Существует онлайн проверка декомпилятор здесь
Edwin
11
Означает ли это, что мы можем получить исходный код приложений на миллион долларов, таких как Whatsapp или Facebook? Это все с открытым исходным кодом?
Файзан
3
@ Файзан, ты слышал о Proguard ??
Вишваджит Паланкар
1
Формулировка вопроса содержит не относящиеся к делу лакомые кусочки жизненной истории и как таковая может быть истолкована как рекомендуемый инструмент . Тем не менее, ответ мог бы быть таким javac -decompile, который бы соответствовал рекомендациям SO. Мне кажется, что ответы не по теме , а не вопрос.
SwiftArchitect
2
в этой статье они объясняют, как они реконструируют Pokemon Go
Андерс

Ответы:

1569

Простой способ: используйте онлайн-инструмент http://www.javadecompilers.com/apk , загрузите apk и получите исходный код.


Процедура декодирования .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(для терминала Mac или Ubuntu напишите ./d2j-dex2jar.sh 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. Откройте командное окно

  4. Теперь запустите команду как apktool if framework-res.apk(если у вас ее нет, получите ее здесь ) и затем

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

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

Шаг 4:

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

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

Prankul Garg
источник
26
@prankulgarg, В пункте 5 шага 3 я получаю следующую ошибку: Невозможно получить доступ к jarfile E: \ apktojava \ testt \\ apktool.jar
55
Вместо того чтобы писать dex2jar classes.dex в cmd, попробуйте d2j-dex2jar classes.dex . Потому что dex2jar classes.dex этот cmd устарел.
Umesh
23
Для тех, кто не может найти framework-res.apk. Загрузите его отсюда
atulkhatri
12
Те, кто не нашел d2j-dex2jar.sh, скачивают dex2jar отсюда: dex2jar.googlecode.com/files/dex2jar-0.0.9.15.zip
Reaz Murshed
14
Для людей, застрявших в шаге 2: 4, скачайте эту версию, и она решит проблему: sourceforge.net/projects/dex2jar/files/dex2jar-2.0.zip/download это сделал для меня. @delive
siriuseteor77
126

Это альтернативное описание - на случай, если кто-то застрянет с описанием выше. Следуйте шагам:

  1. скачать apktool.bat(или apktoolдля Linux) и apktool_<version>.jarс http://ibotpeaches.github.io/Apktool/install/
  2. переименуйте файл jar сверху apktool.jarи поместите оба файла в одну папку

  3. откройте окно DOS ( cmd.exe) и перейдите в эту папку; убедитесь, что установлена ​​среда Java (для Linux также проверьте примечания относительно необходимых библиотек)
  4. Начните: apktool decode [apk file]

    Промежуточный результат : файлы ресурсов,AndroidManifest.xml

  5. распакуйте APK файл с распаковщиком на ваш выбор

    Промежуточный результат :classes.dex

  6. загрузить и извлечь dex2jar-0.0.9.15.zipиз http://code.google.com/p/dex2jar/downloads/detail?name=dex2jar-0.0.9.15.zip&can=2&q=
  7. перетащите classes.dexна dex2jar.bat(или введите <path_to>\dex2jar.bat classes.dexв поле DOS; для Linux dex2jar.sh)

    Промежуточный результат :classes_dex2jar.jar

  8. распаковать classes_dex2jar.jar(может быть необязательным в зависимости от используемого декомпилятора)
  9. декомпилировать файлы классов (например, с помощью JD-GUI или DJ Decompiler )

    Результат : исходный код

Примечание: нельзя декомпилировать сторонние пакеты; это руководство предназначено для восстановления личного исходного кода только из файла APK; наконец, результирующий код, скорее всего, будет запутан

Trinimon
источник
6
Могу также добавить, что существует современная альтернатива этому маршруту APKTool-> dex2jar-> JD-GUI! Просто попробуйте open-source APK и DEX-декомпилятор под названием Jadx: sourceforge.net/projects/jadx/files. Он также имеет онлайн-версию здесь: javadecompilers.com/apk
Эндрю Рукин
2
Разрешено (читай: законно) декомпилировать любой файл APK. См. Следующий вопрос: stackoverflow.com/questions/9674557/…
Rakete1111,
1
Почему эти файлы apktoolвозвращаются smali? Как получить javaфайл?
Рминай
108

Хотя вы можете декомпилировать APKфайл, вы, вероятно, столкнетесь с одной большой проблемой:

он не вернет код, который вы написали. Вместо этого он будет возвращать все, что встроено компилятором, с переменными с произвольными именами, а с функциями с произвольными именами. Может потребоваться значительно больше времени, чтобы попытаться декомпилировать и восстановить его в код, который вы имели, чем это будет начинаться заново.

К сожалению, такие вещи убили много проектов.
В будущем, я настоятельно рекомендую изучение системы управления версиями, как CVS , SVN и Git и т.д.

и как это поддержать.

Райан Гулер
источник
19
Такой сервис, как Dropbox, также поможет.
Джереми Логан
1
и всегда есть способ записать компакт-диски
JerryGoyal
52

Также в Play Store есть новое приложение, с помощью которого можно декомпилировать apk (системные приложения тоже) и просматривать исходный код прямо на вашем смартфоне. Он сохраняет файлы на вашу SD-карту, чтобы вы могли просматривать их и на своем компьютере. Не требует рута или чего-то еще.

Просто установите и получайте удовольствие. Я думаю, что это самый простой способ декомпилировать приложение.

Cilenco
источник
1
Этот самый простой.
Мидхун Виджаякумар
@MidhunVijayakumar Не могли бы вы преобразовать apk в исходный код, используя это?
Саджив
28

apktool - лучшая вещь, которую вы можете попробовать. Я сохранил немного XML с ним, но, честно говоря, я не знаю, как это будет работать с кодом .java.

Я бы порекомендовал вам иметь хранилище кода, даже если вы единственный кодер. Я использую Project Locker для своих собственных проектов. Это дает вам бесплатные репозитории SVN и GIT.

Macarse
источник
Вы найдете apktool незаменимым, если вы хотите извлечь ресурсы (например, изображения из приложения Android. На самом деле, у инструмента нет конкурентов вообще!) Онлайн-версия apktool доступна здесь: www.javadecompilers.com/apktool
Эндрю Рукин
23

В этих двух статьях описывается, как объединить использование apktoolи dex2jarполучение APKфайла и создать проект Eclipse, который может его создать и запустить.

http://blog.inyourbits.com/2012/11/extending-existing-android-applications.html

http://blog.inyourbits.com/2012/12/extending-existing-android-applications.html

В основном вы:

  1. Используйте apktoolдля получения файлов ресурсов из apk
  2. Используйте dex2jarдля получения файла JAR, который содержит классы в формате, который понравится Eclipse.
  3. Создайте проект Eclipse, наведите его на файлы ресурсов и новый файл jar
  4. Откройте файл jar утилитой zip и удалите существующие ресурсы
  5. Откройте файл JAR с, JDGuiчтобы просмотреть исходный код
  6. Возьмите любой исходный код JDGui, вставьте его в класс внутри Eclipse и измените его
  7. Удалите этот класс из файла jar (чтобы один и тот же класс не определялся несколько раз)
  8. Запустить его.
Том Хеннен
источник
2
Я знаю , что этот вопрос ответил еще, я хотел бы передать информацию: есть онлайн декомпилятор для Android APK - decompileandroid.com Загрузить APK с локального компьютера, подождите несколько минут, скачать исходный код в почтовом формате.
Снехал Масне
2
Звучит хорошо. И тогда на сайте decompileandroid также есть копия всего вашего источника! Умная!
DDSports
Один вопрос, у меня есть apk декомпилированный, но в jd gui я не знаю, существуют ли реальные классы java, знаете ли вы, если apk декомпилирован, существуют ли реальные классы Java?
21

apktool будет работать. Вам даже не нужно знать хранилище ключей для извлечения исходного кода (что немного страшно). Основным недостатком является то, что источник представлен в формате Smali вместо Java. Другие файлы, такие как icon и main.xml, проходят отлично, хотя, возможно, стоит хотя бы восстановить их. В конечном счете вам, скорее всего, придется переписывать код Java с нуля.

Вы можете найти apktool здесь . Просто скачайте apktool и соответствующий помощник (для Windows, Linux или Mac OS). Я рекомендую использовать такой инструмент, как 7-zip, чтобы распаковать их.

Райан Бергер
источник
16

Есть несколько способов сделать это:

  1. Используйте функцию «Профиль или Отладка APK» в Android Studio 3.0.

    Это позволяет открывать и изучать APK в Android Studio. Классы декомпилированы в smali. Ресурсы не извлекаются, и такие вещи, как «Перейти к определению», «Найти все ссылки» и отладка, не работают без исходного кода (android studio 3.0 canary 9). Некоторые дополнительные функции smali могут работать с smallidea .

    Android-студия

    выберите файл

    код

  2. Используйте JADX .

    Jadx декомпилирует код в данном APK в исходные файлы Java.

    jdax-IMG

  3. Используйте apktool .

    Apktool - это инструмент командной строки, который извлекает ресурсы и декомпилирует код в smali для данного apk. Вы также можете перекомпилировать, используя apktool. Вот пример этого в действии:

    $ apktool d test.apk
    I: Using Apktool 2.2.4 on test.apk
    I: Loading resource table...
    I: Decoding AndroidManifest.xml with resources...
    I: Loading resource table from file: 1.apk
    I: Regular manifest package...
    I: Decoding file-resources...
    I: Decoding values */* XMLs...
    I: Baksmaling classes.dex...
    I: Copying assets and libs...
    I: Copying unknown files...
    I: Copying original files...
    $ apktool b test
    I: Using Apktool 2.2.4 on test
    I: Checking whether sources has changed...
    I: Smaling smali folder into classes.dex...
    I: Checking whether resources has changed...
    I: Building resources...
    I: Building apk file...
    I: Copying unknown files/dir...
0xcaff
источник
Я пробовал jadx, но даже с простым helloworld, хотя он декомпилирует его в java, но попытка открыть проект в android studio и скомпилировать его обратно в apk не удалась по многим причинам (файлы дублирования и т. Д.). Есть ли метод, который создает Java, который может быть скомпилирован обратно в apk?
17
1
@ransh Я обычно использую jadx для чтения кода, а затем apktool для его модификации. apktool не создает Java, но позволяет перекомпилировать.
0xcaff
0xcaff, спасибо за разъяснения. это имеет смысл сейчас. Becuase, пытаясь скомпилировать Java в Android Studio, не работал.
Рен
16

Может быть, легко увидеть источник:

В Android студии 2.3 Build -> Analyze APK -> Select the apk that you want to decompile.
Вы увидите его исходный код.

Ссылка для справки:
https://medium.com/google-developers/making-the-most-of-the-apk-analyzer-c066cb871ea2

SKK
источник
9
Он перечисляет классы и методы, но не дает исходный код.
WSS
Вы можете получить вышеуказанные файлы, только изменив «.apk» на «.zip»
М. Усман Хан
7

Я покажу вам другой способ декомпиляции файлов .apk .

Вы можете выполнить первые 2 шага из « Пранкуль Гарг ». Так что у вас есть другие возможности:

Шаг 3':

Скачайте "JD-GUI" , это легко найти. Откройте файл .jar в "jd-gui.exe". (Файл> Открыть файл> «нашел ваш .jar файл»). После этой процедуры вы можете сохранить все ресурсы в файле .zip .

Так,

1-й - Вы должны переименовать файл .apk в .zip

2-й - Вы должны декодировать файл .dex (если хотите, декодируйте файл .apk в dex2jar , это возможно)

3-й - Вы должны декодировать файл .jar с помощью JD-GUI.

Франклин Хирата
источник
20
Что дает этот ответ, а другие нет?
Jørgen R
Вам не нужно переименовывать его в zip. Я мог открыть файл apk напрямую с помощью 7-zip.
miva2
7

Ниже онлайн- инструмент:

http://www.javadecompilers.com/apk

он делает ВСЕ одним кликом: декомпилированные файлы .java + ресурсы + xml (в одном файле .zip) с очень хорошим декомпилятором (jadx возвращает код Java в тех местах / функциях, где другие компиляторы возвращают комментарии внутри функции, например «невозможно декомпилировать» или некоторые другие). ассемблер андроид / машинный код)

Камил Келчевски
источник
да, это здорово, но вместо имен функций он изменил имена всех функций на CS1001 и так далее. Так как это распознать. и еще кое-что: можем ли мы использовать этот декомпилированный apk напрямую в качестве студийного проекта Android, будет ли он работать?
Зия Ур Рахман
затем с какой целью мы используем для декомпиляции некоторые из них apk, если мы не можем использовать их функциональность в наших приложениях.
Зия Ур Рахман
@ZiaUrRahman Я не знаю. Однако я в моем случае декомпилирую код для анализа алгоритма. Вы проверяете, может ли декомпилированный код из этого инструмента быть скомпилирован android studio полностью автоматически - или вам нужна некоторая «человеческая обработка»?
Камиль Келчевски
1
Я импортировал декомпилированный проект в android studio, но там не было градаля, и у проекта много файлов, но я не понял, пока мы его не запустим. Просто это не сработало. Мне нужно сделать декомпилированный проект полностью функциональным в Android Studio, а затем получить некоторые основные функциональные возможности, а затем использовать / встраивать его в свой собственный проект. Так есть ли способ, как это сделать?
Зия Ур Рахман
6

Этот сайт https://www.apkdecompilers.com/ сделал это автоматически.

Сначала я попробовал сайт, упомянутый в принятом ответе, но у меня это не получилось.

М. Усман Хан
источник
я не могу восстановить свой исходный код Java ... кажется, что-то вроде прикрепленного файла и ...
Иман Каземайни
@imankazemayni в ссылке выше, «перейдите» к вашему файлу APK и нажмите «Декомпилировать ваш APK». Это займет некоторое время, а затем должно дать вам исходный код, если код не зашифрован.
М. Усман Хан
Знаете ли вы, мультидекс влияет на шифрование?
Иман Каземайни
6

Я лично рекомендую показать Java Android App, чтобы получить исходный код. Вы можете скачать его из игрового магазина или отсюда

Codelover
источник
В основном онлайн-компиляторы не работают, но это приложение работает. Спасибо
Сунил
4

Apktool для реверс-инжиниринга сторонних, закрытых, бинарных приложений для Android.

Он может декодировать ресурсы почти до первоначальной формы и восстанавливать их после внесения некоторых изменений.

Это позволяет пошагово отлаживать код smali. Также это облегчает работу с приложением из-за файловой структуры проекта и автоматизации некоторых повторяющихся задач, таких как сборка apk и т. Д.

http://ibotpeaches.github.io/Apktool/

Бисваджит Кармакар
источник
3

apktool это путь. Онлайн сервис apktool также существует: http://www.javadecompilers.com/apktool

Очевидно, что существуют некоторые ограничения из-за службы «онлайн-характера»: вы можете извлекать и исследовать ресурсы и файл манифеста, но в настоящий момент невозможно перекомпилировать приложение.

Тем не менее, это простой способ «открыть» приложение для Android.

Андрей Рукин
источник
3

Вы можете попробовать DexPatcher . Он даже интегрируется с Android Studio. Он использует Apktool и Dex2Jar внутри.
Вы можете использовать эти инструменты независимо друг от друга. Apktool декомпилирует apk и извлекает файлы .dex, которые затем можно конвертировать в jar с помощью Dex2Jar. Jar можно декомпилировать с помощью JD-GUI . Вы можете увидеть код Java с помощью этого инструмента. Хотя сходство декомпилированного кода с реальным кодом не может быть гарантировано. На рынке есть несколько продвинутых инструментов обфускации кода , которые портят код, затрудняя его декомпиляцию / понимание. например. Proguard

Лакшмикант Дешпанде
источник
Здравствуйте. Как использовать DexPatcher с Android Studio?
ravi152
Не могу объяснить все в комментариях. Google - твой друг :) Есть также несколько хороших учебных пособий по YouTube.
Лакшмикант Дешпанде
2

в зависимости от вашего состояния, если ваш Android APK:

Условие 1: НЕ затвердевать (от Tencent Legu / Qihoo 360 / ...)

Выбор1: с помощью онлайн-сервиса

такие как:

используя www.javadecompilers.com

перейти к:

автоматически декодировать из АПК в исходный код Java

шаги:

uploadapk file + click Run+ подождите некоторое время + click Downloadчтобы получить zip + unzip ->

sources/com/{yourCompanyName}/{yourProjectName}

ваш ожидаемый исходный код Java

Choice2: декомпилировать / взломать самостоятельно

Используйте соответствующий инструмент для декомпиляции / взлома самостоятельно:

использовать jadx/ jadx-guiконвертировать apkвjava sourcecode

скачайте jadx-0.9.0.zip, затем распакуйте в файлbin/jadx , затем:

  • режим командной строки:
    • в терминальном прогоне: jadx-0.9.0/bin/jadx -o output_folder /path_to_your_apk/your_apk_file.apk
    • output_folder покажет расшифрованный sourcesиresources
      • sources/com/{yourCompanyName}/{yourProjectName} ваше ожидание java sourcecode
  • Режим графического интерфейса
    • двойной щелчок для запуска jadx-0.9.0/bin/jadx-gui(Linux jadx-gui.sh/ Windows jadx-gui.bat)
    • открыть apkфайл
    • это будет автоматическое декодирование -> увидеть ожидаемый исходный код Java
    • save all или save as Gradle project

например:

Условие 2: закалка (Tencent Legu / Qihoo 360 / ...)

основной метод 3 steps:

  1. apk/app to dex
  2. dex to jar
  3. jar to java src

детальное объяснение:

Шаг 1: apk/app to dex

использовать инструмент ( FDex2/ DumpDex) для выгрузки / извлечения (одного или нескольких) dexфайлов из запущенного приложения

шаги:

подготовить среду

  • rootред андроида
  • установить ваш Android APK
    • на телефон или эмулятор
  • Установленный Xposed Installer
  • установить FDex2/ DumpDex в XPposed и включить его
  • установить ваш Android APK на телефон / эмулятор

выгрузить dexиз запущенного приложения

  • запустите, FDex2затем нажмите на свое имя apk, чтобы позже включить / захватить dex

  • (в телефоне / эмуляторе) запустите ваше приложение
  • найти и скопировать весь ресурс apk в /data/data/com/yourCompanyName/yourProjectName
    • в своей корневой папке обычно найдет несколько dexфайлов

Шаг 2: dex to jar

использовать инструмент ( dex2jar) конвертировать (определенный, содержащий логику приложения) dexфайл в jarфайл

скачать dex2jar получил dex-tools-2.1-SNAPSHOT.zip , распаковать получил dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh, затем

sh dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh -f your_dex_name.dex

например:

dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh -f com.xxx.yyy8825612.dex
dex2jar com.xxx.yyy8825612.dex -> ./com.xxx.yyy8825612-dex2jar.jar

Шаг 3: jar to java src

используйте один из инструментов:

преобразовать jarвjava src

для преобразования из jar в java src:

Jadx> Procyon> CRF>>JD-GUI

поэтому рекомендуем использовать: Jadx/jadx-gui

шаги:

  • двойной щелчок для запуска jadx-gui
  • открыть dexфайл
  • File -> save all

например:

экспортированный источник Java:


Более подробное объяснение можно посмотреть в моей онлайн-книге китайского учебника:

crifan
источник
2

Студия Android предлагает вам проанализировать любой файл apk.

1 - В меню сборки выберите параметр анализировать apk и выберите файл apk. 2 - В результате вы получите файл classes.dex и другие файлы. 3 - Нажмите на classes.dex, который предоставит вам список папок, пакетов, библиотек и файлов. 4 - Из настроек android studio установите плагин под названием «Dex to Jar» 5 - нажмите на любой файл активности вашего извлеченного проекта и выберите dex to jar в меню сборки.

Это приведет к фактическому коду вашего Java-файла.

Приветствия.

Рохит Патил
источник
1

Самым простым способом является использование Apk OneClick Decompiler. Это пакет инструментов для декомпиляции и дизассемблирования APK (пакетов Android).

ФУНКЦИИ

  • Все функции интегрированы в контекстное меню Windows.
  • Декомпилируйте классы APK в исходные коды Java.
  • Разберите APK, чтобы смали код и расшифруйте его ресурсы.
  • Установите APK на телефон, щелкнув правой кнопкой мыши.
  • Перекомпилируйте APK после редактирования кода и / или ресурсов. Во время перекомпиляции:
  • Оптимизировать PNG изображения
  • Войти apks
  • Zipalign

ТРЕБОВАНИЯ

Java Runtime Environment (JRE) должна быть установлена.

Вы можете скачать его по этой ссылке Apk OneClick Decompiler

Наслаждайся этим.

Масуд Мохтари
источник
1

Я нашел следующее как самый простой метод:

  1. Переименуйте ваш app.apk в app.zip (измените расширение с apk на zip)
  2. Распакуйте zip-файл в папку
  3. Используйте инструмент JADX для чтения исходного кода, представленного в файле classes.dex.
Масуд Анвар
источник
1

Для этого есть приложение, которое обычно занимает всего несколько кликов, и все готово. https://github.com/Nuvolect/DeepDive-Android

  1. Выберите Приложения, в разделе «Установленные приложения» выберите свое приложение. Если его там нет, вы можете загрузить APK.
  2. Выберите «Извлечь APK»
  3. Выберите «Распаковать APK»
  4. Выберите «Декомпилировать с помощью Jadx». Это может занять несколько секунд или несколько минут в зависимости от скорости вашего устройства

После этого вы можете просмотреть исходный код, загрузить его на другой компьютер с elFinder или выполнить поиск по нему с помощью Lucene.

В дополнение к Jadx есть декомпиляторы CFR и Fernflower.

MobileMateo
источник
0

Я несколько дней сводил себя с ума, пытаясь заставить dex2jar работать на ноутбуке fedora 31 против apk, который просто не собирался работать. Этот скрипт на Python 3 справился с задачей за несколько минут, а установка jd-gui сделала файлы классов удобочитаемыми.

http://java-decompiler.github.io/

https://github.com/Storyyeller/enjarify

конкретно вот что я побежал:

# i installed apktool before the rest of the stuff, may not need it but here it is
$> cd /opt
$> sudo mkdir apktool
$> cd apktool/
$> sudo wget https://raw.githubusercontent.com/iBotPeaches/Apktool/master/scripts/linux/apktool
$> sudo wget https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_2.4.1.jar
$> sudo mv apktool_2.4.1.jar apktool.jar
$> sudo mv apktool* /usr/bin/
$> sudo chmod a+x /usr/bin/apktool*

# and enjarify
$> cd /opt
$> sudo git clone https://github.com/Storyyeller/enjarify.git
$> cd enjarify/
$> sudo ln -s /opt/enjarify/enjarify.sh /usr/bin/enjarify

# and finally jd-gui
$> cd /opt
$> sudo git clone https://github.com/java-decompiler/jd-gui.git
$> cd jd-gui/
$> sudo ./gradlew build

# I made an alias to kick of the jd-gui with short commandline rather than long java -jar blahblahblah :)
$> echo "jd-gui='java -jar /opt/jd-gui/build/launch4j/lib/jd-gui-1.6.6.jar'" >> ~/.bashrc

Теперь нужно получить следующее, чтобы получить файлы классов:

$> enjarify yourapkfile.apk

И для запуска jd-gui:

$> jd-gui

Тогда просто откройте ваши файлы классов!

Р.Дж. Коул
источник
0

Я разработал Инструмент - Code Analyzer, он работает на iPhone / iPad / Mac, для анализа файлов Java / Android, https://decompile.io

введите описание изображения здесь

введите описание изображения здесь

Цин Сюй
источник
0

Используйте этот инструмент http://www.javadecompilers.com/

Но недавно на рынке появилась новая волна декомпиляторов: Procyon, CFR, JD, Fernflower, Krakatau, Candle.

Вот список декомпиляторов, представленных на этом сайте:

CFR - бесплатно, исходный код недоступен, http://www.benf.org/other/cfr/ Автор: Ли Бенфилд

Очень хорошо обновленный декомпилятор! CFR способен декомпилировать современные функции Java - модули Java 9, лямбды Java 8, строковые коммутаторы Java 7 и т. Д. Он даже сможет превратить файлы классов из других языков JVM обратно в Java!

JD - бесплатно только для некоммерческого использования, http://jd.benow.ca/ Автор: Эммануэль Дюпуй

Обновлено в 2015 году. Имеет собственный визуальный интерфейс и плагины для Eclipse и IntelliJ. Написано на C ++, поэтому очень быстро. Поддерживает Java 5.

Procyon - с открытым исходным кодом, https://bitbucket.org/mstrobel/procyon/wiki/Java%20Decompiler Автор: Майк Штробель

Fernflower - с открытым исходным кодом, https://github.com/fesh0r/fernflower Автор: Егор Ушаков

Обновлено в 2015 году. Очень перспективный аналитический декомпилятор Java, теперь становится неотъемлемой частью IntelliJ 14. ( https://github.com/JetBrains/intellij-community/tree/master/plugins/java-decompiler ) Поддерживает Java до версии 6 (Аннотации, дженерики, перечисления)

JAD - дано здесь только по историческим причинам. Бесплатно, исходный код недоступен, jad загрузить зеркало Автор: Павел Кузнецов

Факсриддин Абдуллаев
источник