Блог программиста
не только о программировании

Дружественные ресурсы:

IntSystem.org | Веб-разработка, все о ней

DevOps-заметки |

22.07.2015

Сборка декомпилированного приложения обратно в APK

how_to_build_decompiled_apk

Если Вы читали первую часть статьи о том, как декомпилировать приложения для Android, то Вы знаете, что остановился я на том, как собрать все файлы, которые получились при разборке приложения, обратно в APK.

Лирическое отступление

К сборке рекомендуется папка с файлами, полученная в результате декомпиляции с помощью apktool. Файлы кода, которые представляют из себя набор инструкций для виртуальной машины Dalvik, собираются обратно в архив классов без каких-либо проблем. В то время как преобразование из Dalvik в Java и обратно может привести к проблемам несовместимости. Как следствие, программа будет работать некорректно. Поэтому для успешной модификации программ, а не только ради исследования, Вам необходимо изучить инструкции Dalvik.

Сборка

Собрать такие файлы обратно в APK достаточно просто. Для этого необходимо запустить apktool с соответствующим флагом сборки и передать ему путь к папке с декомпилированным приложением внутри. Например, если у нас есть папка app, которая размещена в том же каталоге, что и apktool, то команда будет выглядеть так:

java -jar apktool.jar b app

После сборки готовый APK файл будет лежать в каталоге app/build. Далее необходимо подписать APK. Делается это для того, чтобы приложение работало на устройствах, где запрещена отладка. То есть, запуск неподписанных приложений на таких устройствах запрещен. Подробнее, о цифровых сертификатах и процедуре подписывания файлов можно прочитать здесь.

Подписать файл очень просто: для этого есть специальная утилита под названием signapk.  Ее необходимо запустить, передав в качестве аргументов сначала сертификаты, затем путь к приложению, и, наконец, путь для подписанного приложения (результат, куда сохранять). Выглядит это примерно так:

java -jar signapk.jar testkey.x509.pem testkey.pk8 *.apk  apk_signed.apk

Где же взять такой сертификат, спросите Вы? Сертификаты можно найти в Интернет. Либо сгенерировать самому. Подробную инструкцию о настройке и генерации всех необходимых файлов можно найти, например, здесь.

Заключение

Как видите, декомпиляция и сборка APK файлов достаточно простой процесс, который вдобавок можно автоматизировать, облегчая работу исследователю. Сама виртуальная машина Dalvik также проста в освоении и открыта, что, с одной стороны, снижает порог вхождения для разработчиков, с другой – является основной причиной столько большого процента пиратства именно на платформе Android. Отчасти поэтому разработчики, например, игр в основном не заинтересованы в выпуске интересных игр с сюжетом. Намного выгоднее при нынешнем отношении пользователей клепать поразительно похожие друг на друга фермы с донатом.  Поэтому, покупаем приложения, поддерживаем разработчиков и в итоге получаем интересный контент. А вот донатить совершенно не нужно!

Всем спасибо, до новых встреч.