Как извлечь код из файла .apk, который не работает?
На самом деле я пытался извлечь код из файла .apk под названием cloudfilz.apk и хотел манипулировать его исходным кодом, поэтому я выполнил шаги, приведенные ниже:-
создайте новую папку и поместите файл .apk (который вы хотите декодировать), теперь переименуйте этот файл .apk с расширением .zip (например: переименуйте из filename.apk в filename.apk.zip) и сохраните его .. теперь вы получаете файлы classes.dex etc...at на этом этапе вы можете видеть drawable, но не XML и java file...so продолжить...
Шаг 2:
теперь извлеките этот zip-файл apk в ту же папку (в данном случае, например, в НОВУЮ ПАПКУ). теперь скачайте dex2jar по этой ссылке http://code.google.com/p/dex2jar/ и распакуйте его в ту же папку (в данном случае в НОВУЮ ПАПКУ) ..... теперь откройте командную строку и перейдите в эту папку (в данном случае в НОВУЮ ПАПКУ) .... после достижения напишите "dex2jar classes.dex" и нажмите enter ..... теперь вы получите файл classes.dex.dex2jar в той же папке......
=> Вопрос: -Мне удалось выполнить шаг 1, но на шаге 2, когда я выполняю dex2jar classes.dex, я получаю сообщение об ошибке в командной строке java.lang.UnsupportedClassVersionError
, я знаю, что это из-за несовместимости между моей установленной версией JDK и classes.dex Номер версии JDK, поэтому застрял здесь и не вижу выхода...
Переведено автоматически
Ответ 1
Примечание: Все следующие инструкции применимы универсально (иначе говоря, ко всем операционным системам), если не указано иное.
Предварительные запросы
Вам понадобится:
- Рабочая установка Java
- Работающий терминал / командная строка
- Компьютер
- Файл APK
Шаги
Шаг 1: Изменение расширения файла APK
Измените расширение
.apk
файла, либо добавив.zip
расширение к имени файла, либо изменив.apk
на.zip
.Например,
com.example.apk
становитсяcom.example.zip
илиcom.example.apk.zip
. Обратите внимание, что в Windows и macOS вам может быть предложено, уверены ли вы, что хотите изменить расширение файла. Нажмите OK или Add, если вы используете macOS:
Шаг 2: Извлечение Java-файлов из APK
Извлеките переименованный файл APK в определенную папку. Например, пусть эта папка будет
demofolder
.Если это не сработало, попробуйте открыть файл в другом приложении, таком как WinZip или 7-Zip.
Для macOS вы можете попробовать запустить
unzip
в терминале (доступен по адресу/Applications/Terminal.app
), где он принимает один или несколько аргументов: файл для распаковки + необязательные аргументы. Смотритеman unzip
документацию и аргументы.
Загрузите
dex2jar
(смотрите все выпуски на GitHub) и распакуйте этот zip-файл в ту же папку, как указано в предыдущем пункте.Откройте командную строку (или терминал) и измените свой текущий каталог на папку, созданную в предыдущем пункте, и введите команду
d2j-dex2jar.bat classes.dex
и нажмите enter. Это сгенерируетclasses-dex2jar.jar
файл в той же папке.- Пользователям macOS / Linux: Замените
d2j-dex2jar.bat
наd2j-dex2jar.sh
. Другими словами, запуститеd2j-jar2dex.sh classes.dex
в терминале и нажмите enter.
- Пользователям macOS / Linux: Замените
Скачайте Java-декомпилятор (смотрите все выпуски на Github), извлеките его и запустите (он же двойной щелчок) исполняемый файл / приложение.
Из окна JD-GUI либо перетащите сгенерированный
classes-dex2jar.jar
файл в него, либо перейдите наFile > Open File...
и найдите jar.Далее в меню перейдите к
File > Save All Sources
(Windows: Ctrl+Alt+S, macOS: ⌘+⌥+S). Должно открыться диалоговое окно с вопросом, куда сохранить zip-файл с именем `classes-dex2jar.jar.src.zip", состоящий из всех пакетов и файлов java. (Вы можете переименовать zip-файл для сохранения)Извлеките этот zip-файл (
classes-dex2jar.jar.src.zip
), и вы должны получить все java-файлы приложения.
Шаг 3: Получение xml
файлов из APK
- Для получения дополнительной информации смотрите на
apktool
веб-сайте с инструкциями по установке и не только Windows:
- Загрузите скрипт-оболочку (необязательно) и jar apktool (обязательно) и поместите их в ту же папку (например,
myxmlfolder
). - Измените ваш текущий каталог на
myxmlfolder
папку и переименуйте файл apktool jar вapktool.jar
. - Поместите
.apk
файл в ту же папку (т.е.myxmlfolder
). Откройте командную строку (или терминал) и измените свой текущий каталог на папку, в которой
apktool
хранится (в данном случае,myxmlfolder
). Затем введите командуapktool if framework-res.apk
.Что мы здесь делаем, так это устанавливаем фреймворк. Дополнительную информацию смотрите в документах.
- Приведенная выше команда должна привести к появлению "Фреймворк установлен ..."
В командной строке введите команду
apktool d filename.apk
(гдеfilename
- имя файла apk). Это должно расшифровать файл. Дополнительную информацию смотрите в документах.Это должно привести к тому, что
filename.out
будет выведена папка, гдеfilename
это исходное имя файла apk без.apk
расширения файла. В этой папке находятся все XML-файлы, такие как layout, drawables и т.д.
- Загрузите скрипт-оболочку (необязательно) и jar apktool (обязательно) и поместите их в ту же папку (например,
Ответ 2
Любой файл .apk из market или неподписанный
Если ваш apk загружен из market и, следовательно, подписан, установите Astro File Manager из market. Откройте Astro> Инструменты> Диспетчер приложений / Резервное копирование и выберите приложение для резервного копирования на SD-карту. Подключите телефон как USB-накопитель и получите доступ к папке "backupsapps", чтобы найти apk целевого приложения (назовем его app.apk). Скопируйте его на свой локальный диск, то же самое относится и к неподписанному .apk.
Скачайте Dex2Jar zip по этой ссылке: SourceForge
Распакуйте загруженный zip-файл.
Откройте командную строку и напишите следующую команду при переходе в каталог, где находится dex2jar exe, а также скопируйте apk в тот же каталог.
dex2jar targetapp.apk file
(./dex2jar app.apk на терминале)http://jd.benow.ca / скачайте декомпилятор по этой ссылке.
Откройте ‘targetapp.apk.dex2jar.jar’ с помощью файла jd-gui> Сохраните все исходники, чтобы сохранить файлы классов в jar в файлы java.
Ответ 3
шаг 1:
Загрузите dex2jar здесь. Создайте java-проект и вставьте файлы jar (dex2jar-0.0.7.11-SNAPSHOT / lib).
Скопируйте файл apk в java project
Запустите его, и после обновления проекта вы получите файл jar.Используя java decompiler, вы можете просмотреть все файлы классов Java
шаг 2: Скачайте java-декомпилятор здесь
Ответ 4
Нажмите здесь это хорошее руководство как для windows, так и для ubuntu.
apktool1.5.1.jar скачать отсюда.
apktool-install-linux-r05-ibot скачать можно отсюда.
dex2jar-0.0.9.15.zip скачать отсюда.
jd-gui-0.3.3.linux.i686.tar.gz (java-де-комплайнер) скачать отсюда.
framework-res.apk (находится на вашем устройстве Android / system / framework /)
Процедура:
- Переименуйте файл .apk и измените расширение на .zip ,
он станет .zip.
Затем извлеките файл .zip.
Разархивируйте загруженный файл dex2jar-0.0.9.15.zip скопируйте содержимое и вставьте его в папку unzip.
Откройте терминал и измените каталог, чтобы распаковать “dex2jar-0.0.9.15 “
– cd - sh dex2jar.sh classes.dex (результат выполнения этой команды “classes.dex.dex2jar.jar” будет в вашей самой извлеченной папке).
Теперь создайте новую папку и скопируйте в нее “classes.dex.dex2jar.jar”.
Разархивируйте “jd-gui-0.3.3.linux.i686.zip“ и откройте “Java Decompiler” в полноэкранном режиме.
Click on open file and select “classes.dex.dex2jar.jar” into the window.
“Java Decompiler” and go to file > save and save the source in a .zip file.
Create “source_code” folder.
Extract the saved .zip and copy the contents to “source_code” folder.
This will be where we keep your source code.
Extract apktool1.5.1.tar.bz2 , you get apktool.jar
Now, unzip “apktool-install-linux-r05-ibot.zip”
Copy “framework-res.apk” , “.apk” and apktool.jar
Paste it to the unzip “apktool-install-linux-r05-ibot” folder (line no 13).
Then open terminal and type:
– 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 if framework-res.apk
– apktool d .apk