Порой при разработке не понимаешь как реализовать определенную функцию, которую видел в чужом приложении, или просто изучить стороннее приложение охота, для этого существует декомпиляция приложений.
В данной статье я покажу как декомпилировать Андроид приложения из *.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 и открываем полученный на предыдущем шаге файл.
8) Выбираем пункт меню
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.