Как извлечь код из файла .apk, который не работает?

На самом деле я пытался извлечь код файла .apk с именем cloudfilz.apk и хотел изменить его исходный код, поэтому я выполнил шаги, указанные ниже: -

создайте новую папку и поместите файл .apk (который вы хотите декодировать), теперь переименуйте этот файл .apk с расширением .zip (например: переименуйте из filename.apk в filename.apk.zip) и сохраните его .. теперь вы получаете классы .dex файлы и т.д ... на этом этапе вы можете видеть доступные для рисования, но не файлы XML и java ... так что продолжайте ...

Шаг 2:

теперь извлеките этот zip-файл apk в ту же папку (в этом случае, например, НОВАЯ ПАПКА). теперь загрузите dex2jar по этой ссылке http://code.google.com/p/dex2jar/ и извлеките его в ту же папку (в данном случае НОВАЯ ПАПКА) ..... теперь откройте командную строку и перейдите в эту папку (в данном случае НОВАЯ ПАПКА) .... после достижения напишите dex2jar classes.dex и нажмите ввод ..... теперь вы получаете файл classes.dex.dex2jar в той же папке ......

= ›Вопрос: -Мне удалось выполнить шаг 1, но на шаге 2, когда я выполняю dex2jar classes.dex, я получаю сообщение об ошибке в командной строке java.lang.UnsupportedClassVersionError, я знаю, что это связано с несовместимостью между моей установленной версией JDK и classes.dex JDK номер версии так вот застрял и выхода нет ...


person Gaurav Chawla    schedule 25.10.2011    source источник
comment
Если бы автор этого приложения хотел, чтобы вы видели исходный код, он / она опубликовал бы его как открытый исходный код. Я предполагаю, что это не открытый исходный код, и вы не имеете права пытаться его извлечь.   -  person NickT    schedule 25.10.2011
comment
@NickT Иногда вы хотите знать, почему определенное приложение на вашем новом телефоне Android (CMAS) имеет НАМНОГО больше прав, чем должно. --------------------------------- «Я твердо верю в людей. Если говорить правду, на них можно положиться в случае любого национального кризиса. Самое главное - донести до них реальные факты и пиво ». - Абрахам Линкольн ---------------------------------   -  person Michael Blankenship    schedule 31.07.2015
comment
technikes.com/find-a-source-code-from-apk -file два новых шага для ответа на ваш вопрос   -  person saksham agarwal    schedule 31.10.2016


Ответы (4)


Примечание. Все следующие инструкции применимы повсеместно (также как и ко всем ОС), если не указано иное.


Prerequsites

Тебе понадобится:

  • Рабочая установка Java
  • Рабочий терминал / командная строка
  • Компьютер
  • APK-файл

Шаги

Шаг 1. Изменение расширения файла APK

  1. Измените расширение файла .apk, добавив расширение .zip к имени файла или изменив .apk на .zip.

    Например, com.example.apk становится com.example.zip или com.example.apk.zip. Обратите внимание, что в Windows и macOS он может спросить вас, действительно ли вы хотите изменить расширение файла. Нажмите OK или Добавить, если вы используете macOS:

диалоговое окно подтверждения добавления расширения в macOS

