Обратный инжиниринг из файла APK в проект


244

Я случайно удалил свой проект из Eclipse , и все, что у меня осталось, это файл APK, который я перенес на свой телефон. Есть ли способ отменить процесс экспорта приложения в файл .apk, чтобы я мог вернуть свой проект обратно?



2
Вы знаете, что затмение имеет собственную историю версий?
эйс


4
если вы пишете что-то важное для вас, вы должны использовать VCS. Bitbucket имеет бесплатные частные репозитории.
lxknvlk

Ответы:


287

Есть два полезных инструмента, которые будут генерировать код Java (грубый, но достаточно хороший) из неизвестного файла APK.

  1. Загрузите инструмент dex2jar из dex2jar .
  2. Используйте инструмент, чтобы конвертировать файл APK в JAR :

    $ d2j-dex2jar.bat demo.apk
    dex2jar demo.apk -> ./demo-dex2jar.jar
  3. Как только файл JAR сгенерирован, используйте JD-GUI, чтобы открыть файл JAR. Вы увидите файлы Java.

Вывод будет похож на:

JD GUI


6
как получить файлы ресурсов
srini

26
cmd устарела, используйте d2j-dex2jarвместо этого (v0.0.9.15).
Фредрик Гаусс

1
@sri просто переименуйте файл apk в zip и распакуйте его, у вас будут файлы ресурсов в resпапке
Hoang Huynh

8
@HoangHuynh у вас будет resпапка с нечитаемыми файлами XML
S.Thiongane

6
В Macслучае вы не можете использовать dex2jar: permission deniedто это сделать $sudo chmod +x d2j-dex2jar.sh
min2

81

Прежде всего, я рекомендую thisвидео, это может очистить все ваши сомнения

Если нет, пожалуйста, пройдите

Procedure for decoding .apk files, step-by-step method:

Step 1:

Создайте новую папку и поместите в нее файл .apk (который вы хотите декодировать). Теперь переименуйте расширение этого .apkфайла в .zip(например: переименуйте из filename.apk в filename.zip) и сохраните его.

Если проблемы при конвертации в .zip обращайтесь link

После получения .zip теперь вы получаете файлы classes.dex и т. Д. На этом этапе вы можете видеть нарисованные, но не файлы XML и Java, поэтому продолжайте. Если вы не видите расширения, проверьте конфигурацию

Step 2:

Теперь распакуйте этот ZIP-файл в той же папке. Теперь загрузите dex2jar из этогоlink

и распакуйте его в ту же папку. Теперь откройте командную строку и перейдите в эту папку.

Затем написать dex2jar classes.dex и нажмите Enter. Теперь вы получаете classes.dex.dex2jarфайл в той же папке.

Тогда скачай Java-декомпилятор

А теперь дважды щелкните по jd-gui и щелкните по открытому файлу. Тогда откройclasses.dex.dex2jar файл из этой папки. Теперь вы получаете файлы классов и сохраняете все эти файлы классов (нажмите на файл, затем нажмите «сохранить все источники» в jd-gui) по имени src. Распакуйте этот zip-файл, (classes_dex2jar.src.zip)и вы получите все java-файлы приложения.

На этом этапе вы получаете исходный код Java, но XML-файлы по-прежнему не читаются, поэтому продолжайте.

Step 3:

Теперь откройте еще одну новую папку и поместите эти файлы

  1. положить файл .apk, который вы хотите декодировать

  2. скачать Apktool для windows v1.xАApktool

установить окно с помощью Google и положить в ту же папку

  1. скачайте файл framework-res.apk с помощью Google и поместите в одну папку (не всем apk-файлу нужен файл framework-res.apk)

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

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

Выше команда должна привести к Framework installed ... .

  1. apktool d "appName" .apk ("appName" обозначает приложение, которое вы хотите декодировать), теперь вы получаете папку с файлами в этой папке, и теперь вы также можете легко читать XML-файлы.

Step 4: Наконец, мы получили res/Java-код проекта, который является нашей целью при запуске.

P.S. Если вы не можете получить папку res с помощью описанных выше шагов, пожалуйста, установите новую apktool

  • Java 1.7 установлена? Установите Apktool 2.x
  • Java 1.6 или выше установлена? Установите Apktool 1.x

Enjoy and happy coding


действительно полезно. Просто то, что вы не упомянули: apktool.jarэто не тот же пакет, я взял его из предыдущего пакета и вставил в тот же каталог, что и apktool.
Тионгане

1
я изменил код инженера, но почему имя класса, переменные похожи на aa, bc и т. д., а также много ошибок
user2934930

1
не в состоянии сделать это в cmd
Meghal Agrawal

любой другой способ сделать это?
Мегхал Агравал

2
@ user2934930 Это означает, что код был запутан с помощью ProGuard.
Каскад

