How to extract code of .apk file which is not working? [duplicate]
Как извлечь код из файла .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
Примечание: Все следующие инструкции применимы универсально (иначе говоря, ко всем операционным системам), если не указано иное.
Измените расширение .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 документацию и аргументы.
Откройте командную строку (или терминал) и измените свой текущий каталог на папку, созданную в предыдущем пункте, и введите команду d2j-dex2jar.bat classes.dex и нажмите enter. Это сгенерирует classes-dex2jar.jar файл в той же папке.
Пользователям macOS / Linux: Замените d2j-dex2jar.bat на d2j-dex2jar.sh. Другими словами, запустите d2j-jar2dex.sh classes.dex в терминале и нажмите enter.
Из окна 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 веб-сайте с инструкциями по установке и не только
Измените ваш текущий каталог на 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 и т.д.
Если ваш apk загружен из market и, следовательно, подписан, установите Astro File Manager из market. Откройте Astro> Инструменты> Диспетчер приложений / Резервное копирование и выберите приложение для резервного копирования на SD-карту. Подключите телефон как USB-накопитель и получите доступ к папке "backupsapps", чтобы найти apk целевого приложения (назовем его app.apk). Скопируйте его на свой локальный диск, то же самое относится и к неподписанному .apk.