Шаг 2. Извлечение файлов Java из APK

  1. Извлеките переименованный файл APK в определенную папку. Например, пусть эта папка будет demofolder.

    • Если это не помогло, попробуйте открыть файл в другом приложении, например WinZip или 7-Zip.

    • Для macOS вы можете попробовать запустить unzip в Терминале (доступно по адресу /Applications/Terminal.app), где он принимает один или несколько аргументов: файл для распаковки + необязательные аргументы. См. man unzip для документации и аргументов.

  2. Загрузите dex2jar (см. все выпуски на GitHub) и извлеките этот zip-файл в ту же папку, как указано в предыдущем пункте.

  3. Откройте командную строку (или терминал) и измените текущий каталог на папку, созданную в предыдущем пункте, введите команду d2j-dex2jar.bat classes.dex и нажмите ввод. Это создаст classes-dex2jar.jar файл в той же папке.

    • macOS/Linux users: Replace d2j-dex2jar.bat with d2j-dex2jar.sh. In other words, run d2j-jar2dex.sh classes.dex in the terminal and press enter.
  4. Загрузите декомпилятор Java (см. все выпуски на Github), извлеките его и запустите (также известный как двойной щелчок) исполняемый файл / приложение.

  5. Из окна JD-GUI либо перетащите в него сгенерированный файл classes-dex2jar.jar, либо перейдите в File > Open File... и найдите jar.

  6. Затем в меню перейдите к File > Save All Sources (Windows: Ctrl + Alt + S, macOS: + + S). Это должно открыть диалоговое окно с вопросом, где сохранить zip-файл с именем `classes-dex2jar.jar.src.zip", состоящий из всех пакетов и java-файлов. (Вы можете переименовать zip-файл для сохранения)

  7. Распакуйте этот zip-файл (classes-dex2jar.jar.src.zip), и вы должны получить все java-файлы приложения.

Шаг 3. Получение xml файлов из APK

  • Дополнительные сведения см. На apktool веб-сайте, где приведены инструкции по установке и многое другое.
  • Windows:

    1. Download the wrapper script (optional) and the apktool jar (required) and place it in the same folder (for example, myxmlfolder).
    2. Измените текущий каталог на папку myxmlfolder и переименуйте файл jar apktool в apktool.jar.
    3. Поместите файл .apk в ту же папку (например, myxmlfolder).
    4. Откройте командную строку (или терминал) и измените текущий каталог на папку, в которой хранится apktool (в данном случае myxmlfolder). Затем введите команду apktool if framework-res.apk.

      Здесь мы устанавливаем фреймворк. Дополнительную информацию см. В документации.

    5. Вышеупомянутая команда должна привести к "Framework установлен ..."
    6. В командной строке введите команду apktool d filename.apk (где filename - имя файла apk). Это должно расшифровать файл. Дополнительную информацию см. В документации.

      Это должно привести к выводу папки filename.out, где filename - исходное имя файла apk без .apk расширения файла. В этой папке находятся все файлы XML, такие как макет, чертежи и т. Д.

Источник: Как получить исходный код из файла APK - Comptech Blogspot

person Kiran    schedule 21.11.2012
comment
это сработало для меня для создания файлов xml. - person Senthil; 01.05.2013
comment
Лучшая ссылка на JD-GUI: jd.benow.ca - person Daniel Dut; 03.02.2015
comment
Теперь откройте командную строку и перейдите в папку, созданную на предыдущем шаге, введите команду dex2jar classes.dex и нажмите клавишу ВВОД. Это создаст файл classes.dex.dex2jar в той же папке. В ссылке на github нет файла bat - person raklos; 02.09.2016
comment
Пользователи Ubuntu: переместите файлы apktool и apktool.jar в папку / usr / local / bin. Откройте путь к терминалу, указывающий на тип расположения папки apk apktool d ‹your-app-name.apk› - person KH_AJU; 13.11.2017
comment
Я обновил инструкции, так как некоторые URL-адреса были повреждены. - person Edric; 14.03.2018
comment
На шаге 3 вы помещаете d2j-jar2dex.bat classes.dex, я думаю, это означает d2j-dex2jar.bat classes.dex Dex ›Jar - person viion; 14.08.2018
comment
@DutA. Похоже, это просто указывает на java-decompiler.github.io сейчас, возможно, его следует снова переместить ? (Срок действия старого домена может истечь) - person Fund Monica's Lawsuit; 06.03.2019

Любой .apk файл с маркета или неподписанный

  1. Если у вас apk загружен с маркета и, следовательно, подписан, установите Astro File Manager с маркета. Откройте Astro ›Инструменты› Диспетчер приложений / Резервное копирование и выберите приложение для резервного копирования на SD-карту. Подключите телефон как USB-накопитель и войдите в папку «backupsapps», чтобы найти apk целевого приложения (назовем его app.apk). Скопируйте его на свой локальный диск, как и в случае с неподписанным .apk.

  2. Загрузите zip-архив Dex2Jar по этой ссылке: SourceForge

  3. Разархивируйте загруженный zip-файл.

  4. Откройте командную строку и напишите следующую команду при достижении каталога, в котором находится dex2jar exe, а также скопируйте apk в тот же каталог.

    _1 _ (./ dex2jar app.apk на терминале)

  5. http://jd.benow.ca/ загрузите декомпилятор по этой ссылке.

  6. Откройте файл targetapp.apk.dex2jar.jar с помощью jd-gui. ›Сохраните все исходники, чтобы сохранить файлы классов из jar в файлы java.

person Gaurav Chawla    schedule 07.08.2012
comment
я попробую это, .......... - person shridutt kothari; 17.02.2018

шаг 1:

введите описание изображения здесьЗагрузите dex2jar здесь. Создайте проект java и вставьте (dex2jar-0.0.7.11-SNAPSHOT / lib) файлы jar.

Скопируйте apk-файл в java-проект

Запустите его, и после обновления проекта вы получите файл jar. С помощью декомпилятора java вы можете просмотреть все файлы классов java.

шаг 2. Загрузите декомпилятор java здесь

person Ramesh Akula    schedule 25.10.2011
comment
Спасибо, Sony за ответ, но я не могу получить файл jar, поэтому, пожалуйста, вы можете подробно объяснить ... На снимке экрана показано, что ваши jar файлы dex2jar lib находятся в другом месте, но его следует сохранить внутри проекта java, насколько это возможно ... пожалуйста проясни мою двусмысленность .. - person Gaurav Chawla; 25.10.2011
comment
просто копируете jar-файлы dext2jar lib в java-проект, а не в папку src - person Ramesh Akula; 26.10.2011
comment
Я поместил файл apk в src. & Что такое главный класс? это com.googlecode.dex2jar.dump.Dump? - person Piraba; 19.04.2012
comment
такая же процедура для пользователей Linux ??? - person Snehal Poyrekar; 18.09.2012

Щелкните здесь, это хорошее руководство для окон и ubuntu.

  1. apktool1.5.1.jar загрузить с здесь.

  2. apktool-install-linux-r05-ibot загрузите с здесь.

  3. dex2jar-0.0.9.15.zip загрузите с здесь.

  4. jd-gui-0.3.3.linux.i686.tar.gz (java de-complier) скачать с здесь.

  5. framework-res.apk (находится на вашем устройстве Android / system / framework /)

Процедура:

  1. Переименуйте файл .apk и измените расширение на .zip,

он станет .zip.

  1. Затем распакуйте .zip.

  2. Разархивируйте загруженный файл dex2jar-0.0.9.15.zip, скопируйте его содержимое и вставьте его в распакованную папку.

  3. Откройте терминал и смените каталог, чтобы распаковать «dex2jar-0.0.9.15»

- cd - sh dex2jar.sh classes.dex (результат этой команды «classes.dex.dex2jar.jar» будет в самой извлеченной папке).

  1. Теперь создайте новую папку и скопируйте в нее «classes.dex.dex2jar.jar».

  2. Разархивируйте «jd-gui-0.3.3.linux.i686.zip» и откройте «Декомпилятор Java» в полноэкранном режиме.

  3. Щелкните открыть файл и выберите в окне «classes.dex.dex2jar.jar».

  4. «Java Decompiler» и перейдите к файлу> сохранить и сохраните исходный код в файле .zip.

  5. Создайте папку «source_code».

  6. Распакуйте сохраненный .zip и скопируйте его содержимое в папку «source_code».

  7. Здесь мы храним ваш исходный код.

  8. Извлеките apktool1.5.1.tar.bz2, вы получите apktool.jar

  9. Теперь распакуйте «apktool-install-linux-r05-ibot.zip».

  10. Скопируйте framework-res.apk, .apk и apktool.jar.

  11. Вставьте его в распакованную папку «apktool-install-linux-r05-ibot» (строка № 13).

  12. Затем откройте терминал и введите:

    – cd

    - chown -R: ‘apktool.jar’

    - chown -R: ‘apktool’

    - chown -R: ‘aapt’

    - sudo chmod + x ‘apktool.jar’

    - sudo chmod + x ‘apktool’

    - sudo chmod + x ‘aapt’

    - sudo mv apktool.jar / usr / local / bin

    - sudo mv apktool / usr / local / bin

    - sudo mv aapt / usr / local / bin

    - apktool если framework-res.apk - apktool d .apk

person Saurabh Chandra Patel    schedule 26.03.2015