58

Нет программного обеспечения и не слишком много шагов ..

Просто загрузите свой APK и получите все ресурсы с этого сайта.

https://www.apkdecompilers.com/

Этот веб-сайт декомпилирует код, встроенный в APK-файлы, и извлекает все остальные ресурсы из файла.

примечание: я декомпилирую свой файл APK и получаю код в течение одной минуты с этого сайта

Обновление 1 :

Я нашел другой сайт онлайн-декомпилятора,

http://www.javadecompilers.com/apk/ - Не работает постоянно с просьбой о блокировке всплывающих окон

Обновление 2:

Я нашел приложение apk decompiler в магазине игр,

https://play.google.com/store/apps/details?id=com.njlabs.showjava

Мы можем декомпилировать файлы apk в нашем телефоне Android. а также мы можем просматривать файлы Java и XML в этом приложении

Обновление 3:

Мы можем использовать другую опцию Анализировать функцию APK из версии Android Studio 2.2

Build -> Analyze APK -> выберите свой APK -> это даст результаты

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


3
в последнем методе мы не можем открыть класс Java, только показывает имена методов
Choletski

@ Choletski, вы пробуете ShowJava? если не попробуй и
Ранджит Кумар

@RanjithKumar ограничен размером 50 МБ APK. У меня 85 МБ APK для декомпиляции.
Рави Шарма


1
Как запустить этот декомпилированный проект в андроид студии? Может кто-нибудь, пожалуйста, напишите об этом.
Mayur Kukadiya


4

На самом деле, нет. Существует несколько наборов dex дизассемблер / декомпилятор, таких как smali или dex2jar, которые будут генерировать получеловеческий вывод (в случае dex2jar вы можете получить код Java с помощью чего-то вроде JD-GUI, но процесс не идеально, и очень маловероятно, что вы сможете на 100% воссоздать свой исходный код, однако это может дать вам место для начала перестройки исходного дерева.


@MAC: ему нужен источник, а не файл APK!
Шашанк Кадне

2
@ShashankKadne может быть, я не получаю мои слова обратно
MAC

3

Да, вы можете вернуть свой проект. Просто переименуйте yourproject.apkфайл в yourproject.zip, и вы получите все файлы внутри этого ZIP-файла. Мы меняем расширение файла с .apk на .zip. Из этого ZIP-файла извлеките classes.dexфайл и декомпилируйте его следующим образом.

Во-первых, вам нужен инструмент для извлечения всех (скомпилированных) классов из DEX в JAR. Один из них называется dex2jar и сделан китайским студентом.

Затем вы можете использовать JD-GUI для декомпиляции классов в JAR до исходного кода. Полученный исходный код должен быть достаточно читабельным, поскольку dex2jar применяет некоторые оптимизации.


3

Для платформы Android вы можете попробовать ShowJava , доступный в магазине Play.

Вы можете просмотреть сгенерированный код через интерфейс приложения, а сгенерированные файлы java и структура папок хранятся в ShowJavaпапке /sdcardвместе с.jar файлом из преобразования.

Приложение бесплатно с рекламным баннером в нижней части основного экрана, но есть возможность покупки в приложении (3,99 $), чтобы удалить его. Покупка из приложения не добавляет никаких функций, кроме удаления рекламного баннера.

Раскрытие информации: я не являюсь разработчиком приложения и никак не связан с ним.


Я обычно использую это для ... Хорошее приложение
Рахул Кушваха

2

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

  • конвертировать файл apk в zip
  • распаковать файл
  • извлечь из него classes.dex
  • используйте dex to jar для конвертирования classes.dex в файл jar
  • используйте JADX GUI, чтобы открыть файл JAR в качестве исходного кода Java

2

Если вы ищете профессиональную альтернативу, взгляните на JEB Decompiler от PNF Software.

Существует демо-версия, которая позволит вам декомпилировать большую часть кода.


2

Ниже приведены некоторые инструменты, которые вы можете использовать для выполнения обратного инжиниринга из файла APK в исходный код:

  1. Dex2jar
  2. Java декомпилятор
  3. Apktool
  4. Apk Analyzer

2

В Android Studio 3.5 так легко, что вы можете достичь этого за минуту. ниже пошаговый процесс.

1: Откройте Android Studio, нажмите кнопку окна -> Тип Android Studio -> щелкните значок, чтобы открыть заставку Android Studio, которая будет выглядеть следующим образом.

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

2: Здесь вы можете увидеть опцию «Профиль или отладка APK», нажмите на нее, выберите файл apk и нажмите ОК.

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

3: Он откроет все ваши классы манифеста и Java в течение минуты в зависимости от размера apk.

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

Вот и все.


Это решение не дает мне никакого типа файла Java
Kishan Verma

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.