Порой при разработке не понимаешь как реализовать определенную функцию, которую видел в чужом приложении, или просто изучить стороннее приложение охота, для этого существует декомпиляция приложений.
В данной статье я покажу как декомпилировать Андроид приложения из *.apk файла в исходный код.
Итак, нам потребуется:
dex2jar
Java Decompiler
ApkTool
Все приложения являются бесплатными, мультиплатформенными и открытыми (кроме Java Decompiler, у него закрыт исходный код).
Их можно скачать с официального сайта.
Инструкцию буду проводить для ОС Windows.
1) Качаем dex2jar-0.0.7.10-SNAPSHOT.zip (номер версии может изменяться) и извлекаем все файлы в желаемую папку, например D:\Decompile .
2) Качаем Java Decompiler, я использовал JD-GUI и извлекаем для удобства в ту же папку, куда и dex2jar.
3) Качаем apktool1.4.1.tar.bz2 и apktool-install-windows-r04-brut1.tar.bz2 и извлекаем уже в системную папку. По умолчанию C:\Windows.
4) Берем нужный apk файл и кладем в папку с dex2jar и Java Decompiler. В примере приведу декомпиляцию приложения Калькулятор из стандартной поставки Android. (надо извлечь из архива).
5) Открываем Командную строку (Обработчик команд Windows) в вышеупомянутой папке. (например открыв apk файл с помощью C:\Windows\System32\cmd.exe).
6) Вводим команду dex2jar Calculator.apk и если все прошло хорошо, в той же папке появится файл Calculator.apk.dex2jar.jar
7) Запускаем jd-gui и открываем полученный на предыдущем шаге файл.
Выбираем пункт меню File-Save All Sources и сохраняем.
9) Извлекаем полученный zip архив.
10) Помещаем полученную папку в папку src (надо предварительно создать). (Что бы получилась примерно такая структура D:\Decompile\Calculator\src\com\android)
11) Опять же в командной строке вводим команду apktool d Calculator.apk Calculator, где Calculator.apk-имя пакета, Calculator-папка для декомпиляции
12) Если все хорошо, тогда в указанной папке будут исходники в двух форматах (java и smali), ресурсы и файлы AndroidManifest.xml, apktool.yml
13) Все готово, исходники получены. Правда после декомпиляции в коде есть, можно сказать, ошибки, я заметил пока только что вместо true и false стоят 1 и 0 соответственно.
P.S. Если хочется импортировать полученный код в IDE Eclipse (File-Import), тогда положите содержимое этого архива в папку с проектом, предварительно изменив на третьей строке PROJECT NAME, PROJECT NAME на желаемое название, в моем примере «Calculator» в файле .project
P.P.S. Если apk файл был пропущен при компиляции через обфускатор (proguard), тогда полученный код будет плохо читаем.
Автор статьи — BOOM.
Android apktool is a tool for processing APK files. It can decompile APK to generate source code and image, XML configuration, language resource and other files. You can also add new functions to APK file. Using this tool to localize Android software and then repackage it is quite simple.
1, install
1). First install JAVA environment, first download JDK/JRE, already have JAVA environment can skip this step
2). Download apktool.jar and related files to code.google:
http://code.google.com/p/android-apktool/downloads/list
Click to download apktool1.4.3.tar.bz2 and apktool-install-windows-r04-brut1.tar.bz2
3). Unzip apktool-install-windows-r04-brut1.tar.bz2 to any folder, then unzip apktool1.4.3.tar.bz2 and copy apktool.jar to apktool- Install-windows-r04-brut1.tar.bz2 under the folder where the solution is located, there are three applications of aapt.exe, apktool.bat and apktool.jar.
4). Click the Start menu, run, enter CMD Enter, use the cd command to go to the D:\My Documents\Desktop\apktool-install-windows-r04-brut1 where you just unzipped Folder, enter apktool, confirm whether the installation is successful
D:\My Documents\Desktop\apktool-install-windows-r04-brut1>apktool
Apktool v1.4.3 - a tool for reengineering Android apk files
Copyright 2010 Ryszard Wi?niewski <[email protected]>
Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)
Usage: apktool [-q|--quiet OR -v|--verbose] COMMAND [...]
COMMANDs are:
d[ecode] [OPTS] <file.apk> [<dir>]
Decode <file.apk> to <dir>.
OPTS:
-s, --no-src
Do not decode sources.
-r, --no-res
Do not decode resources.
-d, --debug
Decode in debug mode. Check project page for more info.
-f, --force
Force delete destination directory.
-t <tag>, --frame-tag <tag>
Try to use framework files tagged by <tag>.
--keep-broken-res
Use if there was an error and some resources were dropped, e.g.:
"Invalid config flags detected. Dropping resources", but you
want to decode them anyway, even with errors. You will have to
fix them manually before building.
b[uild] [OPTS] [<app_path>] [<out_file>]
Build an apk from already decoded application located in <app_path>.
It will automatically detect, whether files was changed and perform
needed steps only.
If you omit <app_path> then current directory will be used.
If you omit <out_file> then <app_path>/dist/<name_of_original.apk>
will be used.
OPTS:
-f, --force-all
Skip changes detection and build all files.
-d, --debug
Build in debug mode. Check project page for more info.
if|install-framework <framework.apk> [<tag>]
Install framework file to your system.
For additional info, see: http://code.google.com/p/android-apktool/
2, use
1). Unzip APK
D:\My Documents\Desktop\apktool-install-windows-r04-brut1>apktool d F:\document\APK\PushAd.apk F:\document\app
Source file: F:\document\APK\PushAd.apk
Unzip directory: F:\document\app
I: Baksmaling...
I: Loading resource table...
I: Loaded.
I: Loading resource table from file: D:\My Documents\apktool\framework\1.apk
I: Loaded.
I: Decoding file-resources...
I: Decoding values*/* XMLs...
I: Done.
I: Copying assets and libs...
2). Packing APK
D:\My Documents\Desktop\apktool-install-windows-r04-brut1>apktool b F:\document\app F:\\document\\app.apk
Source file: F:\document\app
Package directory: F:\document\app.apk
I: Checking whether sources has changed...
I: Smaling...
I: Checking whether resources has changed...
I: Building resources...
I: Building apk file...
Всем привет. Есть ли возможность восстановить исходники приложения из apk файла??
HDD приказал долго жить, унеся с собой исходники последнего приложения.
Уже пробовал dex2jar, и несколько онлайн декомпиляторов.
С онлайн декомпилятором все неоднозначно, затыкается на mainactivity ошибкой NullPointerExtention.
А dex2jar не дает ясности в декомпилированом коде.
-
Вопрос задан
-
1312 просмотров
Одного dex2jar мало
- Качаем dex2jar-0.0.9.8.zip (номер версии может изменяться) и извлекаем все файлы в желаемую папку, например D:\Decompile .
- Качаем Java Decompiler, я использовал JD-GUI и извлекаем файлы для удобства в ту же папку, куда и dex2jar.
- Качаем apktool и apktool-install-windows-r04-brut1.tar.bz2 и извлекаем файлы уже в системную папку. По умолчанию C:\Windows. (Не забываем скачать второй архив)
- Берем нужный apk файл и кладем в папку с dex2jar и Java Decompiler. В примере приведу декомпиляцию приложения Прикрепленный файлCalculator.zip ( 66,18 КБ )
- . (надо извлечь из архива).
- Открываем Командную строку (Обработчик команд Windows) в вышеупомянутой папке (В папке по пустому месте при зажатой кнопке Shift нажимаем правую кнопку мыши и выбираем Обработчик команд Windows).
- Вводим команду dex2jar Calculator.apk и если все прошло хорошо, в той же папке появится файл Calculator.apk.dex2jar.jar
- Запускаем jd-gui и открываем полученный на предыдущем шаге файл. (На Windows 7 открывать с правами администратора и с совместимостью Windows XP SP3)
- Выбираем пункт меню File-Save All Sources и сохраняем.
- Извлекаем полученный zip архив.
- Помещаем полученную папку в папку src (надо предварительно создать).(Что бы получилась примерно такая структура D:\Decompile\Calculator\src\com\android)
- Опять же в командной строке вводим команду apktool d Calculator.apk Calculator, где Calculator.apk-имя пакета, Calculator-папка для декомпиляции
- Если все хорошо, тогда в указанной папке будут исходники в двух форматах (java и smali), ресурсы и файлы AndroidManifest.xml, apktool.yml
- Все готово, исходники получены. Правда после декомпиляции в коде есть, можно сказать, ошибки, я заметил пока только что вместо true и false стоят 1 и 0 соответственно.
Взято с 4pda гуглится за пару секунд
Пригласить эксперта
-
Показать ещё
Загружается…
08 окт. 2023, в 23:50
5000 руб./за проект
08 окт. 2023, в 21:59
1000 руб./в час
08 окт. 2023, в 20:00
10000 руб./за проект
Минуточку внимания
Apktool — это инструмент, который позволяет декомпилировать и собирать приложения Android. Он особенно полезен для разработчиков и исследователей, которым нужно проанализировать или изменить код приложений. Установить Apktool на Windows довольно просто, но некоторым новичкам может потребоваться подробная инструкция.
Прежде чем начать установку, убедитесь, что на вашем компьютере установлена Java Development Kit (JDK). Apktool работает на Java, поэтому без JDK он не будет функционировать. Вы можете проверить наличие JDK, открыв командную строку и введя команду java -version.
Загрузите архив с Apktool с официального сайта разработчика. Обычно это файл с расширением .tar.bz2. После скачивания распакуйте архив в папку на вашем компьютере, например, C:\apktool. Вам потребуется доступ к этой папке для дальнейшей работы.
Теперь необходимо добавить путь к Apktool в переменную среды Windows PATH. Чтобы это сделать, откройте «Система» и перейдите в «Дополнительные параметры системы». Нажмите на кнопку «Переменные среды» и найдите переменную PATH в списке «Системные переменные». Нажмите на нее и нажмите «Изменить». Добавьте путь к папке с Apktool в конец значения переменной PATH и нажмите «ОК» для сохранения изменений.
Теперь Apktool полностью установлен на вашем компьютере. Вы можете проверить его работу, открыв командную строку и просто введя команду apktool. Если все прошло успешно, вы увидите список доступных опций Apktool. Готово! Теперь вы готовы использовать Apktool для анализа и изменения приложений Android.
Содержание
- Установка Apktool на Windows
- Загрузка архива r04 brut1 tar.bz2
- Распаковка архива
- Установка Java Development Kit (JDK)
- Установка Apktool
- Добавление Apktool в переменную среды PATH
- Проверка установки Apktool
Чтобы установить Apktool на Windows, выполните следующие шаги:
Шаг 1: Загрузите архив с последней версией Apktool с официального сайта разработчика.
Шаг 2: Распакуйте архив в любую удобную для вас директорию, например, «C:\Apktool\».
Шаг 3: Убедитесь, что на вашем компьютере установлена Java Development Kit (JDK). Если JDK не установлена, загрузите ее с официального сайта Oracle и выполните установку.
Шаг 4: Откройте командную строку Windows, перейдите в директорию, где распакован Apktool, например, «C:\Apktool\».
Шаг 5: Введите команду «java -jar apktool.jar» и нажмите Enter. Если все было сделано правильно, вы увидите информацию о текущей версии Apktool.
Шаг 6: Теперь Apktool готов к использованию на вашем компьютере. Вы можете декомпилировать APK файлы, выполнив команду «apktool d название_файла.apk» или перекомпилировать измененные файлы, используя команду «apktool b путь_к_директории».
Примечание: Имейте в виду, что манипуляции с Android приложениями могут нарушать авторские права и законы о защите программного обеспечения. Убедитесь, что вы имеете все необходимые разрешения и соблюдаете законодательство своей страны перед использованием Apktool.
Загрузка архива r04 brut1 tar.bz2
Для установки Apktool на операционную систему Windows необходимо загрузить архив r04 brut1 tar.bz2, который содержит все необходимые файлы.
Вы можете скачать архив r04 brut1 tar.bz2, перейдя по следующей ссылке:
ссылка_на_архив
После перехода по ссылке начнется загрузка архива r04 brut1 tar.bz2 на ваш компьютер. Пожалуйста, убедитесь, что у вас достаточно свободного места на диске, чтобы сохранить архив.
После завершения загрузки вы будете готовы к переходу к следующему шагу установки Apktool на Windows.
Распаковка архива
Чтобы установить Apktool на Windows, вам необходимо распаковать загруженный архив r04 brut1 tar.bz2. Для этого выполните следующие шаги:
1. Откройте проводник Windows и найдите загруженный архив r04 brut1 tar.bz2.
2. Щелкните правой кнопкой мыши на архиве и выберите опцию «Извлечь все».
3. Выберите папку, в которую хотите извлечь файлы Apktool, и нажмите кнопку «Извлечь».
4. После завершения извлечения файлы Apktool будут доступны в выбранной папке.
Теперь вы готовы к использованию Apktool для декомпиляции и редактирования файлов APK.
Установка Java Development Kit (JDK)
Для работы с Apktool требуется наличие Java Development Kit (JDK) на вашем компьютере. В этом разделе описано, как установить JDK на Windows.
- Перейдите на официальный сайт Oracle, по адресу https://www.oracle.com/java/technologies/javase-jdk11-downloads.html.
- На странице загрузки JDK выберите нужную версию для вашей операционной системы (Windows, 64-bit).
- Принимая лицензионное соглашение, скачайте установочный файл JDK.
- Запустите установочный файл и следуйте инструкциям мастера установки.
- После успешной установки JDK, убедитесь, что переменная среды JAVA_HOME установлена правильно.
- Откройте командную строку и выполните команду
java -version
. Если в результате выводится информация о версии JDK, значит установка прошла успешно.
После установки JDK вы можете переходить к установке Apktool.
Чтобы установить Apktool на Windows, следуйте этим шагам:
- Загрузите и установите Java Development Kit (JDK)
- Скачайте Apktool
- Распакуйте архив Apktool
- Установите и настройте PATH переменную
- Установите APK файлы
- Запустите Apktool через командную строку
Apktool требует наличие Java Development Kit (версии 7 или выше) для работы. Вы можете загрузить и установить JDK с официального веб-сайта Oracle.
Скачайте последнюю версию Apktool с официального репозитория на GitHub. Проверьте, загружаете ли вы правильную версию для вашей операционной системы (Windows).
Распакуйте скачанный архив Apktool в любую папку на вашем компьютере. Рекомендуется разместить папку Apktool в папке «Program Files» или «Program Files (x86)».
Чтобы иметь возможность запускать Apktool из любого места в командной строке, необходимо добавить путь к папке Apktool в переменную среды PATH. Чтобы это сделать, щелкните правой кнопкой мыши на значок «Компьютер» на рабочем столе, выберите «Свойства», затем «Дополнительные параметры системы» и вкладку «Дополнительно». Нажмите кнопку «Переменные среды» и найдите переменную PATH в разделе «Системные переменные». Редактируйте эту переменную, добавив путь к папке Apktool в конец значения, разделив его точкой с запятой от предыдущих путей.
Чтобы использовать Apktool, вам также потребуется установить APK-файлы, которые вы хотите декомпилировать или рекомпилировать. Скопируйте APK-файлы в любую папку на вашем компьютере.
Откройте командную строку и перейдите в папку Apktool, используя команду «cd». Затем введите команду «apktool» с аргументами, чтобы выполнить нужные операции с APK-файлами. Например, чтобы декомпилировать APK-файл, используйте команду «apktool d <имя_файла.apk>«.
Теперь у вас есть полная инструкция по установке и использованию Apktool на Windows. Вы можете начать работать с Android приложениями, декомпилировать и изменять их, чтобы адаптировать их под ваши нужды.
После установки Apktool вы можете добавить его в переменную среды PATH, чтобы легко использовать его из командной строки без необходимости указывать полный путь к исполняемому файлу Apktool каждый раз.
Чтобы добавить Apktool в переменную среды PATH, следуйте этим шагам:
- Откройте окно «Свойства системы», нажав правой кнопкой мыши на значок «Компьютер» на рабочем столе и выбрав «Свойства».
- На панели сбоку выберите пункт «Дополнительные параметры системы».
- На вкладке «Дополнительно» нажмите кнопку «Переменные среды».
- В секции «Системные переменные» найдите переменную среды «Path» и выберите ее, затем нажмите кнопку «Изменить».
- В открывшемся окне нажмите кнопку «Новый» и вставьте полный путь к папке, в которую вы установили Apktool.
- Нажмите «ОК», чтобы закрыть все окна.
Теперь вы можете использовать Apktool из командной строки, просто вызывая его имя без указания полного пути к исполняемому файлу.
Заметьте, что если у вас уже запущена командная оболочка, вам нужно будет закрыть ее и открыть новую, чтобы изменения переменной среды PATH вступили в силу.
После завершения установки Apktool необходимо проверить, правильно ли он установлен и готов к использованию. Для этого можно выполнить следующую команду в командной строке:
Если Apktool успешно установлен, вы увидите список доступных команд и их описания. Если же запуск команды приводит к ошибке «не является внутренней или внешней командой», это означает, что либо Apktool не был добавлен в системную переменную PATH, либо произошла ошибка при его установке.
В таком случае, необходимо повторить шаги установки Apktool, убедившись, что правильно указан путь к Java Development Kit (JDK) и версия Apktool соответствует вашей системе.
для проведения таких действий вам потребуется:
- dex2jar
- Java Decompiler
- ApkTool
Далее выполнить по следующим шагам:
- Качаем dex2jar и извлекаем в папку, например
С:\Decompile
. - Качаем Java Decompiler (например JD-GUI) и извлекаем файлы для удобства в ту же папку, куда и dex2jar.
- Качаем apktool и apktool-install-windows-r04-brut1.tar.bz2 и извлекаем файлы уже в системную папку. По умолчанию
C:\Windows
. (Не забыть скачать второй архив) - Берем нужный
apk файл
и кладем в папку с dex2jar и Java Decompiler. - Открываем Командную строку (Обработчик команд Windows) в вышеупомянутой папке (В папке по пустому месте при зажатой кнопке Shift нажимаем правую кнопку мыши и выбираем Обработчик команд Windows).
- Вводим команду
dex2jar <ваш apk файл>
и если все прошло хорошо, в той же папке появится файл<название вашего файла>.apk.dex2jar.jar
- Запускаем jd-gui и открываем полученный на предыдущем шаге файл. (На Windows 7 открывать с правами администратора и с совместимостью Windows XP SP3)
- Выбираем пункт меню
File-Save All Source
s и сохраняем. - Извлекаем полученный zip архив.
- Помещаем полученную папку в папку src (надо предварительно создать).(Что бы получилась примерно такая структура
С:\Decompile\<название вашего файла>\src\com\android
) - Опять же в командной строке вводим команду
apktool d <название вашего файла>.apk <название вашего файла>
, где<название вашего файла>.apk
-имя пакета, <название вашего файла>-папка для декомпиляции.
Если все хорошо, тогда в указанной папке будут исходники в двух форматах (java и smali), ресурсы и файлы AndroidManifest.xml
, apktool.yml
Таким образом будут получены исходники. Правда после декомпиляции в коде есть, можно сказать, ошибки,например вместо true и false стоят 1 и 0 соответственно.